in reply to Re^3: RFC: Placeholder creation for SQL statements
in thread RFC: Placeholder creation for SQL statements

Hmm, indeed, it seems that DBD::Pg handles question marks in comments correctly now (3.16.0).

#!/usr/bin/perl use strict; use warnings; use DBI; use feature qw/say/; use Data::Dumper; my %c = ( dbname => 'test', host => 'localhost', port => 5432, user => 'test', pw => 'test', ); my $dbh = DBI->connect( "dbi:Pg:dbname=$c{dbname};host=$c{host};port=$c{port};", $c{user}, $c{pw} ); die $DBI::errstr if $DBI::err; my $sth = $dbh->prepare( 'select * from users /* is this a comment ? */ where id = /* ? or */ ?' ); my $rv = $sth->execute(1); my $res = $sth->fetchall_arrayref({}); print Dumper $DBI::errstr, $rv, $res;

I distinctly remember that this used to be a problem a few years ago.

But you're right about the operator-with-questionmark case: there is actually a "?" operator in postgres (to test for a key in a jsonb object), and you have to escape it if you want to use it in a query with DBD::Pg (which makes the SQL incompatible if you want to reuse it with e.g. raw psql or Go/sqlc).