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 1wV3RI-001eII-1d for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 08:28:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wV3RH-005WQv-0u for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Jun 2026 08:28:31 +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.96) (envelope-from ) id 1wV3RG-005WQn-2r for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 08:28:31 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wV3RF-000000012hv-0AEi for pgsql-hackers@lists.postgresql.org; Thu, 04 Jun 2026 08:28:30 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-5aa68cf03bfso391223e87.0 for ; Thu, 04 Jun 2026 01:28:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780561706; cv=none; d=google.com; s=arc-20240605; b=Yl1/r8krKtbnX2oUyZ4wIY4KLBLP1TwSpxYnziKSSbfi5cKzOTR8Z1HA5NW6rUFvQH RyGUaKuIM0S6pUqYE8klmJOzxZx0ENuxTvjz0DmV0zZhkmTznaYGHrIon9j/KHOUnhiS mfDRuKnvspJCJHllGe6XO4nknR7rCjjWMOv5YwBXT+VnPsLmWTlNO0ry2morWflr+5Sv UIsD55uU16VipGayzjdf5jd5/4hJgInEHoY+5gsLOocGc1Wko9uXI1QjL+9dxG4ulma1 3mIS94E3Zf59vgCr7YzKjz7rQjy3+OUz72PmZChoRzInaEWyo5BSArfqA45iAIZ364Zw VG4A== 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:mime-version:dkim-signature; bh=/WUXmQecXhwsIPUDuwMTrOXi7oBq+5AJNs2EUpiwhxY=; fh=NVAp1Unl/5a2JMe4fVHLBoAGomeCqIFI9oVu8h6a59M=; b=PAYMh64vRcUF9dfCtE7UfU22/ceXPFtGCv0WyDH/yADi7mdarkl/SRYwGooQIYWQop elG8bdruA2RaNPsaC/7DWnXgATX6ScOiW544L1IgKtXcT/7hFzted3j/zyIPV5vTWV/y nbVvE2FfD8wnOr9Egi9e5y6lyC9eg6TtuV3GwXExLGkNRYWgSoB3nOhghQ2SupmRwPRL kW8t9hPxQlgQcHB+HIhC2KhBvRrc5k+6V7SgWkLN/5O0bpDgkM327Rmb85SngYY0o1Ew /HYn7i5j01t3tKpPPDAuHF1RvbKv0pQTRVXkzcjNmOuArtUcBvlXzBG209z5KKZcnCwX AaVg==; 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=1780561706; x=1781166506; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=/WUXmQecXhwsIPUDuwMTrOXi7oBq+5AJNs2EUpiwhxY=; b=cTrUyA2Z0YMzHILVfqThmFlrnG4FIDyjN4TvuDXoebJqh0qmh6Ra60SHGEL6IZmrG8 BB6Xii8j1gyXYj1fArwrm+FjDY6+QcoznRk/xZLlXK0ko1S/bend3s2A2B/T2By7xxgk VSy9kh7Ikn5hQnaLVsdLCz2awSpnfEY5r+2Y6VpPqbT3mezqe15qGIpTX2EEe9Wio/sO c3ScLf1Wkb1dPB5cMx0GvKTaoxwlKDsZMPWVt5YbZkY3eGUZcWmO4KejACPieDksg+U0 KwkZbNhEZ7inLq87gGBuqKlcJElrjqT08Kp1a2dEF8A4XM3OCtd3VxG0YB4/N49pDp/m cgkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780561706; x=1781166506; h=cc:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/WUXmQecXhwsIPUDuwMTrOXi7oBq+5AJNs2EUpiwhxY=; b=NY8gzAybwmiOdkrzrsB+FUE07XZXvBW7heCEdJMCmW755qyDgnbbCMbtCx6USIF8lP f2+5ecS/3eKSHAWi2LPhig7pG88OUL8ZBoEYO6hmTSSEUvKwxyCHzxU0zTRXRjJ1npQy B8xK+ZRfcSGHe9aG2ZjTT1lU/MDwxuOBQYZenJeUResD490Tvd9vDOrRjUIZKOH5u5jU UczktAx8zDEXvdWarrwEAe8vyyLe0m8ZjoCYie/hi4VXNPmVhW2gkig+sZj7m4TlctSE EE6wInFB6FJk60jVudH68W3JTdMH4PH2wDoRRYOZ5pVoakJAWuCZxWvrnF67RTY+JcOA nSFg== X-Gm-Message-State: AOJu0YxF3U81JPCSytnm66dyC23ybF4V0f/2UopAoNqOV99U1S9nzibt lvXrMmLeXcYsVAsoNfxU7/cqMKHug0rhCPACvbUSuAIg0I1PsR7JwE9rKXNW/IfnYChh9EeG+ms dmaiI+iyYj64xFwclKPBt463ZEW95pPk0nh0rrW2qmXPcmhQ= X-Gm-Gg: Acq92OE5CYMXj8dd5xPrqSh/aCWhWZtZAatCxbmp+Lzw3JoE664WvE6efVSxERCKIsE cR8wqCeBCAsoyVa5wuqaqql8WVg/pKiU3snsqKGvOP9aRvWXdtrrZc7Q41tEWtWUkMHCPAPs0d4 uu1v9OkOmY7SR9PyROhmBMlFvUbNs3L8H2dBlAr2QVe+CGTmu2BHEiiZzwk9lPZ6eR94nqXlOOT 5d9vq1/i4s+MDLJm2SkR2FZPWJOwpPZl8x+r33yo58ebb6zRB2maPTYKxhTGr81ucFvvrlmyHUn iGi0Q8Gx0hooapfNyjKB/RPKtdU6vviQU9ncBM7b3Qd1RNIpqBha X-Received: by 2002:a05:6512:8050:b0:5aa:7788:d1d3 with SMTP id 2adb3069b0e04-5aa7c0ec3b3mr1615231e87.23.1780561706132; Thu, 04 Jun 2026 01:28:26 -0700 (PDT) MIME-Version: 1.0 From: Ewan Young Date: Thu, 4 Jun 2026 16:28:13 +0800 X-Gm-Features: AVVi8CfcTx0sgCi1Kry9WVGFBZmJdkvaCbxL2I4vXXy10QFlnO0IgDIqxOAdCj8 Message-ID: Subject: GRAPH_TABLE: lateral reference with label disjunction fails with "plan should not reference subplan's variable" To: PostgreSQL Hackers Cc: peter@eisentraut.org, ashutosh.bapat.oss@gmail.com Content-Type: multipart/mixed; boundary="000000000000fecd99065369534a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000fecd99065369534a Content-Type: text/plain; charset="UTF-8" Hi hackers, While testing with master I ran into an internal error in the SQL/PGQ code (commit 2f094e7ac69). A lateral reference into a GRAPH_TABLE clause whose graph pattern contains a label disjunction resolving to more than one element table fails at plan time: CREATE TABLE v1 (id int); CREATE TABLE v2 (id int); CREATE TABLE x (a int); CREATE PROPERTY GRAPH g VERTEX TABLES (v1 KEY (id) LABEL l1, v2 KEY (id) LABEL l2); SELECT 1 FROM x, GRAPH_TABLE (g MATCH (s IS l1|l2 WHERE s.id = x.a) COLUMNS (s.id)); ERROR: plan should not reference subplan's variable The same pattern with a single label works fine, as does a label disjunction without the lateral reference. Reproduces on any build of master and 19beta1; the equivalent hand-written query (LATERAL over a UNION ALL) plans fine. The cause is in rewriteGraphTable.c. replace_property_refs_mutator() increments varlevelsup of lateral references by one, assuming the path query will directly become the GRAPH_TABLE's subquery. That holds for a single path query, but when the disjunction produces several path queries, generate_union_from_pathqueries() wraps them in subquery RTEs of a new UNION query, one level deeper, and nothing compensates for that. The planner then attributes the parameters to the wrong query level, which finalize_plan() detects. The attached patch increments the level of outer references in each path query once more at the point where they are wrapped in the UNION query, using IncrementVarSublevelsUp(). With the fix, the query above returns the same results as the hand-written UNION ALL equivalent. make check passes with the patch applied. Regards, Ewan Young --000000000000fecd99065369534a Content-Type: application/octet-stream; name="v1-0001-Fix-lateral-references-in-GRAPH_TABLE-with-label-.patch" Content-Disposition: attachment; filename="v1-0001-Fix-lateral-references-in-GRAPH_TABLE-with-label-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mpz8e54g0 RnJvbSAxYzMwMjQzYTgzODVkNWJhM2M5Nzc3NjRkMGQ5ZWU0OTNkY2Q4MTg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFd2FuIFlvdW5nIDxrZGJhc2UuaGFja0BnbWFpbC5jb20+CkRh dGU6IEZyaSwgNSBKdW4gMjAyNiAwMDowNzoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjFdIEZp eCBsYXRlcmFsIHJlZmVyZW5jZXMgaW4gR1JBUEhfVEFCTEUgd2l0aCBsYWJlbAogZGlzanVuY3Rp b24KCldoZW4gYSBncmFwaCBwYXR0ZXJuJ3MgbGFiZWwgZGlzanVuY3Rpb24gcmVzb2x2ZXMgdG8g bW9yZSB0aGFuIG9uZQplbGVtZW50IHRhYmxlLCB0aGUgcmV3cml0dGVuIHBhdGggcXVlcmllcyBh cmUgY29tYmluZWQgd2l0aCBhIFVOSU9OCnF1ZXJ5LCB3aGljaCBwbGFjZXMgdGhlbSBvbmUgcXVl cnkgbGV2ZWwgZGVlcGVyIHRoYW4gdGhlIEdSQVBIX1RBQkxFJ3MKb3duIHN1YnF1ZXJ5IGxldmVs LiAgcmVwbGFjZV9wcm9wZXJ0eV9yZWZzKCkgaGFkIGFscmVhZHkgYWRqdXN0ZWQgdGhlCnZhcmxl dmVsc3VwIG9mIGxhdGVyYWwgcmVmZXJlbmNlcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBw YXRoCnF1ZXJ5IHdvdWxkIGl0c2VsZiBiZWNvbWUgdGhlIEdSQVBIX1RBQkxFIHN1YnF1ZXJ5LCBz byBzdWNoIHJlZmVyZW5jZXMKZW5kZWQgdXAgb2ZmIGJ5IG9uZSwgbWFraW5nIHRoZSBwbGFubmVy IGZhaWwgd2l0aAogIEVSUk9SOiAgcGxhbiBzaG91bGQgbm90IHJlZmVyZW5jZSBzdWJwbGFuJ3Mg dmFyaWFibGUKCkNvbXBlbnNhdGUgYnkgaW5jcmVtZW50aW5nIHRoZSBsZXZlbCBvZiBvdXRlciBy ZWZlcmVuY2VzIGluIGVhY2ggcGF0aApxdWVyeSBvbmNlIG1vcmUgd2hlbiB3cmFwcGluZyB0aGVt IGluIGEgVU5JT04gcXVlcnkuCgpBbHNvIGFkZCBhIHJlZ3Jlc3Npb24gdGVzdCB0aGF0IGFjdHVh bGx5IGV4ZWN1dGVzIHRoZSBjdXN0b21lcnNfdXMKdmlldywgd2hpY2ggd2FzIGNyZWF0ZWQgdG8g Y292ZXIgZXhhY3RseSB0aGlzIGNvbWJpbmF0aW9uIG9mIGxhdGVyYWwKcmVmZXJlbmNlcyBhbmQg bGFiZWwgZGlzanVuY3Rpb24gYnV0IHdhcyBwcmV2aW91c2x5IG9ubHkgZXhlcmNpc2VkIGJ5CnRo ZSBydWxldXRpbHMgZGVwYXJzaW5nIHRlc3QuCi0tLQogc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlR3JhcGhUYWJsZS5jICAgfCAxMCArKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL2dyYXBoX3RhYmxlLm91dCB8ICA5ICsrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv Z3JhcGhfdGFibGUuc3FsICAgICAgfCAgNCArKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2Vy dGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRh YmxlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVHcmFwaFRhYmxlLmMKaW5kZXggMzNk NGU4NjZkNzQuLjNkNmM4NWE1ZWE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jl d3JpdGVHcmFwaFRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlR3JhcGhU YWJsZS5jCkBAIC02MzgsNiArNjM4LDE2IEBAIGdlbmVyYXRlX3VuaW9uX2Zyb21fcGF0aHF1ZXJp ZXMoTGlzdCAqKnBhdGhxdWVyaWVzKQogCQlyZXR1cm4gc2FtcGxlUXVlcnk7CiAJfQogCisJLyoK KwkgKiBFYWNoIHBhdGggcXVlcnkgd2lsbCBiZSB3cmFwcGVkIGluIGEgc3VicXVlcnkgUlRFIG9m IHRoZSBVTklPTiBxdWVyeQorCSAqIGNvbnN0cnVjdGVkIGJlbG93LCB3aGljaCBwdXRzIGl0IG9u ZSBxdWVyeSBsZXZlbCBmdXJ0aGVyIGF3YXkgZnJvbSB0aGUKKwkgKiBxdWVyeSBjb250YWluaW5n IHRoZSBHUkFQSF9UQUJMRSBjbGF1c2UgdGhhbiByZXBsYWNlX3Byb3BlcnR5X3JlZnMoKQorCSAq IGFzc3VtZWQgd2hlbiBpdCBhZGp1c3RlZCB0aGUgbGV2ZWxzIG9mIGxhdGVyYWwgcmVmZXJlbmNl cy4gIENvbXBlbnNhdGUKKwkgKiBieSBpbmNyZW1lbnRpbmcgdmFybGV2ZWxzdXAgb2YgYW55IG91 dGVyLXF1ZXJ5IHJlZmVyZW5jZXMgb25jZSBtb3JlLgorCSAqLworCWZvcmVhY2hfbm9kZShRdWVy eSwgcGF0aHF1ZXJ5LCAqcGF0aHF1ZXJpZXMpCisJCUluY3JlbWVudFZhclN1YmxldmVsc1VwKChO b2RlICopIHBhdGhxdWVyeSwgMSwgMSk7CisKIAlzb3N0bXQgPSBjYXN0Tm9kZShTZXRPcGVyYXRp b25TdG10LAogCQkJCQkgIGdlbmVyYXRlX3NldG9wX2Zyb21fcGF0aHF1ZXJpZXMoKnBhdGhxdWVy aWVzLCAmcnRhYmxlLCBOVUxMKSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZ3JhcGhfdGFibGUub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ncmFwaF90 YWJsZS5vdXQKaW5kZXggY2M2ZDgwYWZkODIuLjkyNGYwY2ZmNmRiIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2dyYXBoX3RhYmxlLm91dApAQCAtOTQyLDYgKzk0MiwxNSBAQCBTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ2N1c3RvbWVyc191cyc6OnJlZ2NsYXNzKTsKICAgIE9SREVSIEJZIGcu Y3VzdG9tZXJfbmFtZSwgZy5wcm9kdWN0X25hbWU7CiAoMSByb3cpCiAKKy0tIGV4ZXJjaXNlcyBs YXRlcmFsIHJlZmVyZW5jZXMgY29tYmluZWQgd2l0aCBsYWJlbCBkaXNqdW5jdGlvbiwgd2hlcmUg dGhlCistLSByZXdyaXR0ZW4gcGF0aCBxdWVyaWVzIGFyZSB3cmFwcGVkIGluIGFuIGV4dHJhIFVO SU9OIHF1ZXJ5IGxldmVsCitTRUxFQ1QgKiBGUk9NIGN1c3RvbWVyc191czsKKyBjdXN0b21lcl9u YW1lIHwgcHJvZHVjdF9uYW1lIHwgYSAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0KKyBjdXN0b21lcjEgICAgIHwgcHJvZHVjdDEgICAgIHwgMQorIGN1c3RvbWVyMSAgICAgfCBw cm9kdWN0MiAgICAgfCAxCisoMiByb3dzKQorCiAtLSB0ZXN0IHZpZXcvZ3JhcGggbmVzdGluZwog Q1JFQVRFIFZJRVcgY3VzdG9tZXJzX3ZpZXcgQVMgU0VMRUNUIGN1c3RvbWVyX2lkLCAncmVkYWN0 ZWQnIHx8IGN1c3RvbWVyX2lkIEFTIG5hbWVfcmVkYWN0ZWQsIGFkZHJlc3MgRlJPTSBjdXN0b21l cnM7CiBTRUxFQ1QgKiBGUk9NIGN1c3RvbWVyczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2dyYXBoX3RhYmxlLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxl LnNxbAppbmRleCAwZTM4MWVjNzJiYy4uZjgyMDc1NzhkMzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2dyYXBoX3RhYmxlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9n cmFwaF90YWJsZS5zcWwKQEAgLTUzNiw2ICs1MzYsMTAgQEAgU0VMRUNUIGcuKiBGUk9NIHgxLAog ICAgICAgICAgICBPUkRFUiBCWSBjdXN0b21lcl9uYW1lLCBwcm9kdWN0X25hbWU7CiBTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ2N1c3RvbWVyc191cyc6OnJlZ2NsYXNzKTsKIAorLS0gZXhlcmNpc2Vz IGxhdGVyYWwgcmVmZXJlbmNlcyBjb21iaW5lZCB3aXRoIGxhYmVsIGRpc2p1bmN0aW9uLCB3aGVy ZSB0aGUKKy0tIHJld3JpdHRlbiBwYXRoIHF1ZXJpZXMgYXJlIHdyYXBwZWQgaW4gYW4gZXh0cmEg VU5JT04gcXVlcnkgbGV2ZWwKK1NFTEVDVCAqIEZST00gY3VzdG9tZXJzX3VzOworCiAtLSB0ZXN0 IHZpZXcvZ3JhcGggbmVzdGluZwogCiBDUkVBVEUgVklFVyBjdXN0b21lcnNfdmlldyBBUyBTRUxF Q1QgY3VzdG9tZXJfaWQsICdyZWRhY3RlZCcgfHwgY3VzdG9tZXJfaWQgQVMgbmFtZV9yZWRhY3Rl ZCwgYWRkcmVzcyBGUk9NIGN1c3RvbWVyczsKLS0gCjIuNDcuMwoK --000000000000fecd99065369534a--