Re: ECPG Connect user :variable problem - Mailing list pgsql-interfaces

From Ryan Mooney
Subject Re: ECPG Connect user :variable problem
Date
Msg-id 20030820004307.GB10232@pcslink.com
Whole thread Raw
In response to ECPG Connect user :variable problem  (Ryan Mooney <ryan@pcslink.com>)
List pgsql-interfaces
All,

It appears that there is an extra space around a " ?" replaceable
string in the preprocessor that should have read "?".  Attached
(and inline) is a patch to /src/interfaces/ecpg/preproc/prepoc.y
that fixes the problem.

Also interestingly none of the test files for the ecpg processor
exercise the "USER :user USING :password" functionality (at least
that I could see - although I'm sortof blind so I might be missing
something :)

*** preproc.y    Tue Aug 19 17:06:44 2003
--- preproc.y.old    Tue Aug 19 17:06:35 2003
***************
*** 4174,4180 ****
          {
              if ($1[0] == '\"')
                  $$ = $1;
!             else if (strcmp($1, "?") == 0) /* variable */
              {
                  enum ECPGttype type = argsinsert->variable->type->type;

--- 4174,4180 ----
          {
              if ($1[0] == '\"')
                  $$ = $1;
!             else if (strcmp($1, " ?") == 0) /* variable */
              {
                  enum ECPGttype type = argsinsert->variable->type->type;


>
> Hello,
>
> I'm having a major problem using ecpg with 7.4beta1.  The problem is that
> if I try to pass in the username or password as :variables to the EXEC SQL
> CONNECT code they are essentially ignored (replaced by " ?").
>
> I've tried it on both redhat 7.2 IA64 and Redhat 9.0 IA32 (different enough
> that I don't think its the platform).   I also tried it with postgres 7.3.2
> which seemed to do the "right thing" and put the variables into the ECPGconnect
> call.
>
> Any thoughts?
>
> ------------------------------<snip "connect.pgc">---------------------------------
> int pg_connect(void)
> {
>
>     EXEC SQL BEGIN DECLARE SECTION;
>     char *target = "dbname";
>     char *connection_name = "myconnection";
>     char *uname = "myuser";
>     char *password = "mypassword";
>     EXEC SQL END DECLARE SECTION;
>
>     EXEC SQL CONNECT TO :target as :connection_name user :uname using :password;
>
> }
>
> ------------------------------<snip "connect.c">---------------------------------
>
> int pg_connect(void)
> {
>
>     /* exec sql begin declare section */
>
>
>
>
>
> #line 5 "connect.pgc"
>  char * target  = "dbname" ;
>
> #line 6 "connect.pgc"
>  char * connection_name  = "myconnection" ;
>
> #line 7 "connect.pgc"
>  char * uname  = "myuser" ;
>
> #line 8 "connect.pgc"
>  char * password  = "mypassword" ;
> /* exec sql end declare section */
> #line 9 "connect.pgc"
>
>
>     { ECPGconnect(__LINE__, 0, target , " ?" , " ?" , connection_name, 0); }
> #line 11 "connect.pgc"
>
>
> }
>
>
> --
> >-=-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-=-<
> Ryan Mooney                           ryan@pcslink.com
> <-=-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-=->
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
>                http://www.postgresql.org/docs/faqs/FAQ.html

--
>-=-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-<>-=-=-=-=-=-=-<
Ryan Mooney                           ryan@pcslink.com
<-=-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-><-=-=-=-=-=-=->

Attachment

pgsql-interfaces by date:

Previous
From: Ryan Mooney
Date:
Subject: ECPG Connect user :variable problem
Next
From: Ryan Mooney
Date:
Subject: Re: ECPG Connect user :variable problem