RE: doc: clarify the limitation for logical replication when REPILICA IDENTITY is FULL

Hayato Kuroda (Fujitsu) <kuroda.hayato@fujitsu.com>

From: "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>
To: 'Amit Kapila' <amit.kapila16@gmail.com>
Cc: Peter Smith <smithpb2250@gmail.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, Önder Kalacı <onderkalaci@gmail.com>
Date: 2023-07-11T07:00:03Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Doc: Update the logical replication restriction w.r.t Replica Identity Full.

Attachments

Dear Amit,

> Isn't the same true for the hash operator class family as well?

True. I didn't write it on purpose because I didn't know the operator which is 
operator class for BTree but not for Hash. But I agreed to clarify it.

> Can we
> slightly change the line as: "... the table includes an attribute
> whose datatype doesn't have an equality operator defined for it..".

Hmm, this suggestion is dubious for me. Regarding the point datatype, it has the
"same as" operator [1]. E.g., following SQL returns true.

```
postgres=# select point '(1, 1)' ~= point '(1, 1)';
 ?column? 
----------
 t
(1 row)
```

The reason why they cannot be supported by tuples_equal() is that lookup_type_cache()
only checks the operator classes for Btree and Hash. ~= does not defined as the class.

> Also, I find the proposed wording a bit odd, can we swap the sentence
> to say something like: "The UPDATE and DELETE operations cannot be
> replicated for the published tables that specifies REPLICA IDENTITY
> FULL but the table includes an attribute whose datatype doesn't have
> an equality operator defined for it on the subscriber."?

Swapped. But based on above reply, I did not completely use your suggestion.

[1]: https://www.postgresql.org/docs/devel/functions-geometry.html

Best Regards,
Hayato Kuroda
FUJITSU LIMITED