> > Let me give an example to demonstrate why I thought something is fishy here: > > > > Imagine rel has a (non-default) REPLICA IDENTITY with Oid=1111. > > Imagine the same rel has a PRIMARY KEY with Oid=2222. > >
Hmm, alright, this is syntactically possible, but not sure if any user
would do this. Still thanks for catching this.
And, you are right, if a user has created such a schema, IdxIsRelationIdentityOrPK()
would return the wrong result and we'd use sequential scan instead of index scan.
This would be a regression. I think we should change the function.
Here is the example:
DROP TABLE tab1; CREATE TABLE tab1 (a int NOT NULL); CREATE UNIQUE INDEX replica_unique ON tab1(a); ALTER TABLE tab1 REPLICA IDENTITY USING INDEX replica_unique;
ALTER TABLE tab1 ADD CONSTRAINT pkey PRIMARY KEY (a);