Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tjWPG-00AqCw-18 for pgsql-hackers@arkaria.postgresql.org; Sun, 16 Feb 2025 04:37:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tjWPD-006T3T-In for pgsql-hackers@arkaria.postgresql.org; Sun, 16 Feb 2025 04:37:23 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tjWPD-006T3L-6P for pgsql-hackers@lists.postgresql.org; Sun, 16 Feb 2025 04:37:23 +0000 Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tjWPB-00147M-1L for pgsql-hackers@postgresql.org; Sun, 16 Feb 2025 04:37:22 +0000 Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-5df07041c24so2530634a12.0 for ; Sat, 15 Feb 2025 20:37:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1739680639; x=1740285439; darn=postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=HENkgNpEbw3fhjvT8I/PwTBHLlm+gGceMfN0uYNj9tw=; b=JZtXdkXijEkzwVvVLJoYgOF238J9wJPfI/CmzP1lKjPA09FI1HJ5fh2jrvhhd+OMbS gf0FetFOwRUaZGIm0CD80QdrV+hDJ/koPsLCZoKkwYpW8J9sug1/2gb6fFUIiFH1lY3U HA/VZnOZAoffXJL9Y02t0IHXoJehmjk2TW5K2NgzqjxdCMjGGPVG+0ayvIoEpFq/34Dx 9jsjhFhFJYerpcLvRC5JXasHWmX+pTjmt4NyLL6B0l0MZRuOUgNpWjhkiWkSC4+ITAg/ /9vFN62mEl2TSbYyOS3lVOITbp+IW9UA/WnNtf9l3rbCd5eHOynbAK3kKPgjMD0dbm+m sZDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739680639; x=1740285439; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HENkgNpEbw3fhjvT8I/PwTBHLlm+gGceMfN0uYNj9tw=; b=EjzNWjrMD5vLVtkY4K4DsfobR+YKv+EGf32UqYuEWYX3OyNJvGvjOG7C0aheeK1cI9 lp0jibVoTpk/CbFlewFWm6GUnPTuCbQo149aP4a/ctfL1ykpHq9LkQVfxdn+hmLWwrqT wH7mxWar7zQpkksbVt2gnoNhDQ5HcilR7wJJn1MqTw9MykJhaGWx4eDcH/qNh+LIKQu8 9+u9G/plYSh570A0FcFu3RkNozTWaJfJaPUUc6g0R7VzninuT8GMuQr+VpNtDqGSPQEy pLSEWlYvqoeVjCfKINFUgNdSDThn6JzT0v44l8njI1J7i+eaSQzZQvJTXnbmxHm0mbTM R6iA== X-Forwarded-Encrypted: i=1; AJvYcCVXusxBoWjzKK5XIZutZMdNAZ857N6wRJ1YY01UNyqfo0A5GEwEenDmje1Ztya5eMwVCKu9errYPFINrg+K@postgresql.org X-Gm-Message-State: AOJu0Yyp/9edLyFGVZ8nmj1PH/6dprs9XaQ7tI6j0ttMHsrufvat9FaW k0GqQ3IX0Bnn7cU5aewZZ09QVt6QPX7U8hy3yugXHjUpZZaMxBjPjN8SgneE1azucWqbVrR+qf1 7W59R5r/kaM1D5jmseGNnmJjp5Gk= X-Gm-Gg: ASbGncteMKJVGz951QVpar6J2C9oWEIC3UnsX4/9RhAC3N3Sa/lGZn+/8Lpq5jnJ92F DRKi/SiDKFh7UFLTPsRES4/zspmzF/+I+7FkpFfCZSkADxf1eDJXyy14l/a6tKQaVEUE9kwGWvA == X-Google-Smtp-Source: AGHT+IHmzNFWM34UA7TLVXU5uRwfzy32AM77aC2R5sUUgEH9UQYKvdnl5riUZ41cttMKmSUxq4szjR0moIjTsMDjPbk= X-Received: by 2002:a17:906:c399:b0:ab7:bcc0:9050 with SMTP id a640c23a62f3a-abb70b2f1a6mr396805366b.27.1739680638914; Sat, 15 Feb 2025 20:37:18 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Junwang Zhao Date: Sun, 16 Feb 2025 12:37:07 +0800 X-Gm-Features: AWEUYZkktPHiugG-V6tTxF3f6Y-W26CPhgfMD8Fu5Txyb_rR3hhH1OixwsMJHzc Message-ID: Subject: Re: generic plans and "initial" pruning To: Amit Langote Cc: Alexander Lakhin , Tomas Vondra , Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi Amit, On Sat, Feb 15, 2025 at 3:51=E2=80=AFPM Amit Langote wrote: > > Hi Alexander, > > On Sat, Feb 15, 2025 at 6:00=E2=80=AFAM Alexander Lakhin wrote: > > > > Hello Amit, > > > > 06.02.2025 04:35, Amit Langote wrote: > > > > I plan to push 0001 tomorrow, barring any objections. > > > > > > Please try the following script: > > CREATE TABLE pt (a int, b int) PARTITION BY range (a); > > CREATE TABLE tp1 PARTITION OF pt FOR VALUES FROM (1) TO (2); > > CREATE TABLE tp2 PARTITION OF pt FOR VALUES FROM (2) TO (3); > > > > MERGE INTO pt > > USING (SELECT pg_backend_pid() AS pid) AS q JOIN tp1 ON (q.pid =3D tp1.= a) > > ON pt.a =3D tp1.a > > WHEN MATCHED THEN DELETE; > > > > which fails for me with segfault: > > Program terminated with signal SIGSEGV, Segmentation fault. > > #0 ExecInitMerge (mtstate=3D0x5a9b9fbccae0, estate=3D0x5a9b9fbcbe20) a= t nodeModifyTable.c:3680 > > 3680 relationDesc =3D RelationGetDescr(resultRelInfo= ->ri_RelationDesc); > > (gdb) bt > > #0 ExecInitMerge (mtstate=3D0x5a9b9fbccae0, estate=3D0x5a9b9fbcbe20) a= t nodeModifyTable.c:3680 > > #1 0x00005a9b67e6dfb5 in ExecInitModifyTable (node=3D0x5a9b9fbd5858, e= state=3D0x5a9b9fbcbe20, eflags=3D0) at nodeModifyTable.c:4906 > > #2 0x00005a9b67e273f7 in ExecInitNode (node=3D0x5a9b9fbd5858, estate= =3D0x5a9b9fbcbe20, eflags=3D0) at execProcnode.c:177 > > #3 0x00005a9b67e1b9d2 in InitPlan (queryDesc=3D0x5a9b9fbb9970, eflags= =3D0) at execMain.c:1092 > > #4 0x00005a9b67e1a524 in standard_ExecutorStart (queryDesc=3D0x5a9b9fb= b9970, eflags=3D0) at execMain.c:268 > > #5 0x00005a9b67e1a223 in ExecutorStart (queryDesc=3D0x5a9b9fbb9970, ef= lags=3D0) at execMain.c:142 > > ... > > > > starting from cbc127917. > > > > (I've discovered this anomaly with SQLsmith.) > > Thanks! It looks like I missed updating the MERGE-related lists in Modify= Table. > > I've attached a fix with a test added based on your example. I plan to > push this on Monday. > I applied the patch and the problem solved, I have a small question that should the following line ``` if (node->mergeActionLists =3D=3D NIL) ``` be changed to ``` if (mtstate->mt_mergeActionLists =3D=3D NIL) ``` ISTM that if we have pruned all the merge actions, there is no harm we omit setting mtstate->mt_merge_subcommands to 0. > -- > Thanks, Amit Langote --=20 Regards Junwang Zhao