Search Postgresql Archives

Re: Convert a row to a nested JSON document containing all relations in PostgreSQL

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/8/19 5:22 AM, Ali Alizadeh wrote:

1) What side are you talking about, the parent of the record or the
children?

the children. only one level of depth is fine.

2) What procedural language are you using?

PL/pgSQL

As I understand, I need to loop over all columns in the "NEW" record, find out if the column is a foreign key using information_schema or pg_catalog, find the foreign key

Probably easier to look whether there are FK's on a table:

select * from information_schema.table_constraints where table_schema = 'some_schema' and table_name ='some_name' and constraint_type = 'FOREIGN KEY';

Then use that to look up the columns(to account for multi-column FK's):

select table_name, column_name from information_schema.constraint_column_usage where constraint_name = 'fk_name';

details like to which column on which table, then perform a dynamic SQL SELECT (because I presume table and column names would be strings, not SQL identifiers) over the target

Take a look at the format() example here:

https://www.postgresql.org/docs/11/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

https://www.postgresql.org/docs/11/functions-string.html#FUNCTIONS-STRING-FORMAT

table for the target record, convert the record to JSON and finally assign it to the appropriate key of the JSON object of top-level row. I'm yet trying to write the actual working code for this, for which I welcome any help or directions. And there might be simpler solutions to this problem, which I would like to know about.

Also see my question on SO: https://stackoverflow.com/questions/57830543/convert-a-row-to-a-nested-json-document-containing-all-relations-in-postgresql



--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux