]> granicus.if.org Git - postgresql/commitdiff
Sync ECPG with WITH ORDINALITY changes
authorGreg Stark <stark@mit.edu>
Mon, 29 Jul 2013 22:43:44 +0000 (23:43 +0100)
committerGreg Stark <stark@mit.edu>
Mon, 29 Jul 2013 22:44:11 +0000 (23:44 +0100)
src/interfaces/ecpg/preproc/parse.pl
src/interfaces/ecpg/preproc/parser.c
src/interfaces/ecpg/test/expected/sql-parser.c
src/interfaces/ecpg/test/expected/sql-parser.stderr
src/interfaces/ecpg/test/sql/parser.pgc

index f4b51d679acf858064a642887b05cf632ecc2287..09310b330fec46a7ed44ecabdf8bedf336321be5 100644 (file)
@@ -43,6 +43,7 @@ my %replace_token = (
 # or in the block
 my %replace_string = (
        'WITH_TIME'    => 'with time',
+       'WITH_ORDINALITY' => 'with ordinality',
        'NULLS_FIRST'  => 'nulls first',
        'NULLS_LAST'   => 'nulls last',
        'TYPECAST'     => '::',
index 2ce9dd91c01020f2c439b1a6122c150b3c5e3d83..c18615e2b05bfaace4fc49652adf7bf312dffd73 100644 (file)
@@ -108,6 +108,9 @@ filtered_base_yylex(void)
                                case TIME:
                                        cur_token = WITH_TIME;
                                        break;
+                               case ORDINALITY:
+                                       cur_token = WITH_ORDINALITY;
+                                       break;
                                default:
                                        /* save the lookahead token for next time */
                                        lookahead_token = next_token;
index 876bbf34a154d76d1278b83a66b105098ccf3884..a4a6d864bfbfcc85d97760ed747b4abbc73e835c 100644 (file)
@@ -58,25 +58,7 @@ if (sqlca.sqlcode < 0) sqlprint();}
 #line 20 "parser.pgc"
 
 
-  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into T values ( 1 , null )", ECPGt_EOIT, ECPGt_EORT);
-#line 22 "parser.pgc"
-
-if (sqlca.sqlwarn[0] == 'W') sqlprint();
-#line 22 "parser.pgc"
-
-if (sqlca.sqlcode < 0) sqlprint();}
-#line 22 "parser.pgc"
-
-  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into T values ( 1 , 1 )", ECPGt_EOIT, ECPGt_EORT);
-#line 23 "parser.pgc"
-
-if (sqlca.sqlwarn[0] == 'W') sqlprint();
-#line 23 "parser.pgc"
-
-if (sqlca.sqlcode < 0) sqlprint();}
-#line 23 "parser.pgc"
-
-  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into T values ( 1 , 2 )", ECPGt_EOIT, ECPGt_EORT);
+  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into t select 1 , nullif ( y - 1 , 0 ) from generate_series ( 1 , 3 ) with ordinality as series ( x , y )", ECPGt_EOIT, ECPGt_EORT);
 #line 24 "parser.pgc"
 
 if (sqlca.sqlwarn[0] == 'W') sqlprint();
index 0959fa1e726e4518903d2bb03cb316254e75f1b5..af68c43db49c587b6b3182dd4bf9ba4ea070e2f4 100644 (file)
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 20: OK: CREATE TABLE
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 22: query: insert into T values ( 1 , null ); with 0 parameter(s) on connection regress1
+[NO_PID]: ecpg_execute on line 22: query: insert into t select 1 , nullif ( y - 1 , 0 ) from generate_series ( 1 , 3 ) with ordinality as series ( x , y ); with 0 parameter(s) on connection regress1
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 22: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 22: OK: INSERT 0 1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 23: query: insert into T values ( 1 , 1 ); with 0 parameter(s) on connection regress1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 23: using PQexec
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 23: OK: INSERT 0 1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 24: query: insert into T values ( 1 , 2 ); with 0 parameter(s) on connection regress1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 24: using PQexec
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 24: OK: INSERT 0 1
+[NO_PID]: ecpg_execute on line 22: OK: INSERT 0 3
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 26: query: select Item2 from T order by Item2 nulls last; with 0 parameter(s) on connection regress1
 [NO_PID]: sqlca: code: 0, state: 00000
index e7115b9472601a4f28f07c761ab4eb1dbaefff12..f569e43a1d536589250976cda5892eaf4f749ac3 100644 (file)
@@ -19,9 +19,9 @@ int main() {
 
   EXEC SQL CREATE TABLE T ( Item1 int, Item2 int );
 
-  EXEC SQL INSERT INTO T VALUES ( 1, null );
-  EXEC SQL INSERT INTO T VALUES ( 1, 1 );
-  EXEC SQL INSERT INTO T VALUES ( 1, 2 );
+  EXEC SQL INSERT INTO 
+           SELECT 1,nullif(y-1,0) 
+             FROM generate_series(1,3) WITH ORDINALITY AS series(x,y);
 
   EXEC SQL SELECT Item2 INTO :item:ind FROM T ORDER BY Item2 NULLS LAST;