| 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 12:21:51 |
| Message-ID: | CAMbWs49DPHZgbH-7aqOQKhe3oR+LbEzk1je4z6RM6r_Dn4KrSQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On Thu, Apr 16, 2020 at 6:35 PM Richard Guo <guofenglinux(at)gmail(dot)com> wrote:
>
> 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)
>
>
Attached is what I'm thinking about this optimization. Does it make any
sense?
Thanks
Richard
| Attachment | Content-Type | Size |
|---|---|---|
| 0001-Fix-incremental-sort-crash.patch | application/octet-stream | 2.9 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ashutosh Bapat | 2020-04-16 12:35:57 | Re: [PATCH] Keeps tracking the uniqueness with UniqueKey |
| Previous Message | Robert Haas | 2020-04-16 12:20:34 | Re: Do we need to handle orphaned prepared transactions in the server? |