Attached 40th version of the patches.
I have added some documentation which has been simply copied from [1].
Also, I have split patches more correctly, and extracted patch #2 with common
SQL/JSON clauses, that are used by both constructors and query functions.
Patches #3 and #4 are necessary only for constructors (patch #5).
Patches #5 and #6 are almost independent on patch #1, which is needed only for
query functions.
So, patches #5, #6, #7 are independent now, but the code changes in them are
still conflicting. I can rebase #6 and #7 on top of #2, if it is necessary
for separate review/commit.
[1] https://www.postgresql.org/message-id/732208d3-56c3-25a4-8f08-3be1d54ad51b%40postgrespro.ru
--
Nikita Glukhov
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company