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 1wBD0j-000qGJ-0T for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 14:39:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wBD0h-00CZxN-0k for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Apr 2026 14:39:04 +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 1wBD0g-00CZwh-30 for pgsql-hackers@lists.postgresql.org; Fri, 10 Apr 2026 14:39:03 +0000 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wBD0f-00000000LXb-2cs7 for pgsql-hackers@lists.postgresql.org; Fri, 10 Apr 2026 14:39:02 +0000 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-68beb855b70so564247eaf.3 for ; Fri, 10 Apr 2026 07:39:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775831941; cv=none; d=google.com; s=arc-20240605; b=F3zf//b3NJ8GsmYcqD8zD9g8u04eJnct9kn07tKP6v1pW4vPKg9nTIRoORDv+ThhHn MF7whGG0u0e2VOgYA8mubKZoXmDQcYlFvJYVW1EmmWzfyym+HANkcltKXILNKNFYQQko DySJ6TjLi23FcjX2wOr59fABJeHpLQf3tuDv5vRdXfZCuNCmHLQwS04N519pPU8+A4QE 4onN4fMgdWZQz6vu4EQ1GpxFchGjNiYOh+g/S+wFnIZQqI0lvVoq4Tovym4urISKtvBY V89GGqmcWJ7hGoyyE3JpJIm9CADCXZSLtcntSEZ3UjfKfdNbE5LGMnCsj5bJtVHyxh0i /qsw== 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=FHTWpRDcLdyAlBRnNjpEU1VPTZv6YROrCviTGHCVrkI=; fh=+7A3OcIQgkcXWxxtEQV3eFiOqlqSWu2o309Ji5mv+4w=; b=QyxsE5Pd+DcvLEeCJSr7VRTyaVgWj6/8Vgbdf8OFq+VNMKct8oAtcWPQEE7OsGHlUV NE6SpW2X0SYs7BQk8dIbVebUIeK9QB441+4OF5KPw3N5SeAEBB9r4gNY2AA0QMD03om3 T5O1Y6t799q6V+bs8pdqk3Y19UjShCqhkbqgGHclQUPyNmrCJuYu3Bp9HE6o47FsqZD8 x5EJz2OTqhLPwPyU1CqR+cF3AXgpxTwU/5B6d1HK9066ay+GxbZ+kSeXNI7qO1xlFbMA /GMgTQEFnGQd6CUWP+LTBcTaIobAjSA7v1+88gzcFtXeMkEUQFiqirEYsbnl0UoUvzlX KdQw==; 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=1775831941; x=1776436741; 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=FHTWpRDcLdyAlBRnNjpEU1VPTZv6YROrCviTGHCVrkI=; b=FSo2DviXfNzewt3z+sEzRwBT2aBviqPPdLbHZGV7S8FYwNorQGhR0Aw2XRexfvdzBa +igQzMjQisddvHKxn1u2BmMD4LEXkm5aUXWJeAFD21PreK7ZGkyCecxWiuUL1Lny6u+H J9QBtTOmOxbaIgtXPB9/n5yYZxzZwDl01t0hCuBTkVIhQ2I98s1rSt3YWMtXA09ITMtf YNLM7xAJjFhL2vDWgZzGgOWyxnv6yT/WHaEiIiAEWxYIsfWXjQR6qTXrtE3mKHWixfyB yDqrb/nVVwBBj/1+qwt00ZUJ1K4HSswkpTJ7/pk2NT9nx0scOuzOFvuLBGuJHXhBZbex nqiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775831941; x=1776436741; 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=FHTWpRDcLdyAlBRnNjpEU1VPTZv6YROrCviTGHCVrkI=; b=BQqGsx8Njwl4/yZIxdx4JYyDV5CubzLzI2M6Xf+EvvdAXkCK/3L3UKnB2hHnMbTrZM 9JGnZIS68vd2i2/GLk2d/0KnrmCac3w+VPsbGMJx0yCMD5bqMThmtNWPHZyJYsYtmrPg AHiJWWJ8esyKfzewukja9iUhbbArdC/2GsfahL+cS5t1P4NR0AuHjrftSaNFv7zQovuJ hdokWIHsdUWKielCGVuGjO7z4zq5zHkwelh/wArmq3Js1n+38hJYiqYsQOYIesRrDy5G qd/YHe1dekdd7iupFQ7bJC7sep0DeC4KgyQabbYM0R5OI3lTsPM5Jl1lTmOAogaXfysG FYyw== X-Forwarded-Encrypted: i=1; AJvYcCW8+W6aHiU9rttZ1B/i6mlwh6pHLJAdom5kdDbcxtuyKAcETj9h34QujtoL1/kYJUWI2anDzMEVp1RxdvWV@lists.postgresql.org X-Gm-Message-State: AOJu0YxB9F+RfpUg6J62ktHIeo7LeqPWdIqv2aYpQzBdwciNt5qIGeWG PxLQLcaUdim5XRQkiNTpNMEia4qCLhOt1pEOfY3oG/r0Mz9hL+5zKSezl32SFJXsnXE27vPBxFm sQXPGsvhGdyl3rBFM+JAbmgYgd57j5aw= X-Gm-Gg: AeBDietRoY7J0bDYQPtm62EsG/mXRrMKNgRIc1zYKt/grKEaPbU4plxaiX6vwIDlg5s LRE0OUdUGxjIUnzGnmEnlrotWYSWOh3/72Onik0AtkXVg8Gzhto3tkHi+Fbtn3gwHIjpNudr9lO AJRGki1XB/PuOqA3NFU1Eq6Kzs+SziV8uV8wksMeigEYPIQyzjYOVkwWTAsIY/fgO0jzufmI4uq XwlSUZKdjI29KD92o4FZcvuXad77pFWvBlFx0kpQqdZHY7P1zu3u7UssdzdaajI6s8bMP18O8AW byOHV95ykQ== X-Received: by 2002:a05:6820:7502:b0:67c:27a7:8c45 with SMTP id 006d021491bc7-68be8be06cdmr1117945eaf.57.1775831941443; Fri, 10 Apr 2026 07:39:01 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Guo Date: Fri, 10 Apr 2026 23:38:50 +0900 X-Gm-Features: AQROBzCcsdtQLdpozDkyoV_6UkJCaMivAbi6g2to5RNlLhyT4eTcFg-JXub0Kt4 Message-ID: Subject: Re: pg17: XX000: no relation entry for relid 0 To: Tender Wang Cc: Justin Pryzby , pgsql-hackers@lists.postgresql.org, Paul Jungwirth , 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 On Fri, Apr 10, 2026 at 9:49=E2=80=AFPM Tender Wang wr= ote: > Justin Pryzby =E4=BA=8E2026=E5=B9=B44=E6=9C=8810= =E6=97=A5=E5=91=A8=E4=BA=94 18:54=E5=86=99=E9=81=93=EF=BC=9A > > CREATE VIEW x AS SELECT NULL::int[] > > UNION ALL SELECT NULL::int[] > > UNION ALL SELECT ARRAY[NULL::bigint]; > > > > SELECT FROM x; > > ERROR: XX000: no relation entry for relid 0 Nice catch. It seems that we need at least three branches to reproduce this, so that there's a nested UNION ALL whose output type doesn't match the parent's expected type. At the outer branch maybe we can use NULL::bigint[] instead to be a little simpler. SELECT NULL::int[] UNION ALL SELECT NULL::int[] UNION ALL SELECT NULL::bigi= nt[]; ERROR: no relation entry for relid 0 > I didn't think too much at now, a quick fix as below: > diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/sel= funcs.c > index 4160d2d6e24..ff93fc3ac8a 100644 > --- a/src/backend/utils/adt/selfuncs.c > +++ b/src/backend/utils/adt/selfuncs.c > @@ -2265,6 +2265,9 @@ estimate_array_length(PlannerInfo *root, Node *arra= yexpr) > AttStatsSlot sslot; > double nelem =3D 0; > > + if (IsA(arrayexpr, Var) && ((Var *) arrayexpr)->varno =3D= =3D 0) > + return 10; > + > examine_variable(root, arrayexpr, 0, &vardata); > if (HeapTupleIsValid(vardata.statsTuple)) > { > > Any thoughts? This looks like the right fix to me. We can use some comment here. - Richard