]> granicus.if.org Git - postgresql/commitdiff
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:20 +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 5335ac136ad171b9cbdcb5f751a72cd812ecfdd8..96b20566771d9eeabce89d6118e2bacf10585675 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'