Re: sqlsmith crash incremental sort - Mailing list pgsql-hackers

From Richard Guo
Subject Re: sqlsmith crash incremental sort
Date
Msg-id CAMbWs49DPHZgbH-7aqOQKhe3oR+LbEzk1je4z6RM6r_Dn4KrSQ@mail.gmail.com
Whole thread Raw
In response to Re: sqlsmith crash incremental sort  (Richard Guo <guofenglinux@gmail.com>)
Responses Re: sqlsmith crash incremental sort  (James Coleman <jtc331@gmail.com>)
List pgsql-hackers

On Thu, Apr 16, 2020 at 6:35 PM Richard Guo <guofenglinux@gmail.com> wrote:

On Wed, Apr 15, 2020 at 10:47 PM Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote:

Well, yeah. The problem is the Unique simply compares the columns in the
order it sees them, and it does not match the column order desired by
incremental sort. But we don't push down this information at all :-(

This is a nice optimization better to have. Since the 'Sort and Unique'
would unique-ify the result of a UNION by sorting on all columns, why
not we adjust the sort order trying to match parse->sortClause so that
we can avoid the final sort node?

Doing that we can transform plan from:

# explain (costs off) select * from foo union select * from foo order by 1,3;
                  QUERY PLAN
-----------------------------------------------
 Incremental Sort
   Sort Key: foo.a, foo.c
   Presorted Key: foo.a
   ->  Unique
         ->  Sort
               Sort Key: foo.a, foo.b, foo.c
               ->  Append
                     ->  Seq Scan on foo
                     ->  Seq Scan on foo foo_1
(9 rows)

To:

# explain (costs off) select * from foo union select * from foo order by 1,3;
               QUERY PLAN
-----------------------------------------
 Unique
   ->  Sort
         Sort Key: foo.a, foo.c, foo.b
         ->  Append
               ->  Seq Scan on foo
               ->  Seq Scan on foo foo_1
(6 rows)


Attached is what I'm thinking about this optimization. Does it make any
sense?

Thanks
Richard 
Attachment

pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: Do we need to handle orphaned prepared transactions in the server?
Next
From: Ashutosh Bapat
Date:
Subject: Re: [PATCH] Keeps tracking the uniqueness with UniqueKey