Results on 16devel:
c0 | c3 | c6 | c7 |            c8
----+----+----+----+---------------------------
  0 |    |    |    | ALGERIA
  0 |    |    |    | ETHIOPIA
  0 |    |    |    | KENYA
  0 |    |    |    | MOROCCO
  0 |    |    |    | MOZAMBIQUE
  1 |    |    |    | ARGENTINA
  1 |    |    |    | BRAZIL
  1 |    |    |    | CANADA
  1 |    |    |    | PERU
  1 |    |    |    | UNITED STATES
  2 |    |    |    | CHINA
  2 |    |    |    | INDIA
  2 |    |    |    | INDONESIA
  2 |    |    |    | JAPAN
  2 |    |    |    | VIETNAM
  3 |    |    |    | FRANCE
  3 |    |    |    | GERMANY
  3 |    |    |    | ROMANIA
  3 |    |    |    | RUSSIA
  3 |    |    |    | UNITED KINGDOM
  4 |    |    |    | EGYPT
  4 |    |    |    | IRAN
  4 |    |    |    | IRAQ
  4 |    |    |    | JORDAN
  4 |    |    |    | SAUDI ARABIA
(25 rows)

Results on 15.2:
 c0 | c3 | c6 | c7 | c8
----+----+----+----+----
(0 rows)

tender wang <tndrw...@gmail.com> 于2023年3月6日周一 22:48写道:

