OSDN Git Service

*** empty log message ***
authorMichael Meskes <meskes@postgresql.org>
Fri, 28 Dec 2007 11:25:21 +0000 (11:25 +0000)
committerMichael Meskes <meskes@postgresql.org>
Fri, 28 Dec 2007 11:25:21 +0000 (11:25 +0000)
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/preproc/preproc.y
src/interfaces/ecpg/test/connect/test5.pgc
src/interfaces/ecpg/test/expected/connect-test5.c
src/interfaces/ecpg/test/expected/connect-test5.stderr

index ab3fcc4..815ba9d 100644 (file)
@@ -2272,6 +2272,13 @@ Tue, 06 Nov 2007 09:29:22 +0100
 Fri, 21 Dec 2007 15:30:39 +0100
 
        - Fixed a few minor glitches pointed out by splint.
+
+Fri, 28 Dec 2007 12:15:38 +0100
+
+       - Applied patch send by ITAGAKI Takahiro
+         <itagaki.takahiro@oss.ntt.co.jp> to fix bug in connect statement if
+         user name is a variable. 
+       - Also fixed test case that didn't detect this.
        - Set pgtypes library version to 3.0.
        - Set compat library version to 3.0.
        - Set ecpg library version to 6.0.
index 860b6a1..720f0d2 100644 (file)
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.356 2007/12/21 14:33:20 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.357 2007/12/28 11:25:21 meskes Exp $ */
 
 /* Copyright comment */
 %{
@@ -5114,7 +5114,7 @@ user_name: RoleId
                {
                        if ($1[0] == '\"')
                                $$ = $1;
-                       else if (strcmp($1, " ?") == 0) /* variable */
+                       else if ($1[1] == '$') /* variable */
                        {
                                enum ECPGttype type = argsinsert->variable->type->type;
 
index ae0199d..c747a5b 100644 (file)
@@ -15,6 +15,7 @@ main(void)
 exec sql begin declare section;
        char db[200];
        char id[200];
+       char *user="connectuser";
 exec sql end declare section;
 
        ECPGdebug(1, stderr);
@@ -49,7 +50,7 @@ exec sql end declare section;
        exec sql connect to "unix:postgresql://localhost/connectdb" as main user connectuser;
        exec sql disconnect main;
 
-       exec sql connect to 'unix:postgresql://localhost/connectdb' as main user connectuser;
+       exec sql connect to 'unix:postgresql://localhost/connectdb' as main user :user;
        exec sql disconnect main;
 
        exec sql connect to "unix:postgresql://200.46.204.71/connectdb" as main user connectuser;
index 129af81..c49f78e 100644 (file)
@@ -25,121 +25,125 @@ main(void)
 /* exec sql begin declare section */
         
         
+        
 
 #line 16 "test5.pgc"
  char  db [ 200 ]    ;
  
 #line 17 "test5.pgc"
  char  id [ 200 ]    ;
-/* exec sql end declare section */
 #line 18 "test5.pgc"
+ char * user   = "connectuser" ;
+/* exec sql end declare section */
+#line 19 "test5.pgc"
 
 
        ECPGdebug(1, stderr);
 
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 22 "test5.pgc"
+#line 23 "test5.pgc"
 
        { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "alter user connectuser  encrypted password 'connectpw'", ECPGt_EOIT, ECPGt_EORT);}
-#line 23 "test5.pgc"
+#line 24 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "CURRENT");}
-#line 24 "test5.pgc"
+#line 25 "test5.pgc"
   /* <-- "main" not specified */
 
        strcpy(db, "connectdb");
        strcpy(id, "main");
        { ECPGconnect(__LINE__, 0, db , NULL, NULL , id, 0); }
-#line 28 "test5.pgc"
+#line 29 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, id);}
-#line 29 "test5.pgc"
+#line 30 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 31 "test5.pgc"
+#line 32 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 32 "test5.pgc"
+#line 33 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 34 "test5.pgc"
+#line 35 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 35 "test5.pgc"
+#line 36 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 37 "test5.pgc"
+#line 38 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 38 "test5.pgc"
+#line 39 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "" , "connectdb" , NULL , "main", 0); }
-#line 40 "test5.pgc"
+#line 41 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 41 "test5.pgc"
+#line 42 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "connectdb" , "connectuser" , "connectdb" , "main", 0); }
-#line 43 "test5.pgc"
+#line 44 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 44 "test5.pgc"
+#line 45 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "unix:postgresql://localhost/connectdb" , "connectuser" , NULL , "main", 0); }
-#line 46 "test5.pgc"
+#line 47 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 47 "test5.pgc"
+#line 48 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "unix:postgresql://localhost/connectdb" , "connectuser" , NULL , "main", 0); }
-#line 49 "test5.pgc"
+#line 50 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 50 "test5.pgc"
+#line 51 "test5.pgc"
 
 
-       { ECPGconnect(__LINE__, 0, "unix:postgresql://localhost/connectdb" , "connectuser" , NULL , "main", 0); }
-#line 52 "test5.pgc"
+       { ECPGconnect(__LINE__, 0, "unix:postgresql://localhost/connectdb" , user , NULL , "main", 0); }
+#line 53 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 53 "test5.pgc"
+#line 54 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "unix:postgresql://200.46.204.71/connectdb" , "connectuser" , NULL , "main", 0); }
-#line 55 "test5.pgc"
+#line 56 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 56 "test5.pgc"
+#line 57 "test5.pgc"
 
 
        { ECPGconnect(__LINE__, 0, "unix:postgresql://localhost/" , "connectdb" , NULL , "main", 0); }
-#line 58 "test5.pgc"
+#line 59 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 59 "test5.pgc"
+#line 60 "test5.pgc"
 
 
        /* connect twice */
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 62 "test5.pgc"
+#line 63 "test5.pgc"
 
        { ECPGconnect(__LINE__, 0, "connectdb" , NULL, NULL , "main", 0); }
-#line 63 "test5.pgc"
+#line 64 "test5.pgc"
 
        { ECPGdisconnect(__LINE__, "main");}
-#line 64 "test5.pgc"
+#line 65 "test5.pgc"
 
 
        /* not connected */
        { ECPGdisconnect(__LINE__, "nonexistant");}
-#line 67 "test5.pgc"
+#line 68 "test5.pgc"
 
 
        return (0);
index ef56769..73742b3 100644 (file)
@@ -2,11 +2,11 @@
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ECPGconnect: opening database connectdb on <DEFAULT> port <DEFAULT> 
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute line 23: QUERY: alter user connectuser  encrypted password 'connectpw' with 0 parameter on connection main 
+[NO_PID]: ecpg_execute line 24: QUERY: alter user connectuser  encrypted password 'connectpw' with 0 parameter on connection main 
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute line 23: using PQexec
+[NO_PID]: ecpg_execute line 24: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute line 23 Ok: ALTER ROLE
+[NO_PID]: ecpg_execute line 24 Ok: ALTER ROLE
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_finish: Connection main closed.
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_finish: Connection main closed.
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGconnect: non-localhost access via sockets in line 55
+[NO_PID]: ECPGconnect: non-localhost access via sockets in line 56
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode -402 in line 55, 'Could not connect to database connectdb in line 55.'.
+[NO_PID]: raising sqlcode -402 in line 56, 'Could not connect to database connectdb in line 56.'.
 [NO_PID]: sqlca: code: -402, state: 08001
-[NO_PID]: raising sqlcode -220 in line 56, 'No such connection main in line 56.'.
+[NO_PID]: raising sqlcode -220 in line 57, 'No such connection main in line 57.'.
 [NO_PID]: sqlca: code: -220, state: 08003
 [NO_PID]: ECPGconnect: opening database  on <DEFAULT> port <DEFAULT> for user connectdb
 [NO_PID]: sqlca: code: 0, state: 00000
@@ -62,5 +62,5 @@
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_finish: Connection main closed.
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode -220 in line 67, 'No such connection nonexistant in line 67.'.
+[NO_PID]: raising sqlcode -220 in line 68, 'No such connection nonexistant in line 68.'.
 [NO_PID]: sqlca: code: -220, state: 08003