Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1ei3xG-0000pc-SV for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2018 19:58:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ei3xF-0005E3-9F for pgsql-hackers@arkaria.postgresql.org; Sat, 03 Feb 2018 19:58:29 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ei3xE-0005Dt-VG for pgsql-hackers@lists.postgresql.org; Sat, 03 Feb 2018 19:58:29 +0000 Received: from mout.gmx.net ([212.227.15.18]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1ei3x7-0002VW-Pe for pgsql-hackers@lists.postgresql.org; Sat, 03 Feb 2018 19:58:27 +0000 Received: from moll ([80.187.123.31]) by mail.gmx.com (mrgmx001 [212.227.17.184]) with ESMTPSA (Nemesis) id 0MXq3L-1eByUS00d5-00Wp0u; Sat, 03 Feb 2018 20:57:35 +0100 From: Andreas Seltenreich To: Simon Riggs Cc: Pavel Stehule , Chapman Flack , PostgreSQL Hackers Subject: Re: [HACKERS] MERGE SQL Statement for PG11 In-Reply-To: (Simon Riggs's message of "Tue, 30 Jan 2018 09:16:41 +0000") References: <20180129154457.GC11613@momjian.us> <495e24a5-d5bf-3ef2-ccdd-dd112c1c3a15@anastigmatix.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) X-PGP-Key: 4096R/803D1FFF 2015-02-04 Key fingerprint = 4758 81DC 8539 494D 29B4 692D F587 0601 803D 1FFF Date: Sat, 03 Feb 2018 20:57:24 +0100 Message-ID: <87k1vtdexn.fsf@ansel.ydns.eu> MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:yc0qzdzXrEMwiQgCkNaoGcsoZ8r/ejn6eSRObYku2QPL/93UVKy qk9joZzcmajqd/eD8MyonNNKbtFQD7P0x05/AC/JNEpvcNvQztRNKOCV9N6tgkpaBK6z9SV oBBikE5CV5lBZtUrJHCk8eFm7RlCqFq7ZTcgSFkyiVOjHRsD+84ZPUIYoLm96nrlIYDou4M mZ4AV5qTtGg6KeUzZzjPA== X-UI-Out-Filterresults: notjunk:1;V01:K0:Jc3dNJXPcAk=:iM3xR+BEJDYK8Qj2HiA35B oF/byJGPTzXPn4QDOfwJKKgkvIEu0Ip9C1eZcbR3EuomTrOBD/aWlnKqRh6RjQnaw1k0qNbBp oUli1BW+DA/x/PQgJDxuD0e1R5szD6dmm/JkEgm+5WQI1wGhOS/ZM76EcHyZWpiHSD1TK3F6/ L/KKOs+Mva+OTtYVEn37OjZppxo+j1oMKQdi1+u60AgbXbdWzT3cGGpWQuTHHUi2Kjqr0m7mz 9X+DdVJLzoKWxDyJ9cnGldcp53QUKF07asgT4aMseqvEQb5HRJMcHXtY+Yg0JlIvYK/6KuN5K Fjv0lwpAGO7Ov1VFpZmABiE/lWKRtBo46ktP4681q3ocBTya3JDeZfGfmvUam5gKiF3Logv0p t0sCosaTzRkpRxwgPhG22h/zwdUBv2VcPP3Dj1O6OBFa2+cuEQwtymZo8mTPuwGCURNeE2pmZ jmrF1eEE7iuCasAyPIKa3BlJ9XzJHiZtL6zgsgB1g6e0IGO9dW+a8DF+JyRX4vsTFzlV6K/W3 DsTGaNziILVtMh+P6s4FhxfSwEV9DJEfVNeooWSes0jhTQHHUJ4v4of1jOS1REggfP7zC9gM/ QXzg6QUuEmneMm4/gn2XZYmxnhw5hDF9un75OJalaCEiP8JOKBV3AuuFGkjrfmeufQnsSi3+E tDUMnoe8/woBUtSPdgWUU0TmgxnIpag7VXhP2QXmgDKhtSaM40IHdD7pdmndVy5YxQ0lTkuFj nm96xv9dm8yyU5JP3cK0V40gBoh1PBbtO5E5iFeNXp+wkI90odGvU6o1i5RL3iSSFalrl2gxJ CZFU6hZiKaUEULY5RnM4TRtTEyyHDCsYOzGKiyDntDM+RMRPfk= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk Hi, 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. 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 limit 1 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));