29 lines
581 B
SQL
29 lines
581 B
SQL
DO
|
|
$f$
|
|
DECLARE
|
|
_path text[];
|
|
_srce text;
|
|
_sql text;
|
|
|
|
BEGIN
|
|
_path:= '{schemas,default}'::text[];
|
|
_srce:= 'dcard';
|
|
|
|
SELECT
|
|
'CREATE VIEW tpsv.'||_srce||'_'||_path[2]||' AS SELECT '||string_agg('(rec#>>'''||r.PATH::text||''')::'||r.type||' AS "'||r.column_name||'"',', ')||' FROM tps.trans WHERE srce = '''||_srce||''''
|
|
INTO
|
|
_sql
|
|
FROM
|
|
tps.srce
|
|
JOIN LATERAL jsonb_array_elements(defn#>_path) ae(v) ON TRUE
|
|
JOIN LATERAL jsonb_to_record (ae.v) AS r(PATH text[], "type" text, column_name text) ON TRUE
|
|
WHERE
|
|
srce = _srce
|
|
GROUP BY
|
|
srce.srce;
|
|
|
|
RAISE NOTICE '%',_sql;
|
|
|
|
END
|
|
$f$;
|