I found a case where Numeric goes up to 50K and is not omitted. As per doc([1]), numeric can go up to 131072 digits , which means it can easily go beyond 16k limit. See the test attached. I think JSONTYPE_NUMERIC in datum_to_json_internal() also needs the fix. Attached the patch for potential fix. It applies on top of 0001-reentrant-json-fix.patch shared in previous email.
[1]: https://www.postgresql.org/docs/19/datatype-numeric.html thanks Shveta
Pub, Sub: CREATE TABLE conf_tab_numeric_big (a int PRIMARY KEY, b numeric); Pub: INSERT INTO conf_tab_numeric_big VALUES (1, 1e15000::numeric); Sub: DELETE FROM conf_tab_numeric_big WHERE a = 1; Pub: UPDATE conf_tab_numeric_big SET b = 1e50000::numeric WHERE a = 1; Seee the length: postgres=# SELECT length(remote_tuple->>'b') from pg_conflict.pg_conflict_log_16400 where relname = 'conf_tab_numeric_big'; length -------- 50001 It is not omitted and logged fully in CLT.
0001-json-numeric-fix.patch
Description: Binary data
