Re: BUG #19386: Unnecessary Sort in query plan for SELECT literal with ORDER BY

pierre.forstmann@gmail.com

From: Pierre Forstmann <pierre.forstmann@gmail.com>
To: 798604270@qq.com, pgsql-bugs@lists.postgresql.org, PG Bug reporting form <noreply@postgresql.org>
Date: 2026-01-21T11:42:50Z
Lists: pgsql-bugs
It's only a detail but I don't understand why '*' is added to some table 
name if there are no table inheritance ?

https://www.postgresql.org/docs/18/sql-select.html  says

/|table_name|/

    The name (optionally schema-qualified) of an existing table or view.
    If |ONLY| is specified before the table name, only that table is
    scanned. If |ONLY| is not specified, the table and all its
    descendant tables (if any) are scanned. Optionally, |*| can be
    specified after the table name to explicitly indicate that
    descendant tables are included.

Le 21/01/2026 à 12:11, Andrei Lepikhov a écrit :

> On 21/1/26 09:26, PG Bug reporting form wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference:      19386
>> Logged by:          Chi Zhang
>> Email address: 798604270@qq.com
>> PostgreSQL version: 18.1
>> Operating system:   ubuntu 24.04 with docker
>> Description:
>>
>> Hi,
>>
>> In the following test case, there are two equivalent queries. One is a
>> normal SELECT, and the other is a prepared SELECT. In the query plan 
>> of the
>> normal SELECT, there is an unnecessary Sort, which causes it to be 
>> slower
>> than the prepared SELECT. In general, the prepared SELECT should be 
>> slower
>> than the normal SELECT, as its query plan is suboptimal. So there maybe
>> potential opportunities for further optimization in the query 
>> planning of
>> normal SELECT statements.
>
> These queries aren't equivalent for me. The generic case may produce 
> errors if a parameter has an incompatible type. The 'simple query' 
> case validates constants and may simplify the clause, being sure no 
> logical errors happen during clause evaluation.
> Another question - should we do anything to optimise this quite narrow 
> (at least it seems so for me) case and stop simplification of the clause?
>