Outputting Standard SQL

Started by Vik Fearingover 6 years ago3 messages
#1Vik Fearing
vik.fearing@2ndquadrant.com

This is a minor gripe in the grand scheme of things, but I'm a little
annoyed that we accept standard SQL but then don't spit it back out.

For example:

```

EXPLAIN (COSTS OFF) SELECT * FROM pg_am WHERE amname LIKE '%t%';

            QUERY PLAN            
-----------------------------------
 Seq Scan on pg_am
   Filter: (amname ~~ '%t%'::text)
(2 rows)

```

Why don't we convert that back to LIKE?  Sure, if someone actually typed
"~~" instead of "LIKE" then that wouldn't match what they wrote, but I
much prefer differing in that direction than the current one.

I am not advocating we attempt anything more complex such as "x ~>=~ 'y'
AND x ~<~ 'z'", just that we output SQL where feasible.  I would like to
fiddle with this if there is consensus that a decent patch would be
accepted.

--

Vik Fearing

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Vik Fearing (#1)
Re: Outputting Standard SQL

Vik Fearing <vik.fearing@2ndquadrant.com> writes:

EXPLAIN (COSTS OFF) SELECT * FROM pg_am WHERE amname LIKE '%t%';
            QUERY PLAN            
-----------------------------------
 Seq Scan on pg_am
   Filter: (amname ~~ '%t%'::text)
(2 rows)

Why don't we convert that back to LIKE?

Trying to do so would make our schema-qualification problems worse
not better. See

/messages/by-id/ffefc172-a487-aa87-a0e7-472bf29735c8@gmail.com

particularly

/messages/by-id/10492.1531515255@sss.pgh.pa.us

We really need to invent some weird nonstandard syntax for IS DISTINCT
FROM and related cases, in order to not have broken dump/reload scenarios.
I'd just as soon not do that for LIKE, when the operator syntax serves
well enough.

regards, tom lane

#3Vik Fearing
vik.fearing@2ndquadrant.com
In reply to: Tom Lane (#2)
Re: Outputting Standard SQL

On 25/08/2019 21:14, Tom Lane wrote:

Vik Fearing <vik.fearing@2ndquadrant.com> writes:

EXPLAIN (COSTS OFF) SELECT * FROM pg_am WHERE amname LIKE '%t%';
            QUERY PLAN            
-----------------------------------
 Seq Scan on pg_am
   Filter: (amname ~~ '%t%'::text)
(2 rows)
Why don't we convert that back to LIKE?

Trying to do so would make our schema-qualification problems worse
not better. See

/messages/by-id/ffefc172-a487-aa87-a0e7-472bf29735c8@gmail.com

particularly

/messages/by-id/10492.1531515255@sss.pgh.pa.us

Oh, okay, that makes sense.  Unfortunately.

We really need to invent some weird nonstandard syntax for IS DISTINCT
FROM and related cases, in order to not have broken dump/reload scenarios.
I'd just as soon not do that for LIKE, when the operator syntax serves
well enough.

LIKE was just an example among many others.

--

Vik Fearing