> Results on 16devel:
> c0 | c3 | c6 | c7 |            c8
> ----+----+----+----+---------------------------
>   0 |    |    |    | ALGERIA
>   0 |    |    |    | ETHIOPIA
>   0 |    |    |    | KENYA
>   0 |    |    |    | MOROCCO
>   0 |    |    |    | MOZAMBIQUE
>   1 |    |    |    | ARGENTINA
>   1 |    |    |    | BRAZIL
>   1 |    |    |    | CANADA
>   1 |    |    |    | PERU
>   1 |    |    |    | UNITED STATES
>   2 |    |    |    | CHINA
>   2 |    |    |    | INDIA
>   2 |    |    |    | INDONESIA
>   2 |    |    |    | JAPAN
>   2 |    |    |    | VIETNAM
>   3 |    |    |    | FRANCE
>   3 |    |    |    | GERMANY
>   3 |    |    |    | ROMANIA
>   3 |    |    |    | RUSSIA
>   3 |    |    |    | UNITED KINGDOM
>   4 |    |    |    | EGYPT
>   4 |    |    |    | IRAN
>   4 |    |    |    | IRAQ
>   4 |    |    |    | JORDAN
>   4 |    |    |    | SAUDI ARABIA
> (25 rows)
>
> Results on 15.2:
>  c0 | c3 | c6 | c7 | c8
> ----+----+----+----+----
> (0 rows)
>
> Ashutosh Bapat <ashutosh.bapat....@gmail.com> 于2023年3月6日周一 22:14写道:
>
>>
>>
>> On Mon, Mar 6, 2023 at 3:00 PM tender wang <tndrw...@gmail.com> wrote:
>>
>>> tender wang <tndrw...@gmail.com>
>>> [image: 附件]14:51 (2小时前)
>>> 发送至 pgsql-hackers
>>> Hi hackers.
>>>    This query has different result on 16devel and 15.2.
>>> select
>>>     sample_3.n_regionkey as c0,
>>>     ref_7.l_linenumber as c3,
>>>     sample_4.l_quantity as c6,
>>>     sample_5.n_nationkey as c7,
>>>     sample_3.n_name as c8
>>>   from
>>>     public.nation as sample_3
>>>         left join public.lineitem as ref_5
>>>         on ((cast(null as text) ~>=~ cast(null as text))
>>>             or (ref_5.l_discount is NULL))
>>>       left join public.time_statistics as ref_6
>>>             inner join public.lineitem as ref_7
>>>             on (ref_7.l_returnflag = ref_7.l_linestatus)
>>>           right join public.lineitem as sample_4
>>>             left join public.nation as sample_5
>>>             on (cast(null as tsquery) = cast(null as tsquery))
>>>           on (cast(null as "time") <= cast(null as "time"))
>>>         right join public.customer as ref_8
>>>         on (sample_4.l_comment = ref_8.c_name )
>>>       on (ref_5.l_quantity = ref_7.l_quantity )
>>>   where (ref_7.l_suppkey is not NULL)
>>>     or ((case when cast(null as lseg) >= cast(null as lseg) then
>>> cast(null as inet) else cast(null as inet) end
>>>            && cast(null as inet))
>>>       or (pg_catalog.getdatabaseencoding() !~~ case when (cast(null as
>>> int2) <= cast(null as int8))
>>>             or (EXISTS (
>>>               select
>>>                   ref_9.ps_comment as c0,
>>>                   5 as c1,
>>>                   ref_8.c_address as c2,
>>>                   58 as c3,
>>>                   ref_8.c_acctbal as c4,
>>>                   ref_7.l_orderkey as c5,
>>>                   ref_7.l_shipmode as c6,
>>>                   ref_5.l_commitdate as c7,
>>>                   ref_8.c_custkey as c8,
>>>                   sample_3.n_nationkey as c9
>>>                 from
>>>                   public.partsupp as ref_9
>>>                 where cast(null as tsquery) @> cast(null as tsquery)
>>>                 order by c0, c1, c2, c3, c4, c5, c6, c7, c8, c9 limit
>>> 38)) then cast(null as text) else cast(null as text) end
>>>           ))
>>>   order by c0, c3, c6, c7, c8 limit 137;
>>>
>>> plan on 16devel:
>>>
>>>    QUERY PLAN
>>>
>>>
>>> ----------------------------------------------------------------------------------------------------------------------------------------------------------------
>>>  Limit
>>>    InitPlan 1 (returns $0)
>>>      ->  Result
>>>            One-Time Filter: false
>>>    ->  Sort
>>>          Sort Key: sample_3.n_regionkey, l_linenumber, l_quantity,
>>> n_nationkey, sample_3.n_name
>>>          ->  Nested Loop Left Join
>>>                ->  Seq Scan on nation sample_3
>>>                ->  Materialize
>>>                      ->  Nested Loop Left Join
>>>                            Join Filter: (ref_5.l_quantity = l_quantity)
>>>                            Filter: ((l_suppkey IS NOT NULL) OR
>>> (getdatabaseencoding() !~~ CASE WHEN ($0 OR NULL::boolean) THEN NULL::text
>>> ELSE NULL::text END))
>>>                            ->  Seq Scan on lineitem ref_5
>>>                                  Filter: (l_discount IS NULL)
>>>                            ->  Result
>>>                                  One-Time Filter: false
>>> (16 rows)
>>>
>>> plan on 15.2:
>>>
>>> QUERY PLAN
>>>
>>>
>>> ----------------------------------------------------------------------------------------------------------------------------------------------------
>>>  Limit
>>>    InitPlan 1 (returns $0)
>>>      ->  Result
>>>            One-Time Filter: false
>>>    ->  Sort
>>>          Sort Key: sample_3.n_regionkey, l_linenumber, l_quantity,
>>> n_nationkey, sample_3.n_name
>>>          ->  Nested Loop Left Join
>>>                Filter: ((l_suppkey IS NOT NULL) OR
>>> (getdatabaseencoding() !~~ CASE WHEN ($0 OR NULL::boolean) THEN NULL::text
>>> ELSE NULL::text END))
>>>                ->  Seq Scan on nation sample_3
>>>                ->  Materialize
>>>                      ->  Nested Loop Left Join
>>>                            Join Filter: (ref_5.l_quantity = l_quantity)
>>>                            ->  Seq Scan on lineitem ref_5
>>>                                  Filter: (l_discount IS NULL)
>>>                            ->  Result
>>>                                  One-Time Filter: false
>>> (16 rows)
>>>
>>>
>>> It looks wrong that the qual (e.g ((l_suppkey IS NOT NULL) OR
>>> (getdatabaseencoding() !~~ CASE WHEN ($0 OR NULL::boolean) THEN NULL::text
>>> ELSE NULL::text END))) is pushdown.
>>>
>>
>> Is that because $0 comes from a peer plan?
>>
>> An example of the difference in the results would help.
>>
>> --
>> Best Wishes,
>> Ashutosh Bapat
>>
>

Reply via email to