summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2007-12-28 11:25:21 +0000
committerMichael Meskes2007-12-28 11:25:21 +0000
commit2f86ab7733992bc49fd5f65f77ec1aca472621b2 (patch)
tree05ca626f26d82d97583d39b01bf89f1208fafb8a
parent79bb2638a73d2bffead0a89a44c53cfcdde9bb7b (diff)
*** empty log message ***
-rw-r--r--src/interfaces/ecpg/ChangeLog7
-rw-r--r--src/interfaces/ecpg/preproc/preproc.y4
-rw-r--r--src/interfaces/ecpg/test/connect/test5.pgc3
-rw-r--r--src/interfaces/ecpg/test/expected/connect-test5.c66
-rw-r--r--src/interfaces/ecpg/test/expected/connect-test5.stderr14
5 files changed, 53 insertions, 41 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index ab3fcc440e..815ba9d2a1 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -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
+ <[email protected]> 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.
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 860b6a1cee..720f0d2c1a 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -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;
diff --git a/src/interfaces/ecpg/test/connect/test5.pgc b/src/interfaces/ecpg/test/connect/test5.pgc
index ae0199daf6..c747a5b437 100644
--- a/src/interfaces/ecpg/test/connect/test5.pgc
+++ b/src/interfaces/ecpg/test/connect/test5.pgc
@@ -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;
diff --git a/src/interfaces/ecpg/test/expected/connect-test5.c b/src/interfaces/ecpg/test/expected/connect-test5.c
index 129af81b8d..c49f78edaa 100644
--- a/src/interfaces/ecpg/test/expected/connect-test5.c
+++ b/src/interfaces/ecpg/test/expected/connect-test5.c
@@ -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);
diff --git a/src/interfaces/ecpg/test/expected/connect-test5.stderr b/src/interfaces/ecpg/test/expected/connect-test5.stderr
index ef5676974c..73742b30f6 100644
--- a/src/interfaces/ecpg/test/expected/connect-test5.stderr
+++ b/src/interfaces/ecpg/test/expected/connect-test5.stderr
@@ -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
@@ -46,11 +46,11 @@
[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