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.96) (envelope-from ) id 1w66jH-003xY9-2O for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 12:55:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w66jG-009iPu-0n for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 12:55:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w66jF-009iPm-2v for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 12:55:58 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w66jD-00000001Tkd-25i7 for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 12:55:58 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-b9358bc9c50so291526166b.1 for ; Fri, 27 Mar 2026 05:55:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774616155; cv=none; d=google.com; s=arc-20240605; b=Tlhiq/fVfpVuhyQXWFMdjM/o2thI+s3koFqhkv8lt8oYQdLQAQOgegD32fTwCDKSxZ LswEyChlnAp2U2m1SNlE8cFUeRxTzz3x+OCE9N3oDm+e6DV4aY7R8zTI7VlNipRi0hFy MhCNqelST6pxA+mqji+dxsicG85TixH+4C8u+PBQ/fUASMTl4noAPxuxQ/Dt0VfgHNUh HP0vaEntoNrlQU1nsju0FCYQTDaZJ63Cfll+HGyOoJ7geQxPKPg35wOYjVUNHcu5yBvZ EnxJ1NlUmQIqRhk8g8nUjU2bPQameiL+UljgQMW9czyxYmBwW0pTTgLL1HNHT39Hvhy2 60Fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=pN8a7XJqgFONrJo2VnTDgDjeNfmxPJqY9odM5zchhRA=; fh=qehWlRW4oKe6dziA21xKxSdbP/Hg5liQkh9G5WT6OWM=; b=CUKFkK4mUxoZxEA/C4ILjGw9ycEWH9YCSzb1b4rt+3GBJOt6PDu+v2Dl/KVSL3XLwE P0TWzTmxco23rlEiHqCdAgvfgPKB35lCeECTXsAGXyB96eFa3aOSfSlAtg3ZDneIjT+c JzQfJ++aod4GPdF4El7g7/09xlSwDeIZ/NHonPJue65LUyexRvuQOJWPJUd9QD7s4Iyj z6bz38vGHs6obqPXSrSO6YkFi+no0j23/6pcE9OVPYIR98gab5Fjsxz9imNdRqp2Co2e Ld7zjWKO4IcXRwXrbnKWInD/tssgz5Cz7wsp1bBKsTHyK1m3bj/ubs+827HmeF6vkYSt v/jQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774616155; x=1775220955; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=pN8a7XJqgFONrJo2VnTDgDjeNfmxPJqY9odM5zchhRA=; b=BEluqvmi294Vb1BSZKBwfEwlhnzJzPVDD3qq9WLNgQAiBEtPnjVjkqOIA6r5QBy+qf 6zSWH8xQ7jLBaBuN61A1GcUW8Fk9+6lq+MOfgxhYkF08WF9JHIiE24SdPlZO0ipLeriH /cnw9/a1bocOA5IgfzaG6wSajeh9uzE83e4kI4uzTpvJUNKHkdFpk25NmtQYA9CCs5fz XLPmLyMDiq3pRqNqfHgT862CximD7H8uVTkwVHPFh4LwW1NJDnQU8/xZqp0lKRNaDejM IWdreAEJo961QVcsPEaRd/+ahfAR0A5OVLv4SWrzNFm/jQk40QTV7XFwFCqzfw2LKyny bOMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774616155; x=1775220955; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pN8a7XJqgFONrJo2VnTDgDjeNfmxPJqY9odM5zchhRA=; b=oNhtqjkdDQ0i8LGoMD9qYxoHV0wqUzCBbmDxOpY+wadxHni5Uwz0wzUpRaCUKnKCD0 mcAKAf3rO9p7OZn+KhG5KyORprjCmcoy9rRhQYVN7ZecRtAIqLECeBJ7/KcmTXe797JB /qz9HWnDt7PCznPbhWUqipXXhWfAy/JtgTa49hiC6mYy+a7ioVJH2xQKteOf9+7ShzPT qqu19xRxGoC+5SMFqHH6mT+I6MRaCtGjVu5UzHVamohnPXSoL0oFvy4d87wL/N/k3xWw Juk2l4pixyCwMm40wSdQB40bDQFRZm8OpaWwNEBxfxF32KZCOzmTSbd17jAz6qQPGDwG h3Zw== X-Forwarded-Encrypted: i=1; AJvYcCVt29PqM+RpAHE6N16yVW3shaLpQPfEVrmEnnbMGTkvBZvvGIzwii92JgXROL0xDWPH2gnQbrcKaWodRdor@lists.postgresql.org X-Gm-Message-State: AOJu0Yz8lGPmyHRUHp23pLcYr4HZk8i4aRg2MntoHSFYDZT5cm37QyyL TQwdEUdnZhT7V0XuvVPw8GKVIBMXGxkhZCckEr4KKKRhYon+BOfS0fZBbVj6TssljZ1qBLZTuxe IJLja0puPvIFRXO3c2+F7otpwliv0gv4= X-Gm-Gg: ATEYQzz7JYk5YekTlEKAYVhdJYB7om/iatOrYbxlLQsOFvWEWi5r18E74FwpskchdvG Q5iD4zQeoFCjasNbeMK1niC9Yzx2AT+TokDt+UOlCSLFM6+jumTzIJt4+8ffSIn3G2jy9g2zxKt fsLysQKuIQWXoEN7AzH+ALcXesSGdwDKtiOGzj8Vhwe2kr/WIbjkyXqRPwTSGZW7+6yDN23knvW 51MsqobXYw9kl4b4vqRjLfDGtwo4CbFfQd0LcoiFHKnV6F1VGg7SgRbf+LQtsJIR/nOtv2u967x DYfkGWaCauTH/G6LfnHVnRav1a2K9jngOoeEWKM= X-Received: by 2002:a17:907:1b09:b0:b98:4551:e796 with SMTP id a640c23a62f3a-b9b50908059mr175542466b.30.1774616154787; Fri, 27 Mar 2026 05:55:54 -0700 (PDT) MIME-Version: 1.0 References: <1299934.1773938807@sss.pgh.pa.us> <0afba1ce-c946-4131-972d-191d9a1c097c@gmail.com> In-Reply-To: <0afba1ce-c946-4131-972d-191d9a1c097c@gmail.com> From: Robert Haas Date: Fri, 27 Mar 2026 08:55:41 -0400 X-Gm-Features: AQROBzDkAJ80NRHDwgUoTlyF33VhbIr5hqvv5P2tu0f_udqkFxqqnVzj4xgatkI Message-ID: Subject: Re: pg_plan_advice To: Alexander Lakhin Cc: Lukas Fittl , Tom Lane , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000851d89064e01053f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000851d89064e01053f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 27, 2026 at 2:00=E2=80=AFAM Alexander Lakhin wrote: > I could not reproduce recent failures from skink and morepork so far, but > I found that changing some GUCs can trigger similar warnings, e.g.: Thanks for the reports. > echo "geqo_threshold =3D 8" >/tmp/extra.config Failures here are expected. When planning is done via GEQO, not all join orders are explored, and pg_plan_advice can only constrain the join order from among the options considered by the planner. So, with GEQO + test_plan_advice, any given test is going to pass if the second round of planning considers the join order chosen by the first, and fail otherwise. This could be improved at some point in the future. For example, somebody could add hooks to GEQO so that pg_plan_advice can cause it to generate only candidates which are consistent with the supplied advice. In practice, I'm not sure this is going to be a good use of time. I suspect the energy would be better invested in improving GEQO or coming up with a more useful replacement. The gap that exists here doesn't mean that you can't use pg_plan_advice with GEQO; it only means that you are going to have a bad time using them together if you provide *complete* (or nearly-complete) plan advice. > echo "join_collapse_limit =3D 1000" >/tmp/extra.config The cause here actually seems to be GEQO once again. Raising the join_collapse_limit causes some join problems to get bigger, which has the result that they then use GEQO. At least for me, if I also bump up geqo_threshold, the failures go away. > and an assertion failure with: > enable_parallel_append =3D off > enable_partitionwise_aggregate =3D on > cpu_tuple_cost =3D 1000 > > TRAP: failed Assert("relids !=3D NULL"), File: "pgpa_scan.c", Line: 248, = PID: 1956762 Obviously, this one's a bug. I think the attached should fix it. --=20 Robert Haas EDB: http://www.enterprisedb.com --000000000000851d89064e01053f Content-Type: application/octet-stream; name="0001-pg_plan_advice-Avoid-assertion-failure-with-partitio.ncfbot" Content-Disposition: attachment; filename="0001-pg_plan_advice-Avoid-assertion-failure-with-partitio.ncfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn8wlqrx0 RnJvbSBjOTQxZDU3ZjdiNzNjNjQxNjQyMjlmMTczZDk3ZmYxZjQwOWZiYjYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSb2JlcnQgSGFhcyA8cmhhYXNAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMjcgTWFyIDIwMjYgMDg6NDM6MTQgLTA0MDAKU3ViamVjdDogW1BBVENIXSBwZ19w bGFuX2FkdmljZTogQXZvaWQgYXNzZXJ0aW9uIGZhaWx1cmUgd2l0aCBwYXJ0aXRpb253aXNlCiBh Z2dyZWdhdGUuCgpBbiBBcHBlbmQgbm9kZSB0aGF0IGlzIHBhcnQgb2YgYSBwYXJ0aXRpb253aXNl IGFnZ3JlZ2F0ZSBoYXMgbm8KYXBwcmVsaWRzLiBJZiBzdWNoIGEgbm9kZSB3YXMgZWxpZGVkLCB0 aGUgcHJldmlvdXMgY29kaW5nIHdvdWxkCmF0dGVtcHQgdG8gY2FsbCB1bmlxdWVfbm9uam9pbl9y dGVraW5kKCkgb24gYSBOVUxMIHBvaW50ZXIsIHdoaWNoCmxlYWRzIHRvIGFuIGFzc2VydGlvbiBm YWlsdXJlLiBJbnNlcnQgYSBOVUxMIGNoZWNrIHRvIHByZXZlbnQgdGhhdC4KClJlcG9ydGVkLWJ5 OiBBbGV4YW5kZXIgTGFraGluIDxleGNsdXNpb25AZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRw Oi8vcG9zdGdyLmVzL20vMGFmYmExY2UtYzk0Ni00MTMxLTk3MmQtMTkxZDlhMWMwOTdjQGdtYWls LmNvbQotLS0KIGNvbnRyaWIvcGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMgfCA3ICsrKysrKysK IDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3BsYW5fYWR2aWNlL3BncGFfc2Nhbi5jIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9wZ3BhX3Nj YW4uYwppbmRleCA1ZjIxMGYyYjcyNS4uYzc5ZGI2ZmIxYjMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cGdfcGxhbl9hZHZpY2UvcGdwYV9zY2FuLmMKKysrIGIvY29udHJpYi9wZ19wbGFuX2FkdmljZS9w Z3BhX3NjYW4uYwpAQCAtNjgsOCArNjgsMTUgQEAgcGdwYV9idWlsZF9zY2FuKHBncGFfcGxhbl93 YWxrZXJfY29udGV4dCAqd2Fsa2VyLCBQbGFuICpwbGFuLAogCQkgKiBOb3RlIHRoYXQgdGhlIFBH UEFfU0NBTl9QQVJUSVRJT05XSVNFIGNhc2UgYWxzbyBpbmNsdWRlcwogCQkgKiBwYXJ0aXRpb253 aXNlIGpvaW5zOyB0aGlzIG1vZHVsZSBjb25zaWRlcnMgdGhvc2UgdG8gYmUgYSBmb3JtIG9mCiAJ CSAqIHNjYW4sIHNpbmNlIHRoZXkgbGFjayBpbnRlcm5hbCBzdHJ1Y3R1cmUgdGhhdCB3ZSBjYW4g ZGVjb21wb3NlLgorCQkgKgorCQkgKiBOb3RlIGFsc28gdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBy ZWxpZHMgdG8gYmUgTlVMTCBoZXJlLAorCQkgKiBpZiB0aGUgZWxpZGVkIEFwcGVuZCBub2RlIGlz IHBhcnQgb2YgYSBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZS4KKwkJICogSW4gdGhhdCBjYXNlLCBp dCBkb2Vzbid0IG1hdHRlciB3aGF0IHN0cmF0ZWd5IHdlIGNob29zZSwgYnV0IHdlCisJCSAqIGRv IG5lZWQgdG8gYXZvaWQgY2FsbGluZyB1bmlxdWVfbm9uam9pbl9ydGVraW5kKCksIHdoaWNoIHdv dWxkIGZhaWwKKwkJICogYW4gYXNzZXJ0aW9uLgogCQkgKi8KIAkJaWYgKChub2RldHlwZSA9PSBU X0FwcGVuZCB8fCBub2RldHlwZSA9PSBUX01lcmdlQXBwZW5kKSAmJgorCQkJcmVsaWRzICE9IE5V TEwgJiYKIAkJCXVuaXF1ZV9ub25qb2luX3J0ZWtpbmQocmVsaWRzLAogCQkJCQkJCQkgICB3YWxr ZXItPnBzdG10LT5ydGFibGUpID09IFJURV9SRUxBVElPTikKIAkJCXN0cmF0ZWd5ID0gUEdQQV9T Q0FOX1BBUlRJVElPTldJU0U7Ci0tIAoyLjUxLjAKCg== --000000000000851d89064e01053f--