3 lines
22 KiB
TypeScript
3 lines
22 KiB
TypeScript
// Fixed query from accepted43, role-literal parameters only; limits/framing unchanged. Clean44 SQL proof pending.
|
|
export const FIXED44_CATALOGUE_BUILD_SQL="WITH c_tables AS NOT MATERIALIZED (SELECT c.oid::text AS oid,n.nspname AS namespace,c.relname,c.relkind,c.relispartition,c.relpersistence,c.relrowsecurity,c.relforcerowsecurity,c.reloptions,\n pg_catalog.pg_get_userbyid(c.relowner) AS owner,c.relacl::text[] AS acl,pg_catalog.pg_get_expr(c.relpartbound,c.oid) AS partition_bound,\n pg_catalog.pg_get_partkeydef(c.oid) AS partition_key FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public' AND c.relkind IN('r','p')),\nc_columns AS NOT MATERIALIZED (SELECT c.relname,a.attnum::int,a.attname,pg_catalog.format_type(a.atttypid,a.atttypmod) AS type,\n a.attnotnull,a.attidentity,a.attgenerated,a.attstorage,a.attcompression,a.attacl::text[] AS acl,pg_catalog.pg_get_expr(d.adbin,d.adrelid) AS default_expression\n FROM pg_catalog.pg_attribute a JOIN pg_catalog.pg_class c ON c.oid=a.attrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n LEFT JOIN pg_catalog.pg_attrdef d ON d.adrelid=a.attrelid AND d.adnum=a.attnum\n WHERE n.nspname='public' AND c.relkind IN('r','p') AND a.attnum>0 AND NOT a.attisdropped),\nc_identities AS NOT MATERIALIZED (SELECT c.relname,c.oid::text AS relation_oid,a.attnum::int AS column_number,a.attname,a.attidentity,\n pg_catalog.pg_get_serial_sequence(pg_catalog.format('%I.%I',n.nspname,c.relname),a.attname) AS sequence_name\n FROM pg_catalog.pg_attribute a JOIN pg_catalog.pg_class c ON c.oid=a.attrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public' AND c.relkind IN('r','p') AND NOT c.relispartition AND a.attnum>0 AND NOT a.attisdropped AND a.attidentity<>'' LIMIT 33),\nc_sequences AS NOT MATERIALIZED (SELECT s.oid::text AS oid,n.nspname AS namespace,s.relname,pg_catalog.pg_get_userbyid(s.relowner) AS owner,\n s.relacl::text[] AS acl,q.seqtypid::int AS type_oid,q.seqstart::text,q.seqincrement::text,q.seqmax::text,q.seqmin::text,q.seqcache::text,q.seqcycle,\n d.refobjid::text AS owner_relation_oid,d.refobjsubid::int AS owner_column,d.deptype\n FROM pg_catalog.pg_class s JOIN pg_catalog.pg_namespace n ON n.oid=s.relnamespace JOIN pg_catalog.pg_sequence q ON q.seqrelid=s.oid\n LEFT JOIN pg_catalog.pg_depend d ON d.classid='pg_catalog.pg_class'::regclass AND d.objid=s.oid AND d.objsubid=0 AND d.refclassid='pg_catalog.pg_class'::regclass AND d.refobjsubid>0 AND d.deptype IN('a','i')\n WHERE n.nspname='public' LIMIT 33),\nc_functions AS NOT MATERIALIZED (SELECT p.oid::text,n.nspname AS namespace,p.proname,pg_catalog.pg_get_function_identity_arguments(p.oid) AS arguments,\n p.prokind,p.prosecdef,p.proconfig,p.proacl::text[] AS acl,pg_catalog.pg_get_userbyid(p.proowner) AS owner,l.lanname AS language,\n pg_catalog.pg_get_functiondef(p.oid) AS definition FROM pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace\n JOIN pg_catalog.pg_language l ON l.oid=p.prolang WHERE n.nspname IN('public','mmapp_control') AND p.prokind IN('f','p') LIMIT 257),\nc_triggers AS NOT MATERIALIZED (SELECT t.oid::text AS oid,c.relname,t.tgname,t.tgtype::int,t.tgenabled,t.tgisinternal,t.tgfoid::text,t.tgparentid::text,t.tgconstraint::text,t.tgdeferrable,t.tginitdeferred,t.tgoldtable,t.tgnewtable,\n t.tgnargs,octet_length(t.tgargs)::int AS arg_bytes,t.tgqual IS NULL AS unconditional,pg_catalog.pg_get_triggerdef(t.oid) AS definition\n FROM pg_catalog.pg_trigger t JOIN pg_catalog.pg_class c ON c.oid=t.tgrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public'),\nc_inheritance AS NOT MATERIALIZED (SELECT p.relname AS parent,c.relname AS child FROM pg_catalog.pg_inherits i\n JOIN pg_catalog.pg_class p ON p.oid=i.inhparent JOIN pg_catalog.pg_class c ON c.oid=i.inhrelid JOIN pg_catalog.pg_namespace n ON n.oid=p.relnamespace\n WHERE n.nspname='public' AND p.relkind IN('r','p')),\nc_constraints AS NOT MATERIALIZED (SELECT c.relname,k.conname,k.contype,k.convalidated,k.condeferrable,k.condeferred,\n pg_catalog.pg_get_constraintdef(k.oid) AS definition FROM pg_catalog.pg_constraint k JOIN pg_catalog.pg_class c ON c.oid=k.conrelid\n JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public'),\nc_indexes AS NOT MATERIALIZED (SELECT c.relname,i.relname AS index_name,x.indisvalid,x.indisready,x.indisunique,x.indisprimary,\n pg_catalog.pg_get_indexdef(i.oid) AS definition FROM pg_catalog.pg_index x JOIN pg_catalog.pg_class c ON c.oid=x.indrelid\n JOIN pg_catalog.pg_class i ON i.oid=x.indexrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public'),\nc_schemas AS NOT MATERIALIZED (SELECT nspname,pg_catalog.pg_get_userbyid(nspowner) AS owner,nspacl::text[] AS acl FROM pg_catalog.pg_namespace WHERE nspname IN('public','mmapp_control')),\nc_database AS NOT MATERIALIZED (SELECT datname,pg_catalog.pg_get_userbyid(datdba) AS owner,datacl::text[] AS acl FROM pg_catalog.pg_database WHERE datname=current_database()),\nc_effectiveSchemas AS NOT MATERIALIZED (SELECT r.rolname,n.nspname,pg_catalog.has_schema_privilege(r.oid,n.oid,'USAGE') AS usage,\n pg_catalog.has_schema_privilege(r.oid,n.oid,'CREATE') AS create FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_namespace n\n WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name) AND n.nspname IN('public','mmapp_control')),\nc_effectiveDatabase AS NOT MATERIALIZED (SELECT r.rolname,pg_catalog.has_database_privilege(r.oid,d.oid,'CONNECT') AS connect,\n pg_catalog.has_database_privilege(r.oid,d.oid,'CREATE') AS create,pg_catalog.has_database_privilege(r.oid,d.oid,'TEMP') AS temporary\n FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_database d WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name) AND d.datname=current_database()),\nc_memberships AS NOT MATERIALIZED (SELECT role.rolname AS granted_role,member.rolname AS member,grantor.rolname AS grantor,m.admin_option,m.inherit_option,m.set_option\n FROM pg_catalog.pg_auth_members m JOIN pg_catalog.pg_roles role ON role.oid=m.roleid JOIN pg_catalog.pg_roles member ON member.oid=m.member\n JOIN pg_catalog.pg_roles grantor ON grantor.oid=m.grantor LIMIT 257),\nc_effectiveFunctions AS NOT MATERIALIZED (SELECT r.rolname,n.nspname,p.oid::text AS oid,p.proname,\n pg_catalog.pg_get_function_identity_arguments(p.oid) AS arguments,pg_catalog.has_function_privilege(r.oid,p.oid,'EXECUTE') AS execute\n FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace\n WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name) AND n.nspname IN('public','mmapp_control') AND p.prokind IN('f','p')\n LIMIT 1025),\nc_effectiveSequences AS NOT MATERIALIZED (SELECT r.rolname,c.relname,pg_catalog.has_sequence_privilege(r.oid,c.oid,'USAGE') AS usage,\n pg_catalog.has_sequence_privilege(r.oid,c.oid,'SELECT') AS read,pg_catalog.has_sequence_privilege(r.oid,c.oid,'UPDATE') AS update\n FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name) AND n.nspname='public' AND c.relkind='S' LIMIT 129),\nc_events AS NOT MATERIALIZED (SELECT e.evtname,e.evtevent,e.evtenabled,pg_catalog.pg_get_userbyid(e.evtowner) AS owner,e.evtfoid::text AS function_oid,e.evttags,\n n.nspname AS function_namespace,p.proname AS function_name FROM pg_catalog.pg_event_trigger e JOIN pg_catalog.pg_proc p ON p.oid=e.evtfoid\n JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace LIMIT 33),\nc_parameters AS NOT MATERIALIZED (SELECT r.rolname,v.name,pg_catalog.has_parameter_privilege(r.oid,v.name,'SET') AS can_set\n FROM pg_catalog.pg_roles r CROSS JOIN(VALUES('event_triggers'),('session_replication_role'))v(name)\n WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name)),\nc_rawSettings AS NOT MATERIALIZED (SELECT COALESCE(d.datname,'all-databases') AS database,COALESCE(r.rolname,'all-roles') AS role,s.setconfig\n FROM pg_catalog.pg_db_role_setting s LEFT JOIN pg_catalog.pg_database d ON d.oid=s.setdatabase LEFT JOIN pg_catalog.pg_roles r ON r.oid=s.setrole\n WHERE(s.setdatabase=0 OR d.datname=current_database())AND(s.setrole=0 OR r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name)) LIMIT 33),\nc_roles AS NOT MATERIALIZED (SELECT rolname,rolsuper,rolcreatedb,rolcreaterole,rolreplication,rolbypassrls,rolinherit,rolcanlogin FROM pg_catalog.pg_roles WHERE rolname IN($5::pg_catalog.name,$2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name,$4::pg_catalog.name)),\nc_roleGrants AS NOT MATERIALIZED (SELECT r.rolname,c.relname,pg_catalog.has_table_privilege(r.oid,c.oid,'SELECT') AS read,\n pg_catalog.has_table_privilege(r.oid,c.oid,'INSERT') AS insert,pg_catalog.has_table_privilege(r.oid,c.oid,'UPDATE') AS update,\n pg_catalog.has_table_privilege(r.oid,c.oid,'DELETE') AS delete,pg_catalog.has_table_privilege(r.oid,c.oid,'TRUNCATE') AS truncate,\n pg_catalog.has_table_privilege(r.oid,c.oid,'TRIGGER') AS trigger FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_class c\n JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name)\n AND n.nspname='public' AND c.relkind IN('r','p')),\nrecords AS (SELECT 'global'::text AS kind,'identities'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.relname),'[]'::jsonb)) AS value FROM c_identities q\nUNION ALL\nSELECT 'global'::text AS kind,'sequences'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.relname),'[]'::jsonb)) AS value FROM c_sequences q\nUNION ALL\nSELECT 'global'::text AS kind,'functions'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.namespace,q.proname,q.arguments),'[]'::jsonb)) AS value FROM c_functions q\nUNION ALL\nSELECT 'global'::text AS kind,'schemas'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.nspname),'[]'::jsonb)) AS value FROM c_schemas q\nUNION ALL\nSELECT 'global'::text AS kind,'database'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.datname),'[]'::jsonb)) AS value FROM c_database q\nUNION ALL\nSELECT 'global'::text AS kind,'effectiveSchemas'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname,q.nspname),'[]'::jsonb)) AS value FROM c_effectiveSchemas q\nUNION ALL\nSELECT 'global'::text AS kind,'effectiveDatabase'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname),'[]'::jsonb)) AS value FROM c_effectiveDatabase q\nUNION ALL\nSELECT 'global'::text AS kind,'memberships'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.granted_role,q.member,q.grantor),'[]'::jsonb)) AS value FROM c_memberships q\nUNION ALL\nSELECT 'global'::text AS kind,'effectiveFunctions'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname,q.nspname,q.proname,q.arguments),'[]'::jsonb)) AS value FROM c_effectiveFunctions q\nUNION ALL\nSELECT 'global'::text AS kind,'effectiveSequences'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname,q.relname),'[]'::jsonb)) AS value FROM c_effectiveSequences q\nUNION ALL\nSELECT 'global'::text AS kind,'events'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.evtname),'[]'::jsonb)) AS value FROM c_events q\nUNION ALL\nSELECT 'global'::text AS kind,'parameters'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname,q.name),'[]'::jsonb)) AS value FROM c_parameters q\nUNION ALL\nSELECT 'global'::text AS kind,'settings'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg((pg_catalog.to_jsonb(q)-'setconfig')||pg_catalog.jsonb_build_object('keys',ARRAY(SELECT pg_catalog.split_part(v,'=',1) FROM pg_catalog.unnest(q.setconfig)v),'valueSha256',pg_catalog.encode(pg_catalog.sha256(pg_catalog.convert_to(pg_catalog.to_jsonb(q.setconfig)::text,'UTF8')),'hex')) ORDER BY q.database,q.role),'[]'::jsonb)) AS value FROM c_rawSettings q\nUNION ALL\nSELECT 'global'::text AS kind,'roles'::text AS identity,pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname),'[]'::jsonb)) AS value FROM c_roles q\nUNION ALL\nSELECT 'global','source_size',pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q)),'[]'::jsonb)) FROM(SELECT\n (SELECT count(*) FROM(SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.relkind IN('r','p'))s) AS tables,\n (SELECT COALESCE(sum(pg_catalog.octet_length(p.prosrc)),0)::text FROM pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace WHERE n.nspname IN('public','mmapp_control')) AS function_bytes,\n (SELECT COALESCE(sum(pg_catalog.octet_length(d.adbin::text)),0)::text FROM pg_catalog.pg_attrdef d JOIN pg_catalog.pg_class c ON c.oid=d.adrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public') AS default_bytes,\n (SELECT COALESCE(sum(pg_catalog.octet_length(k.conbin::text)),0)::text FROM pg_catalog.pg_constraint k JOIN pg_catalog.pg_namespace n ON n.oid=k.connamespace WHERE n.nspname IN('public','mmapp_control')) AS check_bytes,\n (SELECT COALESCE(sum(pg_catalog.octet_length(t.tgqual::text)+pg_catalog.octet_length(t.tgargs)),0)::text FROM pg_catalog.pg_trigger t JOIN pg_catalog.pg_class c ON c.oid=t.tgrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public') AS trigger_bytes)q\nUNION ALL\nSELECT 'global','publisher_column_escape',pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q)),'[]'::jsonb)) FROM(SELECT c.relname FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.relkind IN('r','p') AND c.relname<>'schema_migrations' AND(pg_catalog.has_any_column_privilege($4::pg_catalog.name::pg_catalog.name,c.oid,'SELECT') OR pg_catalog.has_any_column_privilege($4::pg_catalog.name::pg_catalog.name,c.oid,'INSERT') OR pg_catalog.has_any_column_privilege($4::pg_catalog.name::pg_catalog.name,c.oid,'UPDATE') OR pg_catalog.has_any_column_privilege($4::pg_catalog.name::pg_catalog.name,c.oid,'REFERENCES')) LIMIT 1)q\nUNION ALL\nSELECT 'global','namespace_policy',pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q)),'[]'::jsonb)) FROM(SELECT\n EXISTS(SELECT 1 FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.relkind NOT IN('r','p','S','i','I')) AS relations,\n EXISTS(SELECT 1 FROM pg_catalog.pg_rewrite r JOIN pg_catalog.pg_class c ON c.oid=r.ev_class JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public') AS rules,\n EXISTS(SELECT 1 FROM pg_catalog.pg_proc p JOIN pg_catalog.pg_namespace n ON n.oid=p.pronamespace WHERE n.nspname IN('public','mmapp_control') AND p.prokind NOT IN('f','p')) AS routines,\n EXISTS(SELECT 1 FROM pg_catalog.pg_type t JOIN pg_catalog.pg_namespace n ON n.oid=t.typnamespace LEFT JOIN pg_catalog.pg_class c ON c.oid=t.typrelid LEFT JOIN pg_catalog.pg_type e ON e.oid=t.typelem LEFT JOIN pg_catalog.pg_class ec ON ec.oid=e.typrelid WHERE n.nspname='public' AND(t.typtype='c' AND c.relkind IN('r','p') OR t.typelem<>0 AND e.typarray=t.oid AND ec.relkind IN('r','p')) IS NOT TRUE) AS types,\n EXISTS(SELECT 1 FROM pg_catalog.pg_namespace n WHERE n.nspname NOT IN('public','mmapp_control','pg_catalog','information_schema') AND n.nspname!~'^pg_(toast|temp_)') AS namespaces,\n EXISTS(SELECT 1 FROM pg_catalog.pg_default_acl d JOIN pg_catalog.pg_roles r ON r.oid=d.defaclrole WHERE r.rolname IN($5::pg_catalog.name,$2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name)) AS default_acl)q\nUNION ALL\nSELECT 'global','base_tables',pg_catalog.jsonb_build_object('rows',COALESCE(pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.relname COLLATE \"C\"),'[]'::jsonb)) FROM(SELECT * FROM c_tables WHERE NOT relispartition ORDER BY relname COLLATE \"C\" LIMIT 104)q\nUNION ALL\nSELECT 'leaf','!inventory_counts',pg_catalog.jsonb_build_object('base',(SELECT count(*)::int FROM c_tables WHERE NOT relispartition),'leaf',(SELECT count(*)::int FROM c_tables WHERE relispartition))\nUNION ALL\nSELECT CASE WHEN bundle_relation.relispartition THEN 'leaf' ELSE 'base' END,bundle_relation.relname,pg_catalog.jsonb_build_object('table',pg_catalog.to_jsonb(bundle_relation),\n'columns',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.attnum) FROM(SELECT c.relname,a.attnum::int,a.attname,pg_catalog.format_type(a.atttypid,a.atttypmod) AS type,\n a.attnotnull,a.attidentity,a.attgenerated,a.attstorage,a.attcompression,a.attacl::text[] AS acl,pg_catalog.pg_get_expr(d.adbin,d.adrelid) AS default_expression\n FROM pg_catalog.pg_attribute a JOIN pg_catalog.pg_class c ON c.oid=a.attrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n LEFT JOIN pg_catalog.pg_attrdef d ON d.adrelid=a.attrelid AND d.adnum=a.attnum\n WHERE n.nspname='public' AND c.relkind IN('r','p') AND a.attnum>0 AND NOT a.attisdropped AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb),\n'triggers',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.tgname) FROM(SELECT t.oid::text AS oid,c.relname,t.tgname,t.tgtype::int,t.tgenabled,t.tgisinternal,t.tgfoid::text,t.tgparentid::text,t.tgconstraint::text,t.tgdeferrable,t.tginitdeferred,t.tgoldtable,t.tgnewtable,\n t.tgnargs,octet_length(t.tgargs)::int AS arg_bytes,t.tgqual IS NULL AS unconditional,pg_catalog.pg_get_triggerdef(t.oid) AS definition\n FROM pg_catalog.pg_trigger t JOIN pg_catalog.pg_class c ON c.oid=t.tgrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public' AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb),\n'constraints',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.conname) FROM(SELECT c.relname,k.conname,k.contype,k.convalidated,k.condeferrable,k.condeferred,\n pg_catalog.pg_get_constraintdef(k.oid) AS definition FROM pg_catalog.pg_constraint k JOIN pg_catalog.pg_class c ON c.oid=k.conrelid\n JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE n.nspname='public' AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb),\n'indexes',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.index_name) FROM(SELECT c.relname,i.relname AS index_name,x.indisvalid,x.indisready,x.indisunique,x.indisprimary,\n pg_catalog.pg_get_indexdef(i.oid) AS definition FROM pg_catalog.pg_index x JOIN pg_catalog.pg_class c ON c.oid=x.indrelid\n JOIN pg_catalog.pg_class i ON i.oid=x.indexrelid JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace\n WHERE n.nspname='public' AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb),\n'roleGrants',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.rolname) FROM(SELECT r.rolname,c.relname,pg_catalog.has_table_privilege(r.oid,c.oid,'SELECT') AS read,\n pg_catalog.has_table_privilege(r.oid,c.oid,'INSERT') AS insert,pg_catalog.has_table_privilege(r.oid,c.oid,'UPDATE') AS update,\n pg_catalog.has_table_privilege(r.oid,c.oid,'DELETE') AS delete,pg_catalog.has_table_privilege(r.oid,c.oid,'TRUNCATE') AS truncate,\n pg_catalog.has_table_privilege(r.oid,c.oid,'TRIGGER') AS trigger FROM pg_catalog.pg_roles r CROSS JOIN pg_catalog.pg_class c\n JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace WHERE r.rolname IN($2::pg_catalog.name,$3::pg_catalog.name,$1::pg_catalog.name,$4::pg_catalog.name)\n AND n.nspname='public' AND c.relkind IN('r','p') AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb),\n'inheritance',COALESCE((SELECT pg_catalog.jsonb_agg(pg_catalog.to_jsonb(q) ORDER BY q.parent,q.child) FROM(SELECT p.relname AS parent,c.relname AS child FROM pg_catalog.pg_inherits i\n JOIN pg_catalog.pg_class p ON p.oid=i.inhparent JOIN pg_catalog.pg_class c ON c.oid=i.inhrelid JOIN pg_catalog.pg_namespace n ON n.oid=p.relnamespace\n WHERE n.nspname='public' AND p.relkind IN('r','p') AND c.oid=bundle_relation.oid::oid)q),'[]'::jsonb)) FROM c_tables bundle_relation),\nnumbered AS(SELECT row_number() OVER(ORDER BY CASE kind WHEN 'global' THEN 0 WHEN 'base' THEN 1 ELSE 2 END,identity COLLATE \"C\") AS record_no,kind,identity,pg_catalog.convert_to(pg_catalog.jsonb_build_object('kind',kind,'identity',identity,'value',value)::text,'UTF8') AS encoded FROM records),\nframed AS(SELECT *,CASE WHEN pg_catalog.octet_length(encoded)>2097152 THEN 0 ELSE (pg_catalog.octet_length(encoded)+4095)/4096 END AS chunks FROM numbered)\nSELECT record_no::text AS record_id,part::int AS chunk_index,chunks::int AS chunk_count,kind,identity,CASE WHEN chunks=0 THEN NULL::bytea ELSE substring(encoded FROM part*4096+1 FOR 4096) END AS payload FROM framed CROSS JOIN LATERAL pg_catalog.generate_series(0,GREATEST(0,chunks-1))part ORDER BY record_no,part"
|