29 lines
581 B
MySQL
29 lines
581 B
MySQL
|
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$;
|