reorganize query to generate table from json based on new layout of schema
This commit is contained in:
parent
87407e36fc
commit
90fc1370ff
@ -4,25 +4,26 @@ AS
|
|||||||
$f$
|
$f$
|
||||||
DECLARE
|
DECLARE
|
||||||
--_schema text;
|
--_schema text;
|
||||||
_path text[];
|
|
||||||
--_srce text;
|
--_srce text;
|
||||||
_sql text;
|
_sql text;
|
||||||
BEGIN
|
BEGIN
|
||||||
--_schema:= 'default';
|
--_schema:= 'default';
|
||||||
_path:= ARRAY['schemas',_schema]::text[];
|
|
||||||
--_srce:= 'dcard';
|
--_srce:= 'dcard';
|
||||||
SELECT
|
SELECT
|
||||||
'DROP VIEW IF EXISTS tpsv.'||_srce||'_'||_path[2]||'; CREATE VIEW tpsv.'||_srce||'_'||_path[2]||' AS SELECT id, logid, allj, '||string_agg('(allj#>>'''||r.PATH::text||''')::'||r.type||' AS "'||r.column_name||'"',', ')||' FROM tps.trans WHERE srce = '''||_srce||''';'
|
'DROP VIEW IF EXISTS tpsv.'||s.srce||'_'||(list.e->>'name')||'; CREATE VIEW tpsv.'||s.srce||'_'||(list.e->>'name')||' AS SELECT id, logid, allj, '||string_agg('(allj#>>'''||rec.PATH::text||''')::'||rec.type||' AS "'||rec.column_name||'"',', ')||' FROM tps.trans WHERE srce = '''||s.srce||''';'
|
||||||
INTO
|
INTO
|
||||||
_sql
|
_sql
|
||||||
FROM
|
FROM
|
||||||
tps.srce
|
tps.srce s
|
||||||
JOIN LATERAL jsonb_array_elements(defn#>_path) ae(v) ON TRUE
|
JOIN LATERAL jsonb_array_elements(s.defn->'schemas') list (e) ON TRUE
|
||||||
JOIN LATERAL jsonb_to_record (ae.v) AS r(PATH text[], "type" text, column_name text) ON TRUE
|
JOIN LATERAL jsonb_array_elements(list.e->'columns') as cols(e) ON TRUE
|
||||||
|
JOIN LATERAL jsonb_to_record (cols.e) AS rec( PATH text[], "type" text, column_name text) ON TRUE
|
||||||
WHERE
|
WHERE
|
||||||
srce = _srce
|
srce = _srce
|
||||||
|
AND list.e->>'name' = _schema
|
||||||
GROUP BY
|
GROUP BY
|
||||||
srce.srce;
|
s.srce
|
||||||
|
,list.e;
|
||||||
|
|
||||||
RETURN _sql;
|
RETURN _sql;
|
||||||
RAISE NOTICE '%',_sql;
|
RAISE NOTICE '%',_sql;
|
||||||
|
Loading…
Reference in New Issue
Block a user