Re: [HACKERS] MERGE SQL Statement for PG11 - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: [HACKERS] MERGE SQL Statement for PG11
Date
Msg-id CANP8+jLQ81X0dR2k2i6eOwg4226GGoTbRS6_e=6oDdmBRXwXYQ@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] MERGE SQL Statement for PG11  (Andreas Seltenreich <seltenreich@gmx.de>)
Responses Re: [HACKERS] MERGE SQL Statement for PG11
List pgsql-hackers
On 3 February 2018 at 19:57, Andreas Seltenreich <seltenreich@gmx.de> wrote:

> as promised in Brussels, I taught sqlsmith about MERGE and did some
> testing with merge.v14.patch applied on master at 9aef173163.
>
> So far, it found a couple of failing assertions and a suspicous error
> message.  Details and Testcases against the regression database below.

Brilliant work, thank you.

It will likely take some time to work through these and the current
work items but will fix.

Do you have the DDL so we can recreate these easily?

Thanks

> regards,
> Andreas
>
> -- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "clauses.c", Line: 440)
> MERGE INTO public.brin_test as target_0
> USING pg_catalog.pg_database as ref_0
>   left join pg_catalog.pg_user_mapping as sample_0 tablesample system (2.3)
>   on (pg_catalog.mul_d_interval(
>         cast(pg_catalog.pi() as float8),
>         cast(case when sample_0.umoptions is not NULL then (select write_lag from pg_catalog.pg_stat_replication
limit1 offset 2)
 
>              else (select write_lag from pg_catalog.pg_stat_replication limit 1 offset 2)
>              end
>            as "interval")) = (select intervalcol from public.brintest limit 1 offset 2)
>         )
> ON target_0.a = ref_0.encoding
> WHEN NOT MATCHED AND cast(null as "timestamp") < cast(null as date)
>    THEN INSERT VALUES ( 62, 6)
> WHEN NOT MATCHED
>   AND false
>    THEN DO NOTHING;
>
> -- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_SubLink))", File: "prepunion.c", Line: 2246)
> MERGE INTO public.onek2 as target_0
> USING public.prt1 as ref_0
>   inner join public.tenk1 as ref_1
>   on ((select t from public.btree_tall_tbl limit 1 offset 63)
>          is not NULL)
> ON target_0.stringu1 = ref_1.stringu1
> WHEN NOT MATCHED THEN DO NOTHING;
>
> -- TRAP: FailedAssertion("!(!((((const Node*)(node))->type) == T_Query))", File: "var.c", Line: 248)
> MERGE INTO public.clstr_tst_inh as target_0
> USING pg_catalog.pg_statio_sys_tables as ref_0
>   left join public.rule_and_refint_t3 as ref_1
>   on (((ref_0.heap_blks_hit is not NULL)
>         or (((select f1 from public.path_tbl limit 1 offset 5)
>                >= (select thepath from public.shighway limit 1 offset 33)
>               )
>           or (cast(null as tsvector) <> cast(null as tsvector))))
>       and (ref_0.toast_blks_read is not NULL))
> ON target_0.d = ref_1.data
> WHEN NOT MATCHED
>   AND cast(null as int2) = pg_catalog.lastval()
>    THEN DO NOTHING;
>
> -- ERROR:  unrecognized node type: 114
> MERGE INTO public.found_test_tbl as target_0
> USING public.itest7a as ref_0
> ON target_0.a = ref_0.a
> WHEN NOT MATCHED
>    THEN INSERT VALUES ((select a from public.rtest_t3 limit 1 offset 6));



-- 
Simon Riggs                http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: [HACKERS] MERGE SQL Statement for PG11
Next
From: Simon Riggs
Date:
Subject: Re: [HACKERS] MERGE SQL Statement for PG11