Re: sqlsmith crash incremental sort

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>
Cc: James Coleman <jtc331(at)gmail(dot)com>, Justin Pryzby <pryzby(at)telsasoft(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: sqlsmith crash incremental sort
Date: 2020-04-16 10:35:20
Message-ID: CAMbWs49FSJXAH0LVHBF1nUASGSHLP0xSVr8o0CHExyR9wtEJ+g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, Apr 15, 2020 at 10:47 PM Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)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)

Thanks
Richard

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Zhang, Jie 2020-04-16 10:54:09 RE: [PATHC] Fix minor memory leak in pg_basebackup
Previous Message Erik Rijkers 2020-04-16 09:46:24 Re: PATCH: logical_work_mem and logical streaming of large in-progress transactions