Re: Research on ?? operators - Mailing list pgsql-general

From Steve Atkins
Subject Re: Research on ?? operators
Date
Msg-id D5829AF7-2F39-44E2-81C0-D2AE19BD7D02@blighty.com
Whole thread Raw
In response to Research on ?? operators  (Matteo Beccati <php@beccati.com>)
Responses Re: Research on ?? operators
List pgsql-general

> On Jun 4, 2019, at 10:00 AM, Matteo Beccati <php@beccati.com> wrote:
>
> Hello generals,
>
> I'm trying to resurrect a change to the PHP PDO driver to allow using
> the "?" json operator (and other operators containing a question mark),
> without it being interpreted as a placeholder for a query argument. In
> order to do so, like Hibernate, I went for the double "??" escaping:
>
> https://wiki.php.net/rfc/pdo_escape_placeholders
>
> One question that I'm supposed to answer now is: is there any known
> usage in the wild of some custom "??" operator that would require funny
> escaping like "????"?

I don't know of one today, but that doesn't mean there isn't or won't
be tomorrow.

> I've tried to search pgxn but couldn't find any match, so I thought it
> was worth to try and ask here.

Doubling "?" to "??" isn't an obvious, intuitive way to do that, at least
to me. Maybe it would be to people coming from Java.

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 "??".

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)

Cheers,
  Steve




pgsql-general by date:

Previous
From: Andrew Gierth
Date:
Subject: Re: Research on ?? operators
Next
From: Matteo Beccati
Date:
Subject: Re: Research on ?? operators