Re: BUG #16758: create temporary table with the same name loses defaults, indexes
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: marc@guidance.nl
Cc: pgsql-bugs@lists.postgresql.org
Date: 2020-12-01T15:58:56Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes: > In 12.5 (and later), in a clean, empty database (in this case the default > 12.5 docker image), when I execute the following lines: > create table xx (name text NOT NULL default '', PRIMARY KEY(name)); > create temporary table xx > (like xx including DEFAULTS including CONSTRAINTS including INDEXES); Hm, interesting. Without having dug into the code, I bet what is happening is that after creating pg_temp.xx, the LIKE code is looking to see "what indexes exist on table xx?", to which the answer is "none" because it finds pg_temp.xx. We need to nail down the schema in which xx is sought for that step. As a workaround, you could nail down the schema manually: create temporary table xx (like public.xx including DEFAULTS including CONSTRAINTS including INDEXES); The ordering of these operations got rearranged recently to fix some other bugs, so it doesn't surprise me if it used to work differently. regards, tom lane
Commits
-
Ensure that expandTableLikeClause() re-examines the same table.
- fb500296dfa6 9.5.25 landed
- f00c4400270f 9.6.21 landed
- d98e27dc6e41 10.16 landed
- 5f9b05ada1bb 12.6 landed
- 28bb8c496691 11.11 landed
- f7f83a55bf60 14.0 landed
- dffc82a5b9d4 13.2 landed