Changed ecpg parser to allow RETURNING clauses without attached C variables.
authorMichael Meskes <meskes@postgresql.org>
Mon, 14 Aug 2017 09:29:34 +0000 (11:29 +0200)
committerMichael Meskes <meskes@postgresql.org>
Wed, 16 Aug 2017 11:30:09 +0000 (13:30 +0200)
src/interfaces/ecpg/preproc/ecpg.trailer
src/interfaces/ecpg/preproc/ecpg.type
src/interfaces/ecpg/preproc/parse.pl

index 81945fce71c24fe7a2c3686f36578dbdcf8b56fd..da065d1290c8592b5e5c560ca22d7a916a36378b 100644 (file)
@@ -1873,9 +1873,8 @@ Iresult:        Iconst            { $$ = $1; }
                 ;
 
 execute_rest: /* EMPTY */  { $$ = EMPTY; }
-   | ecpg_using ecpg_into  { $$ = EMPTY; }
+   | ecpg_using opt_ecpg_into  { $$ = EMPTY; }
    | ecpg_into ecpg_using  { $$ = EMPTY; }
-   | ecpg_using            { $$ = EMPTY; }
    | ecpg_into             { $$ = EMPTY; }
    ;
 
@@ -1883,6 +1882,10 @@ ecpg_into: INTO into_list    { $$ = EMPTY; }
    | into_descriptor       { $$ = $1; }
    ;
 
+opt_ecpg_into: /* EMPTY */ { $$ = EMPTY; }
+   | ecpg_into     { $$ = $1; }
+   ;
+
 ecpg_fetch_into: ecpg_into { $$ = $1; }
    | using_descriptor
    {
index ac6aa000ac2d65f04dceb0bd56c90b9827a80a7e..9497b91b9db9380ddd03dc4c9c8b7cb4778530d4 100644 (file)
@@ -78,6 +78,7 @@
 %type <str> opt_bit_field
 %type <str> opt_connection_name
 %type <str> opt_database_name
+%type <str> opt_ecpg_into
 %type <str> opt_ecpg_fetch_into
 %type <str> opt_ecpg_using
 %type <str> opt_initializer
index 1f45419fdcfad855ad5d052825e4d489335c8c0b..91815d2e114f7206e8c177aba2eecec01122eaad 100644 (file)
@@ -94,7 +94,7 @@ my %replace_line = (
    'VariableShowStmtSHOWSESSIONAUTHORIZATION' =>
      'SHOW SESSION AUTHORIZATION ecpg_into',
    'returning_clauseRETURNINGtarget_list' =>
-     'RETURNING target_list ecpg_into',
+     'RETURNING target_list opt_ecpg_into',
    'ExecuteStmtEXECUTEnameexecute_param_clause' =>
      'EXECUTE prepared_name execute_param_clause execute_rest',
 'ExecuteStmtCREATEOptTempTABLEcreate_as_targetASEXECUTEnameexecute_param_clause'