Re: BUG #19013: When creating a table with the "...LIKE...INCLUDING ALL" construct, REPLICA IDENTITY output is wrong

Поиск
Список
Период
Сортировка
On 8/6/2025 10:53 AM, David G. Johnston wrote:
On Wednesday, August 6, 2025, dbman@sqlexec.com <dbman@sqlexec.com> wrote:
On 8/5/2025 7:01 PM, David G. Johnston wrote:
On Tue, Aug 5, 2025 at 2:43 PM PG Bug reporting form <noreply@postgresql.org> wrote:
The following bug has been logged on the website:

Bug reference:      19013
Logged by:          Michael Vitale
Email address:      dbman@sqlexec.com
PostgreSQL version: 17.5
Operating system:   CentOS 8 Streams
Description:       


We don't document that the replica identity attribute of a table is something that can be copied.  'ALL' only covers those things which are documented as being copy-able.

David J.

I understand your logic about not everything is copy-able, just what is documented, but this is a different case.  I am not complaining that it is not copying the REPLICA IDENTITY, but rather that it is copying it in a WRONG WAY, changing its property from FULL to DEFAULT.  I think that is a reasonable complaint.  If you are going to attempt to copy it erroneously, then I think you should consider that a bug and fix it.  Otherwise, remove it and don't try to copy it.  Does that seem reasonable?


Reading the docs, if you just perform a create table (no like) you’ll find pg_class.relreplident is set to “d”.  That field is never null.  There is no concept of “remove it”.

David J.

Good point aboutg the default value for pg_class.relreplident is always "d", but maybe it should be "n" which indicates there is no REPLICA IDENTITY.  Otherwise the way it is now, whenever there is a REPLICA IDENTITY on a table and you use the CREATE LIKE construct, it will always overwrite the "f" and "i" values with "d", thereby actually changing the state of the REPLICA IDENTITY from FULL or INDEX to DEFAULT.  It just seems that something should be done to prevent a change to the REPLICA IDENTIY if one exists that is not DEFAULT in the source table.  Othewise you have an unintended DDL change consequence to this action.  Perhaps add a warning about this in the description for CREATE...LIKE in the docs, or even mention it in the section that describes REPLICA IDENTITY, or both.

Michael V

В списке pgsql-bugs по дате отправления: