aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes <meskes@postgresql.org>2013-11-24 12:51:21 +0100
committerMichael Meskes <meskes@postgresql.org>2013-11-24 12:51:21 +0100
commit08d1b22b3be2305ad6b83ca275829ff26305f5d7 (patch)
treee95d512df479710b98f2b0df4b638fcbdfb38c71
parent8ac5e88f9fc54c480ed1419c0ce94f54653fe8c3 (diff)
downloadpostgresql-08d1b22b3be2305ad6b83ca275829ff26305f5d7.tar.gz
postgresql-08d1b22b3be2305ad6b83ca275829ff26305f5d7.zip
Allow C array definitions to use sizeof().
When parsing C variable definitions ecpg should allow sizeof() operators as array dimensions.
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.trailer5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index 342b7bc4d4c..6ef9f1ab9d8 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1865,6 +1865,11 @@ Iresult: Iconst { $$ = $1; }
| Iresult '%' Iresult { $$ = cat_str(3, $1, mm_strdup("%"), $3); }
| ecpg_sconst { $$ = $1; }
| ColId { $$ = $1; }
+ | ColId '(' ColId ')' { if (pg_strcasecmp($1, "sizeof") != 0)
+ mmerror(PARSE_ERROR, ET_ERROR, "operator not allowed in variable definition");
+ else
+ $$ = cat_str(4,$1, mm_strdup("("), $3, mm_strdup(")"));
+ }
;
execute_rest: /* EMPTY */ { $$ = EMPTY; }