| From: | Srinath Reddy Sadipiralla <srinath2133(at)gmail(dot)com> |
|---|---|
| To: | Julien Tachoires <julien(at)tachoires(dot)me>, dgrowleyml(at)gmail(dot)com |
| Cc: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Bug in CREATE TABLE .. LIKE .. INCLUDING STATISTICS? |
| Date: | 2026-04-16 07:44:39 |
| Message-ID: | CAFC+b6q4pF=BSdfOaagRcW74Nmnyz1UMgPcNKRJMFrAe7K3gHQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-bugs |
Hi Julien,
On Wed, Apr 15, 2026 at 7:47 PM Julien Tachoires <julien(at)tachoires(dot)me>
wrote:
> Hi,
>
> One of our customer is experiencing an issue when executing CREATE TABLE
> .. LIKE .. INCLUDING ALL; on 14, the following kind of error happens:
> ERROR: cache lookup failed for attribute X of relation ZZZZZZ
>
> It seems to come from generateClonedExtStatsStmt(): get_attname()
> appears to be called with an attribute number (attnum) that does not
> exist.
>
yeah, i was able to reproduce and also check the flow which is the same
as you mentioned.
>
> Please find attached 2 patches for the master branch, the first one adds
> a test that triggers the problem, the 2nd one is an attempt to fix it.
>
I think it's better to write a 4 column test, with this it covers both
cases of lookup either returning the wrong column name or errors
out when the attnum does not exist in the child, thoughts?
something like this ....
CREATE TABLE parent_like_stats (a int, b int, c int, d int);
ALTER TABLE parent_like_stats DROP COLUMN b;
CREATE STATISTICS s_parent ON a, c FROM parent_like_stats;
CREATE TABLE child_like_stats (LIKE parent_like_stats INCLUDING STATISTICS);
other than this patches LGTM.
--
Thanks,
Srinath Reddy Sadipiralla
EDB: https://www.enterprisedb.com/
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Masahiko Sawada | 2026-04-16 08:11:47 | Re: TRAP: failed Assert("offsets[i] > offsets[i - 1]"), File: "tidstore.c" |
| Previous Message | Andrei Lepikhov | 2026-04-16 07:13:41 | Re: TRAP: failed Assert("offsets[i] > offsets[i - 1]"), File: "tidstore.c" |