Re: Research on ?? operators

From: Matteo Beccati <php(at)beccati(dot)com>
To: Steve Atkins <steve(at)blighty(dot)com>, PG mailing List <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Research on ?? operators
Date: 2019-06-04 11:01:49
Message-ID: 9e74ec66-8fbf-a2b1-dbde-c6808ded6a94@beccati.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Steve,

On 04/06/2019 12:49, Steve Atkins wrote:
> Doubling "?" to "??" isn't an obvious, intuitive way to do that, at least
> to me. Maybe it would be to people coming from Java.

Funny enough, when I proposed \? on the pg mailing lists a few years ago
I was suggested ?? to match SQL escaping and Hibernate (going from memory).

> Perl's DBD::Pg deals with it in two ways. One is to allow escaping
> the ? with a backslash - so "?" is a placeholder, while "\?" is passed as
> "?" to the database. That's more consistent with other languages, and
> I think you're far less likely to ever see a backslash in a custom operator
> than "??".

That is true as well, but '\' being also the escape character for
strings would also lead to some WTF moments if one tried to escape the
backslash itself, e.g. '\\? === '\?'.

> The other is that it supports the postgresql standard placeholders - $1,
> $2 etc. - which avoid the issue and are more flexible. It also has a configuration
> option to completely ignore "?" in queries, so "$1" is a placeholder and "?"
> is passed through to the database.
>
> (Though I like the ":foo" or "@foo" style named placeholders best)

PDO does support both positional "?" and ":foo" named placeholders.
Adding an option to disable one would probably break much more code and
libraries than just a simple escape character.

Cheers
--
Matteo Beccati

Development & Consulting - http://www.beccati.com/

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Michael Lewis 2019-06-04 12:35:10 Re: Research on ?? operators
Previous Message Matteo Beccati 2019-06-04 10:55:27 Re: Research on ?? operators