From 2f86ab7733992bc49fd5f65f77ec1aca472621b2 Mon Sep 17 00:00:00 2001 From: Michael Meskes <meskes@postgresql.org> Date: Fri, 28 Dec 2007 11:25:21 +0000 Subject: [PATCH] *** empty log message *** --- src/interfaces/ecpg/ChangeLog | 7 ++ src/interfaces/ecpg/preproc/preproc.y | 4 +- src/interfaces/ecpg/test/connect/test5.pgc | 3 +- .../ecpg/test/expected/connect-test5.c | 66 ++++++++++--------- .../ecpg/test/expected/connect-test5.stderr | 14 ++-- 5 files changed, 53 insertions(+), 41 deletions(-) diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index ab3fcc440e2..815ba9d2a17 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 + <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. diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index 860b6a1cee1..720f0d2c1aa 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 ae0199daf6b..c747a5b4371 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 129af81b8d9..c49f78edaa7 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 ef5676974cb..73742b30f6c 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 -- GitLab