Doc patch

[email protected] ("Daniel Verite")
Newsgroups perl.dbd.pg
Message-ID <b63eecf3-b712-43e5-b48b-45ba4f3c1977@mm>
The documentation contains a few examples of dollar-style placeholders 
in queries, but those queries are enclosed in double quotes, so the 
placeholders would be interpolated if actually used in this context.

Attached is a patch (against 2.0.0-RC) replacing the double quotes by 
single quotes where interpolation of $1,$2... would mess up the query 
text.

-- 
 Daniel
 PostgreSQL-powered mail user agent and storage: 
http://www.manitou-mail.org
dbdpg-doc-patch.txt (text/plain, 2.3 KB)
*** Pg.pm.orig	Thu Jan 17 15:03:15 2008
--- Pg.pm	Thu Jan 17 15:06:19 2008
***************
*** 2277,2295 ****
  
  Not legal:
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages > $2";
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $3";
  
  Legal:
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages > $1";
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $2";
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $2 AND reltuples > $1";
  
!   $SQL = "SELECT count(*) FROM pg_class WHERE relpages > $1 AND reltuples > $1";
  
  In the final statement above, DBI thinks there is only one placeholder, so this
  statement will replace both placeholders:
--- 2277,2295 ----
  
  Not legal:
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages > $2';
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $3';
  
  Legal:
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages > $1';
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $2';
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages BETWEEN $1 AND $2 AND reltuples > $1';
  
!   $SQL = 'SELECT count(*) FROM pg_class WHERE relpages > $1 AND reltuples > $1';
  
  In the final statement above, DBI thinks there is only one placeholder, so this
  statement will replace both placeholders:
***************
*** 2913,2922 ****
  
    ## Set the second placeholder's value and data type.
    ## We don't send a third argument, so the default "varchar" is used
!   $sth->bind_param("$2", "Zool");
  
    ## We realize that the wrong data type was set above, so we change it:
!   $sth->bind_param("$1", 234, { pg_type => SQL_INTEGER });
  
    ## We also got the wrong value, so we change that as well.
    ## Because the data type is sticky, we don't need to change it
--- 2913,2922 ----
  
    ## Set the second placeholder's value and data type.
    ## We don't send a third argument, so the default "varchar" is used
!   $sth->bind_param('$2', "Zool");
  
    ## We realize that the wrong data type was set above, so we change it:
!   $sth->bind_param('$1', 234, { pg_type => SQL_INTEGER });
  
    ## We also got the wrong value, so we change that as well.
    ## Because the data type is sticky, we don't need to change it
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.