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 1w2UPb-000KwY-0O for pgsql-bugs@arkaria.postgresql.org; Tue, 17 Mar 2026 13:24:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2UPa-001WH2-0L for pgsql-bugs@arkaria.postgresql.org; Tue, 17 Mar 2026 13:24:42 +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 1w2UPZ-001WGu-2j for pgsql-bugs@lists.postgresql.org; Tue, 17 Mar 2026 13:24:41 +0000 Received: from mail-qt1-x831.google.com ([2607:f8b0:4864:20::831]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2UPW-00000000BnW-2XgS for pgsql-bugs@lists.postgresql.org; Tue, 17 Mar 2026 13:24:40 +0000 Received: by mail-qt1-x831.google.com with SMTP id d75a77b69052e-506aa685d62so32847841cf.0 for ; Tue, 17 Mar 2026 06:24:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773753878; cv=none; d=google.com; s=arc-20240605; b=NSiFG7wF9boBpj1kYsRyaRinse1FDdbvwYv1DNy1h84uTzHOqlp7Tkdxqh30NRQAL4 Q7YT4nO+axhJoEeV/I6p0ZdulDMJU1I8FDdUexSTPaSB5hoDwKZdfHKznroBWIJCRJ5x fQAgQjf4U2aQWgeOQ0e2/gR8YFrBX4rLTAUA0N601tJUv7FP9/5RrT4sHAeLO3TgHZ17 cHD643mXwOHBxyssZe4LxUxf1QJITz6wbxs7/es28hHbKkLn5082oMWzzQyKPEvHyl/B aiekOjoPXhoinGvW72A69XPn+theNjDocfYKwSaP3xFX8Gx0BSKj0ntfgpWhdfkhw0XP 1XVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=bW7hF4/QUGeCX6Hdag/xS134AMHnvDPciuetGgUeZmo=; fh=UsRyOHdqHgtmTGzfcxyWM7Mg5MNMKcb+DaTTs1LoTgc=; b=DAw4uNN+vtqCXJwLJ1zHGerBgd9rM9x8BAwZQcWbGz+1ClFKjWu1JRC8Nj3eFIeSpo nomKLd8m3SgJY63ikHH85h0g69jE4mKTY1/gmMSZRMeCawHHZqnQl2KUxFkGC7dFAIPQ 7laJ16AuzNJmIAJUppLmCx97NLAfciOL2+Hx2jIMq+ZJNhd/UWaeG/LIs1MfQug7Daxg +U9gJnYOWRxiJNj6NWBxnQiirjukZC987jYWDOiytrXenHZexmWdyTT5U5GWz0d7lrlw fjaTRQThTB9IJckx4sH9XT2rx/iB0hz+YryTzEUw6G+bFoQOmkGEL7mHg94tPSqYi7IJ FGQg==; 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=20230601; t=1773753878; x=1774358678; darn=lists.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=bW7hF4/QUGeCX6Hdag/xS134AMHnvDPciuetGgUeZmo=; b=NqJ4PuIj7Z7L57cLky7vhwshKLp/8dNSCg/MKikvNPlYoEqDgP/i1jN50z2o3ToGSd HD+ZG3iNhRXPfdVUnd/enV6SYM9dbyIj5USAn3ki81ZQrpGriuz5I27GMEiKwf0vM/Cx KQF38HJRVQM7GLTWsEUwfdL1ns4CjmqeOaj/cVNxFtoSgAolnAm1Eeb5zg/unrPfNHNQ HTM8AtKpiwN1zdmyyN+fKHoZke4hXEGAeWk5osIF4icA0OKMVk2GU6MoUZZthIZ3W1gt 0DC6TF7rWkDd/14spVVLMSWfEacyepD0zDcSIUESHLZ2qse+tgSRWbMYdqXFYO8jJyqB PGSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773753878; x=1774358678; h=content-transfer-encoding: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=bW7hF4/QUGeCX6Hdag/xS134AMHnvDPciuetGgUeZmo=; b=fc+cbmZQuyZ2cEEoJS00h0aTBeL9JALErm22ggA3m0fxDWKJqXMiXP0+QZZEeK+BFY NAFWJrEQYdVxm36Tsp2cR/GOtpfczfodmgJ9nkjDHZnTWQD1DJOPQUTmmtC66jyinWQB VMO6LdZ/XNKtGAi0flJxEHtQF1XHuAQ9DaBGl778TzxjdLgMwvhadj0iXE1T64p/l6CD 0qm+le2yftXR6Acjlt564EcK+U6IXTd9C7Y9deiJ26TT0ZhNgk8Er1owToaWO7rIO4bE ZWwae2nxg5dlPofExGyNixSeuaSh6FA2YyZ/MR5jqq4eAI/zr1vJfClE1ZZNyq4Lq7Xg xwJw== X-Forwarded-Encrypted: i=1; AJvYcCWGfJbgCWRaofP504iOZLKThFLduB89uJN1W8znFLfrVJe+KBOPLX7EssBSf/FP+a72rcdD4y/FW435@lists.postgresql.org X-Gm-Message-State: AOJu0Yzima+nDzqXwg6gYtddw5Zjr6qkozWDY3rABa5YnxBViXujbkG9 2GmMF4Eky7Pk/NJOsiIHcTPAsLsM3S/LK2JIsSB2hGpSus1yb5+D9ndzsVuiZoM9ormiwXmDVIr m0/kiYR3S3prWZZnM7KJumyBoWj40TuI= X-Gm-Gg: ATEYQzwAiqI3Nm1bxFhC+V0m2HidKpeHTc7IoDovVWqpCjBN1zBMJdv7MIf5+1Ogr53 crq7oOfpjEo9Ai090WH6Y8MXNPZ4Z8FT8N/bGVy6Qyz0DXUnS/2X1Fq9uAZ7d2enLSMVUm77/Rs qcguzpDDHq1InFAem+xGwhfg0pT4B3ssu7iTbIEnS+esgNBAwZddLT4IREYLDNn0OIm0/7Deqfd RFdubKYOFHPZXihPJPZT39cOuGt987aBZXcTuDxoUSo87ZVriIz+xWR2D51nPZz0kyX0Qvcgjfe /8tlnZA4HdKIJGSO8b/DC+Cm1rb5wCVmSia84URjlRWJxMJBMPabdiH+s1sZtA0I7xgO6C4lz+h B5i7uzA== X-Received: by 2002:a05:622a:291:b0:509:4db5:88c4 with SMTP id d75a77b69052e-50957e2c164mr211965211cf.53.1773753878160; Tue, 17 Mar 2026 06:24:38 -0700 (PDT) MIME-Version: 1.0 References: <19435-3cc1a87f291129f1@postgresql.org> In-Reply-To: From: Kirill Reshke Date: Tue, 17 Mar 2026 18:24:26 +0500 X-Gm-Features: AaiRm52iXEC2ovMRJavg3vHDPtTC00mv-P9mdgMf7Vyj8HbTbvXdaJ5UrtSGnvE Message-ID: Subject: Re: BUG #19435: Error: "No relation entry for relid 2" Triggered by Complex Join with Self-Referencing Tables To: Tender Wang Cc: Alexander Korotkov , Fujii Masao , ammmkilo@163.com, pgsql-bugs@lists.postgresql.org 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 On Tue, 17 Mar 2026 at 18:20, Tender Wang wrote: > > Tender Wang =E4=BA=8E2026=E5=B9=B43=E6=9C=8817=E6=97= =A5=E5=91=A8=E4=BA=8C 20:59=E5=86=99=E9=81=93=EF=BC=9A > > > > The error was reported in rebuild_joinclause_attr_needed() when > > processing Relid =3D 1(rtindex =3D1), > > When processing its joininfo" ON tom1.col_bool IS NOT NULL", > > (gdb) pgprint rinfo->clause > > Var [varno=3D2 varattno=3D2 vartype=3D16 > > varreturningtype=3DVAR_RETURNING_DEFAULT varnosyn=3D2 varattnosyn=3D2] > > > > The varno=3D2, rtindex=3D2(tom1) has been removed. In > > add_vars_to_attr_needed(), to find the base_rel, but the > > root->simple_rel_array[2] is NULL. > > So the error is reporting. > > It seems the joininfo should be replaced by rtindex =3D 3, because the > > rtindex=3D2 would be removed. > > -- > (gdb) pgprint rinfo > RestrictInfo [is_pushed_down=3Dfalse can_join=3Dfalse pseudoconstant=3Dfa= lse > has_clone=3Dtrue is_clone=3Dfalse leakproof=3Dfalse > has_volatile=3DVOLATILITY_UNKNOWN security_level=3D0 > num_base_rels=3D1 rinfo_serial=3D4 eval_cost=3D{startup =3D= -1, > per_tuple =3D 0} norm_selec=3D-1 outer_selec=3D-1 outer_is_left=3Dfalse > hashjoinoperator=3D0 left_bucketsize=3D-1 > right_bucketsize=3D-1 left_mcvfreq=3D-1 right_mcvfreq=3D-1 > left_hasheqoperator=3D0 right_hasheqoperator=3D0] > [clause] Var [varno=3D2 varattno=3D2 vartype=3D16 > varreturningtype=3DVAR_RETURNING_DEFAULT varnosyn=3D2 varattnosyn=3D2] > [clause_relids] Bitmapset [3] > [required_relids] Bitmapset [3 1] > [incompatible_relids] Bitmapset [7 6] > [outer_relids] Bitmapset [6 5 3] > > The above is the joininfo of the rtindex=3D1(tom0), we can see that the > required_relids is changed to [3 1], but the clause is still > rtindex=3D2(varno=3D2). > I guess the current logic in remove_self_join_rel() may forget to > process the rinfo->clause. Yes, it looks like your analysis is valid. Will you share a patch for updating `clause` ? --=20 Best regards, Kirill Reshke