hasura / graphql-engine

Blazing fast, instant realtime GraphQL APIs on your DB with fine grained access control, also trigger webhooks on database events.
https://hasura.io
Apache License 2.0
31.06k stars 2.76k forks source link

Hasura graphql-engine crashes on accessing console #3161

Open mzagaja opened 4 years ago

mzagaja commented 4 years ago

I deployed the Hasura docker container to an AWS t2.medium instance. It connects to an EC2 instance with a Postgres container. Initially it worked fine with one or two databases tracked. I added all databases and now the container crashes when attempting to access the console. Initially the console will display nothing for available tables in the schema. After a minute or two of trying to access the console the docker container crashes and brings down the AWS EC2 instance with it.

Docker logs outputs:

{"timestamp":"2019-10-16T16:42:38.742+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"listener","info":{"received_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:20.632584Z"}}}}
{"timestamp":"2019-10-16T16:42:38.742+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"processor","info":{"processed_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:20.632584Z"}}}}
graphql-engine: internal error: Unable to commit 1048576 bytes of memory
    (GHC version 8.6.5 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

htop when it crashes:

image
0x777 commented 4 years ago

@mzagaja Can you share the logs of graphql-engine from the beginning? If we can get the schema of this database, it'll help us quickly reproduce and fix this error on our side. Is that possible?

mzagaja commented 4 years ago

Full logs of docker logs [instance_id]:

{"timestamp":"2019-10-16T16:35:42.524+0000","level":"info","type":"startup","detail":{"kind":"server_configuration","info":{"live_query_options":{"fallback_options":{"refetch_delay":1000},"multiplexed_options":{"batch_size":100,"refetch_delay":1000}},"transaction_isolation":"ISOLATION LEVEL READ COMMITTED","enabled_log_types":["unstructured","jwk-refresh-log","ws-server","http-log","schema-sync-thread","websocket-log","startup","webhook-log","pg-client","telemetry-log","metadata","event-trigger"],"server_host":"HostAny","enable_allowlist":false,"log_level":"info","auth_hook_mode":null,"use_prepared_statements":true,"unauth_role":null,"stringify_numeric_types":false,"enabled_apis":["metadata","graphql","config","pgdump"],"enable_telemetry":true,"enable_console":true,"auth_hook":null,"jwt_secret":null,"cors_config":{"allowed_origins":"*","disabled":false,"ws_read_cookie":null},"console_assets_dir":null,"admin_secret_set":true,"port":8080}}}
{"timestamp":"2019-10-16T16:35:42.524+0000","level":"info","type":"startup","detail":{"kind":"postgres_connection","info":{"database":"hasura","retries":1,"user":"viewer","host":"db.live.mapc.org","port":5433}}}
{"timestamp":"2019-10-16T16:35:42.524+0000","level":"info","type":"startup","detail":{"kind":"db_init","info":"the state is already initialised"}}
{"timestamp":"2019-10-16T16:35:42.524+0000","level":"info","type":"startup","detail":{"kind":"db_migrate","info":"already at the latest version. current version: \"22\""}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"schema-sync","info":{"thread_id":"ThreadId 19","instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","message":"listener thread started"}}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"schema-sync","info":{"thread_id":"ThreadId 20","instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","message":"processor thread started"}}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"event_triggers","info":"preparing data"}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"event_triggers","info":"starting workers"}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"telemetry","info":"Help us improve Hasura! The graphql-engine server collects anonymized usage stats which allows us to keep improving Hasura at warp speed. To read more or opt-out, visit https://docs.hasura.io/1.0/graphql/manual/guides/telemetry.html"}}
{"timestamp":"2019-10-16T16:35:45.945+0000","level":"info","type":"startup","detail":{"kind":"server","info":{"time_taken":3.452676935,"message":"starting API server"}}}
{"timestamp":"2019-10-16T16:41:48.416+0000","level":"error","type":"http-log","detail":{"operation":{"query_execution_time":null,"user_vars":null,"error":{"path":"$","error":"invalid x-hasura-admin-secret/x-hasura-access-key","code":"access-denied"},"request_id":"db4b9119-5fb0-4bef-9cf7-acb8ee77879a","response_size":95,"query":"{\"type\":\"select\",\"args\":{\"table\":{\"name\":\"hdb_table\",\"schema\":\"hdb_catalog\"},\"columns\":[\"table_schema\"],\"where\":{\"table_schema\":\"public\"},\"limit\":1}}"},"http_info":{"status":401,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:41:48.416+0000","level":"error","type":"http-log","detail":{"operation":{"query_execution_time":null,"user_vars":null,"error":{"path":"$","error":"invalid x-hasura-admin-secret/x-hasura-access-key","code":"access-denied"},"request_id":"74376c94-b712-4ef9-a978-0a3d9d4e12f7","response_size":95,"query":"{\"type\":\"select\",\"args\":{\"table\":{\"name\":\"hdb_table\",\"schema\":\"hdb_catalog\"},\"columns\":[\"table_schema\"],\"where\":{\"table_schema\":\"public\"},\"limit\":1}}"},"http_info":{"status":401,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:11.577+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":5.358e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"57256338-3e92-44ec-b7a6-911f896054ef","response_size":2,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:11.577+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":4.958693e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"0cea042c-2360-457a-b00f-becd59a065cb","response_size":83,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:11.577+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":1.6227524e-2,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"390ac7ac-0fc5-45ab-9545-e4cf980fb65b","response_size":4349,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":3.832658e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"0af6d33e-851f-47ee-9d04-6239e23a272d","response_size":2,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":3.708626e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"fc1993a9-c06f-41cd-bf0c-1abdbf245330","response_size":83,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":1.2592186e-2,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"1726264f-d87f-4e38-9c98-d9e597dd1ce4","response_size":4349,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":5.684688012,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"a64715a7-8513-47ce-9d76-b30cbbef323b","response_size":175155,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"listener","info":{"received_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:42:59.212067Z"}}}}
{"timestamp":"2019-10-16T16:42:16.362+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"processor","info":{"processed_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:42:59.212067Z"}}}}
{"timestamp":"2019-10-16T16:42:17.379+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":4.4941e-5,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"37540599-4233-4e10-83ba-f0e5ef0c8873","response_size":48,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:22.847+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":11.213408127,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"b1aa74a1-7f6e-4239-9378-844a6545cce9","response_size":175155,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:22.847+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"listener","info":{"received_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:04.745131Z"}}}}
{"timestamp":"2019-10-16T16:42:22.847+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"processor","info":{"processed_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:04.745131Z"}}}}
{"timestamp":"2019-10-16T16:42:22.847+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":4.7998e-5,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"043b4951-1cd3-45b0-98d1-617e3824b57e","response_size":48,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:23.852+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":4.563374e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"698fc115-5c0f-4268-9dad-a333ec4cf5fe","response_size":2,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:24.900+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":5.609418e-3,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"fd751a3a-cfe0-42aa-b6a4-a1fa7115eada","response_size":109,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:24.900+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":1.2931e-5,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"359f541d-0b32-4086-9910-a69732aa0513","response_size":109,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1alpha1/config","ip":"104.207.192.42","method":"GET"}}}
{"timestamp":"2019-10-16T16:42:24.900+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":2.9475e-5,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"32dd780a-909d-425f-b361-eca7fccd55e6","response_size":48,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:28.342+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":1.3247118e-2,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"bdc4c575-3ea9-4fd8-bdbe-75e6de07f703","response_size":4349,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:29.699+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":13.277488535,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"eda169b4-3f7e-448c-8f5a-2ce38fff84d0","response_size":175155,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:29.699+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"listener","info":{"received_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:11.59061Z"}}}}
{"timestamp":"2019-10-16T16:42:29.699+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"processor","info":{"processed_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:11.59061Z"}}}}
{"timestamp":"2019-10-16T16:42:29.699+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":4.2607e-5,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"88b254a3-7223-4df4-8f37-0a06d5a0a61f","response_size":48,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:30.703+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":1.2722831e-2,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"ed7cea3d-ea16-40bd-8dee-81c90f8c3e7d","response_size":10,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:38.742+0000","level":"info","type":"http-log","detail":{"operation":{"query_execution_time":22.30877146,"user_vars":{"x-hasura-role":"admin"},"error":null,"request_id":"24e65bdc-6703-45e7-b6b1-2e67aafdaa15","response_size":175155,"query":null},"http_info":{"status":200,"http_version":"HTTP/1.1","url":"/v1/query","ip":"104.207.192.42","method":"POST"}}}
{"timestamp":"2019-10-16T16:42:38.742+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"listener","info":{"received_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:20.632584Z"}}}}
{"timestamp":"2019-10-16T16:42:38.742+0000","level":"info","type":"schema-sync-thread","detail":{"thread_type":"processor","info":{"processed_event":{"instance_id":"cbf74cbf-774c-4e45-a8c5-31bc9b823f4a","occurred_at":"2019-10-16T16:43:20.632584Z"}}}}
graphql-engine: internal error: Unable to commit 1048576 bytes of memory
    (GHC version 8.6.5 for x86_64_unknown_linux)
    Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

I attached a SQL file with the schema that you should be able to restore into a fresh postgres database. hasura-schema.sql.zip

mzagaja commented 4 years ago

I can add that our database server is maxing out at 100% CPU when adding a table to track from Hasura:

image

Further digging reveals one of the biggest performance culprits is trying to list tables:

curl 'http://127.0.0.1:8080/v1/query' \
-XPOST \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15' \
--data-binary $'{"type":"bulk","args":[{"type":"run_sql","args":{"sql":"\\nselect \\n  COALESCE(\\n    json_agg(\\n      row_to_json(info)\\n    ), \\n    \'[]\' :: JSON\\n  ) AS tables \\nFROM \\n  (\\n    select \\n      ist.table_schema, \\n      ist.table_name,\\n      ist.table_type,\\n      obj_description(\\n        (\\n          quote_ident(ist.table_schema) || \'.\' || quote_ident(ist.table_name)\\n        ):: regclass, \\n        \'pg_class\'\\n      ) AS comment, \\n      COALESCE(json_agg(\\n        DISTINCT row_to_json(is_columns) :: JSONB || jsonb_build_object(\\n          \'comment\',\\n          (\\n            SELECT \\n              pg_catalog.col_description(\\n                c.oid, is_columns.ordinal_position :: int\\n              ) \\n            FROM \\n              pg_catalog.pg_class c \\n            WHERE \\n              c.oid = (\\n                SELECT \\n                  (\\n                    (\\n                      quote_ident(ist.table_schema) || \'.\' || quote_ident(ist.table_name)\\n                    ):: text\\n                  ):: regclass :: oid\\n              ) \\n              AND c.relname = is_columns.table_name\\n          )\\n        )\\n      ) FILTER (WHERE is_columns.column_name IS NOT NULL), \'[]\' :: JSON) AS columns,\\n      COALESCE(json_agg(\\n        DISTINCT row_to_json(is_triggers) :: JSONB || jsonb_build_object(\\n          \'comment\',\\n          (\\n            SELECT description FROM pg_description JOIN pg_trigger ON pg_description.objoid = pg_trigger.oid \\n            WHERE tgname = is_triggers.trigger_name\\n          )\\n        )\\n      ) FILTER (WHERE is_triggers.trigger_name IS NOT NULL), \'[]\' :: JSON) AS triggers,\\n      row_to_json(is_views) AS view_info\\n    FROM \\n      information_schema.tables AS ist \\n      LEFT OUTER JOIN information_schema.columns AS is_columns ON \\n        is_columns.table_schema = ist.table_schema \\n        AND is_columns.table_name = ist.table_name \\n      LEFT OUTER JOIN information_schema.views AS is_views ON is_views.table_schema = ist.table_schema\\n        AND is_views.table_name = ist.table_name\\n      LEFT OUTER JOIN information_schema.triggers AS is_triggers ON \\n        is_triggers.event_object_schema = ist.table_schema AND \\n        is_triggers.event_object_table = ist.table_name\\n    where (ist.table_schema=\'tabular\') \\n    GROUP BY \\n      ist.table_schema, \\n      ist.table_name,\\n      ist.table_type,\\n      is_views.*\\n  ) AS info\\n"}},{"type":"select","args":{"table":{"name":"hdb_table","schema":"hdb_catalog"},"columns":["table_schema","table_name",{"name":"primary_key","columns":["*"]},{"name":"relationships","columns":["*"]},{"name":"permissions","columns":["*"]},{"name":"unique_constraints","columns":["*"]},{"name":"check_constraints","columns":["*"],"order_by":{"column":"constraint_name","type":"asc"}},"is_enum"],"order_by":[{"column":"table_name","type":"asc"}]},"where":{"$or":[{"table_schema":"tabular"}]}},{"type":"run_sql","args":{"sql":"select \\n  COALESCE(\\n    json_agg(\\n      row_to_json(info)\\n    ), \\n    \'[]\' :: JSON\\n  ) AS tables \\nFROM \\n  (\\n    select\\n      hdb_fkc.*, \\n      fk_ref_table.table_name IS NOT NULL AS is_ref_table_tracked \\n    from \\n      hdb_catalog.hdb_table AS ist \\n      JOIN hdb_catalog.hdb_foreign_key_constraint AS hdb_fkc ON hdb_fkc.table_schema = ist.table_schema \\n      and hdb_fkc.table_name = ist.table_name \\n      LEFT OUTER JOIN hdb_catalog.hdb_table AS fk_ref_table ON fk_ref_table.table_schema = hdb_fkc.ref_table_table_schema \\n      and fk_ref_table.table_name = hdb_fkc.ref_table\\n    where (ist.table_schema=\'tabular\')\\n  ) as info\\n"}},{"type":"run_sql","args":{"sql":"select \\n  COALESCE(\\n    json_agg(\\n      row_to_json(info)\\n    ), \\n    \'[]\' :: JSON\\n  ) AS tables \\nFROM \\n  (\\n    select DISTINCT ON (hdb_fkc.constraint_oid)\\n      hdb_fkc.*, \\n      fk_ref_table.table_name IS NOT NULL AS is_table_tracked,\\n      hdb_uc.constraint_name IS NOT NULL AS is_unique\\n    from \\n      hdb_catalog.hdb_table AS ist \\n      JOIN hdb_catalog.hdb_foreign_key_constraint AS hdb_fkc ON hdb_fkc.ref_table_table_schema = ist.table_schema \\n      and hdb_fkc.ref_table = ist.table_name \\n      LEFT OUTER JOIN hdb_catalog.hdb_table AS fk_ref_table ON fk_ref_table.table_schema = hdb_fkc.table_schema \\n      and fk_ref_table.table_name = hdb_fkc.table_name\\n      LEFT OUTER JOIN hdb_catalog.hdb_unique_constraint AS hdb_uc ON hdb_uc.table_schema = hdb_fkc.table_schema\\n      and hdb_uc.table_name = hdb_fkc.table_name and ARRAY(select json_array_elements_text(hdb_uc.columns) ORDER BY json_array_elements_text) = ARRAY(select json_object_keys(hdb_fkc.column_mapping) ORDER BY json_object_keys)\\n    where (ist.table_schema=\'tabular\')\\n  ) as info\\n"}}]}'
mzagaja commented 4 years ago

Possibly related: https://github.com/hasura/graphql-engine/issues/2273.

mzagaja commented 4 years ago

Query in the Data view causing slowness:

SELECT
    COALESCE(json_agg(row_to_json(info)), '[]'::JSON) AS tables
FROM (
    SELECT
        ist.table_schema,
        ist.table_name,
        ist.table_type,
        obj_description((quote_ident(ist.table_schema) || '.' || quote_ident(ist.table_name))::regclass, 'pg_class') AS COMMENT,
        COALESCE(json_agg(DISTINCT row_to_json(is_columns)::JSONB || jsonb_build_object ('comment', (
                        SELECT
                            pg_catalog.col_description(c.oid, is_columns.ordinal_position::int)
                            FROM pg_catalog.pg_class c
                        WHERE
                            c.oid = (
                                SELECT
                                    ((quote_ident(ist.table_schema) || '.' || quote_ident(ist.table_name))::text)::regclass::oid)
                            AND c.relname = is_columns.table_name))) FILTER (WHERE is_columns.column_name IS NOT NULL), '[]'::JSON) AS columns, COALESCE(json_agg(DISTINCT row_to_json(is_triggers)::JSONB || jsonb_build_object ('comment', (
    SELECT
        description FROM pg_description
        JOIN pg_trigger ON pg_description.objoid = pg_trigger.oid WHERE tgname = is_triggers.trigger_name))) FILTER (WHERE is_triggers.trigger_name IS NOT NULL), '[]'::JSON) AS triggers, row_to_json(is_views) AS view_info FROM information_schema.tables AS ist
        LEFT OUTER JOIN information_schema.columns AS is_columns ON is_columns.table_schema = ist.table_schema
            AND is_columns.table_name = ist.table_name
    LEFT OUTER JOIN information_schema.views AS is_views ON is_views.table_schema = ist.table_schema
    AND is_views.table_name = ist.table_name
    LEFT OUTER JOIN information_schema.triggers AS is_triggers ON is_triggers.event_object_schema = ist.table_schema
    AND is_triggers.event_object_table = ist.table_name WHERE (ist.table_schema = 'tabular')
GROUP BY
    ist.table_schema,
    ist.table_name,
    ist.table_type,
    is_views.*) AS info
[
  {
    "Plan": {
      "Node Type": "Aggregate",
      "Strategy": "Plain",
      "Startup Cost": 18768.18,
      "Total Cost": 18768.19,
      "Plan Rows": 1,
      "Plan Width": 24,
      "Actual Startup Time": 17241.753,
      "Actual Total Time": 17241.754,
      "Actual Rows": 1,
      "Actual Loops": 1,
      "Output": ["COALESCE(json_agg(row_to_json(info.*)), '[]'::json)"],
      "Shared Hit Blocks": 194536,
      "Shared Read Blocks": 0,
      "Shared Dirtied Blocks": 0,
      "Shared Written Blocks": 0,
      "Local Hit Blocks": 0,
      "Local Read Blocks": 0,
      "Local Dirtied Blocks": 0,
      "Local Written Blocks": 0,
      "Temp Read Blocks": 3218,
      "Temp Written Blocks": 3218,
      "Plans": [
        {
          "Node Type": "Subquery Scan",
          "Parent Relationship": "Outer",
          "Alias": "info",
          "Startup Cost": 6090.43,
          "Total Cost": 18766.28,
          "Plan Rows": 380,
          "Plan Width": 24,
          "Actual Startup Time": 10155.482,
          "Actual Total Time": 17128.224,
          "Actual Rows": 354,
          "Actual Loops": 1,
          "Output": ["info.*"],
          "Shared Hit Blocks": 194536,
          "Shared Read Blocks": 0,
          "Shared Dirtied Blocks": 0,
          "Shared Written Blocks": 0,
          "Local Hit Blocks": 0,
          "Local Read Blocks": 0,
          "Local Dirtied Blocks": 0,
          "Local Written Blocks": 0,
          "Temp Read Blocks": 3218,
          "Temp Written Blocks": 3218,
          "Plans": [
            {
              "Node Type": "Aggregate",
              "Strategy": "Sorted",
              "Parent Relationship": "Subquery",
              "Startup Cost": 6090.43,
              "Total Cost": 18762.48,
              "Plan Rows": 380,
              "Plan Width": 423,
              "Actual Startup Time": 10155.391,
              "Actual Total Time": 17101.619,
              "Actual Rows": 354,
              "Actual Loops": 1,
              "Output": ["((nc.nspname)::information_schema.sql_identifier)", "((c.relname)::information_schema.sql_identifier)", "((CASE WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY'::text WHEN (c.relkind = 'r'::\"char\") THEN 'BASE TABLE'::text WHEN (c.relkind = 'v'::\"char\") THEN 'VIEW'::text WHEN (c.relkind = 'f'::\"char\") THEN 'FOREIGN TABLE'::text ELSE NULL::text END)::information_schema.character_data)", "obj_description(((((quote_ident((((nc.nspname)::information_schema.sql_identifier))::text) || '.'::text) || quote_ident((((c.relname)::information_schema.sql_identifier))::text)))::regclass)::oid, 'pg_class'::name)", "COALESCE(json_agg(DISTINCT ((row_to_json((ROW((current_database())::information_schema.sql_identifier, (nc_1.nspname)::information_schema.sql_identifier, (c_1.relname)::information_schema.sql_identifier, (a.attname)::information_schema.sql_identifier, (a.attnum)::information_schema.cardinal_number, (pg_get_expr(ad.adbin, ad.adrelid))::information_schema.character_data, (CASE WHEN (a.attnotnull OR ((t_1.typtype = 'd'::\"char\") AND t_1.typnotnull)) THEN 'NO'::text ELSE 'YES'::text END)::information_schema.yes_or_no, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN CASE WHEN ((bt.typelem <> '0'::oid) AND (bt.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nbt.nspname = 'pg_catalog'::name) THEN format_type(t_1.typbasetype, NULL::integer) ELSE 'USER-DEFINED'::text END ELSE CASE WHEN ((t_1.typelem <> '0'::oid) AND (t_1.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nt_1.nspname = 'pg_catalog'::name) THEN format_type(a.atttypid, NULL::integer) ELSE 'USER-DEFINED'::text END END)::information_schema.character_data, (information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_char_octet_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision_radix(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_scale(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_datetime_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_interval_type(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.character_data, (NULL::integer)::information_schema.cardinal_number, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (CASE WHEN (nco.nspname IS NOT NULL) THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (nco.nspname)::information_schema.sql_identifier, (co.collname)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN nt_1.nspname ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN t_1.typname ELSE NULL::name END)::information_schema.sql_identifier, (current_database())::information_schema.sql_identifier, (COALESCE(nbt.nspname, nt_1.nspname))::information_schema.sql_identifier, (COALESCE(bt.typname, t_1.typname))::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (a.attnum)::information_schema.sql_identifier, ('NO'::character varying(3))::information_schema.yes_or_no, ('NO'::character varying(3))::information_schema.yes_or_no, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying(3))::information_schema.yes_or_no, ('NEVER'::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (CASE WHEN ((c_1.relkind = 'r'::\"char\") OR ((c_1.relkind = ANY ('{v,f}'::\"char\"[])) AND pg_column_is_updatable((c_1.oid)::regclass, a.attnum, false))) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))))::jsonb || jsonb_build_object('comment', (SubPlan 2)))) FILTER (WHERE ((a.attname)::information_schema.sql_identifier IS NOT NULL)), '[]'::json)", "COALESCE(json_agg(DISTINCT ((row_to_json((ROW((current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (t_2.tgname)::information_schema.sql_identifier, (\"*VALUES*\".column2)::information_schema.character_data, (current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (c_3.relname)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (CASE WHEN pg_has_role(c_3.relowner, 'USAGE'::text) THEN (SubPlan 3) ELSE NULL::text END)::information_schema.character_data, (\"substring\"(pg_get_triggerdef(t_2.oid), (\"position\"(\"substring\"(pg_get_triggerdef(t_2.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)))::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 1) WHEN 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END)::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 66) WHEN 2 THEN 'BEFORE'::text WHEN 64 THEN 'INSTEAD OF'::text ELSE 'AFTER'::text END)::information_schema.character_data, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::timestamp(2) with time zone)::information_schema.time_stamp))))::jsonb || jsonb_build_object('comment', (SubPlan 4)))) FILTER (WHERE ((t_2.tgname)::information_schema.sql_identifier IS NOT NULL)), '[]'::json)", "row_to_json((ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no)))", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
              "Group Key": ["((nc.nspname)::information_schema.sql_identifier)", "((c.relname)::information_schema.sql_identifier)", "((CASE WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY'::text WHEN (c.relkind = 'r'::\"char\") THEN 'BASE TABLE'::text WHEN (c.relkind = 'v'::\"char\") THEN 'VIEW'::text WHEN (c.relkind = 'f'::\"char\") THEN 'FOREIGN TABLE'::text ELSE NULL::text END)::information_schema.character_data)", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
              "Shared Hit Blocks": 194536,
              "Shared Read Blocks": 0,
              "Shared Dirtied Blocks": 0,
              "Shared Written Blocks": 0,
              "Local Hit Blocks": 0,
              "Local Read Blocks": 0,
              "Local Dirtied Blocks": 0,
              "Local Written Blocks": 0,
              "Temp Read Blocks": 3218,
              "Temp Written Blocks": 3218,
              "Plans": [
                {
                  "Node Type": "Sort",
                  "Parent Relationship": "Outer",
                  "Startup Cost": 6090.43,
                  "Total Cost": 6091.38,
                  "Plan Rows": 380,
                  "Plan Width": 423,
                  "Actual Startup Time": 10114.462,
                  "Actual Total Time": 10227.667,
                  "Actual Rows": 37553,
                  "Actual Loops": 1,
                  "Output": ["((nc.nspname)::information_schema.sql_identifier)", "((c.relname)::information_schema.sql_identifier)", "((CASE WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY'::text WHEN (c.relkind = 'r'::\"char\") THEN 'BASE TABLE'::text WHEN (c.relkind = 'v'::\"char\") THEN 'VIEW'::text WHEN (c.relkind = 'f'::\"char\") THEN 'FOREIGN TABLE'::text ELSE NULL::text END)::information_schema.character_data)", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))", "nc.nspname", "c.relname", "(ROW((current_database())::information_schema.sql_identifier, (nc_1.nspname)::information_schema.sql_identifier, (c_1.relname)::information_schema.sql_identifier, (a.attname)::information_schema.sql_identifier, (a.attnum)::information_schema.cardinal_number, (pg_get_expr(ad.adbin, ad.adrelid))::information_schema.character_data, (CASE WHEN (a.attnotnull OR ((t_1.typtype = 'd'::\"char\") AND t_1.typnotnull)) THEN 'NO'::text ELSE 'YES'::text END)::information_schema.yes_or_no, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN CASE WHEN ((bt.typelem <> '0'::oid) AND (bt.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nbt.nspname = 'pg_catalog'::name) THEN format_type(t_1.typbasetype, NULL::integer) ELSE 'USER-DEFINED'::text END ELSE CASE WHEN ((t_1.typelem <> '0'::oid) AND (t_1.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nt_1.nspname = 'pg_catalog'::name) THEN format_type(a.atttypid, NULL::integer) ELSE 'USER-DEFINED'::text END END)::information_schema.character_data, (information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_char_octet_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision_radix(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_scale(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_datetime_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_interval_type(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.character_data, (NULL::integer)::information_schema.cardinal_number, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (CASE WHEN (nco.nspname IS NOT NULL) THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (nco.nspname)::information_schema.sql_identifier, (co.collname)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN nt_1.nspname ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN t_1.typname ELSE NULL::name END)::information_schema.sql_identifier, (current_database())::information_schema.sql_identifier, (COALESCE(nbt.nspname, nt_1.nspname))::information_schema.sql_identifier, (COALESCE(bt.typname, t_1.typname))::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (a.attnum)::information_schema.sql_identifier, ('NO'::character varying(3))::information_schema.yes_or_no, ('NO'::character varying(3))::information_schema.yes_or_no, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying(3))::information_schema.yes_or_no, ('NEVER'::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (CASE WHEN ((c_1.relkind = 'r'::\"char\") OR ((c_1.relkind = ANY ('{v,f}'::\"char\"[])) AND pg_column_is_updatable((c_1.oid)::regclass, a.attnum, false))) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))", "a.attnum", "c_1.relname", "a.attname", "(ROW((current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (t_2.tgname)::information_schema.sql_identifier, (\"*VALUES*\".column2)::information_schema.character_data, (current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (c_3.relname)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (CASE WHEN pg_has_role(c_3.relowner, 'USAGE'::text) THEN (SubPlan 3) ELSE NULL::text END)::information_schema.character_data, (\"substring\"(pg_get_triggerdef(t_2.oid), (\"position\"(\"substring\"(pg_get_triggerdef(t_2.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)))::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 1) WHEN 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END)::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 66) WHEN 2 THEN 'BEFORE'::text WHEN 64 THEN 'INSTEAD OF'::text ELSE 'AFTER'::text END)::information_schema.character_data, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::timestamp(2) with time zone)::information_schema.time_stamp))", "t_2.tgname"],
                  "Sort Key": ["((nc.nspname)::information_schema.sql_identifier)", "((c.relname)::information_schema.sql_identifier)", "((CASE WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY'::text WHEN (c.relkind = 'r'::\"char\") THEN 'BASE TABLE'::text WHEN (c.relkind = 'v'::\"char\") THEN 'VIEW'::text WHEN (c.relkind = 'f'::\"char\") THEN 'FOREIGN TABLE'::text ELSE NULL::text END)::information_schema.character_data)", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                  "Sort Method": "external sort",
                  "Sort Space Used": 25744,
                  "Sort Space Type": "Disk",
                  "Shared Hit Blocks": 4403,
                  "Shared Read Blocks": 0,
                  "Shared Dirtied Blocks": 0,
                  "Shared Written Blocks": 0,
                  "Local Hit Blocks": 0,
                  "Local Read Blocks": 0,
                  "Local Dirtied Blocks": 0,
                  "Local Written Blocks": 0,
                  "Temp Read Blocks": 3218,
                  "Temp Written Blocks": 3218,
                  "Plans": [
                    {
                      "Node Type": "Hash Join",
                      "Parent Relationship": "Outer",
                      "Join Type": "Left",
                      "Startup Cost": 1166.97,
                      "Total Cost": 6074.14,
                      "Plan Rows": 380,
                      "Plan Width": 423,
                      "Actual Startup Time": 87.210,
                      "Actual Total Time": 9256.961,
                      "Actual Rows": 37553,
                      "Actual Loops": 1,
                      "Output": ["(nc.nspname)::information_schema.sql_identifier", "(c.relname)::information_schema.sql_identifier", "(CASE WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY'::text WHEN (c.relkind = 'r'::\"char\") THEN 'BASE TABLE'::text WHEN (c.relkind = 'v'::\"char\") THEN 'VIEW'::text WHEN (c.relkind = 'f'::\"char\") THEN 'FOREIGN TABLE'::text ELSE NULL::text END)::information_schema.character_data", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))", "nc.nspname", "c.relname", "(ROW((current_database())::information_schema.sql_identifier, (nc_1.nspname)::information_schema.sql_identifier, (c_1.relname)::information_schema.sql_identifier, (a.attname)::information_schema.sql_identifier, (a.attnum)::information_schema.cardinal_number, (pg_get_expr(ad.adbin, ad.adrelid))::information_schema.character_data, (CASE WHEN (a.attnotnull OR ((t_1.typtype = 'd'::\"char\") AND t_1.typnotnull)) THEN 'NO'::text ELSE 'YES'::text END)::information_schema.yes_or_no, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN CASE WHEN ((bt.typelem <> '0'::oid) AND (bt.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nbt.nspname = 'pg_catalog'::name) THEN format_type(t_1.typbasetype, NULL::integer) ELSE 'USER-DEFINED'::text END ELSE CASE WHEN ((t_1.typelem <> '0'::oid) AND (t_1.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nt_1.nspname = 'pg_catalog'::name) THEN format_type(a.atttypid, NULL::integer) ELSE 'USER-DEFINED'::text END END)::information_schema.character_data, (information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_char_octet_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision_radix(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_scale(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_datetime_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_interval_type(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.character_data, (NULL::integer)::information_schema.cardinal_number, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (CASE WHEN (nco.nspname IS NOT NULL) THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (nco.nspname)::information_schema.sql_identifier, (co.collname)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN nt_1.nspname ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN t_1.typname ELSE NULL::name END)::information_schema.sql_identifier, (current_database())::information_schema.sql_identifier, (COALESCE(nbt.nspname, nt_1.nspname))::information_schema.sql_identifier, (COALESCE(bt.typname, t_1.typname))::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (a.attnum)::information_schema.sql_identifier, ('NO'::character varying(3))::information_schema.yes_or_no, ('NO'::character varying(3))::information_schema.yes_or_no, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying(3))::information_schema.yes_or_no, ('NEVER'::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (CASE WHEN ((c_1.relkind = 'r'::\"char\") OR ((c_1.relkind = ANY ('{v,f}'::\"char\"[])) AND pg_column_is_updatable((c_1.oid)::regclass, a.attnum, false))) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))", "a.attnum", "c_1.relname", "a.attname", "(ROW((current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (t_2.tgname)::information_schema.sql_identifier, (\"*VALUES*\".column2)::information_schema.character_data, (current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (c_3.relname)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (CASE WHEN pg_has_role(c_3.relowner, 'USAGE'::text) THEN (SubPlan 3) ELSE NULL::text END)::information_schema.character_data, (\"substring\"(pg_get_triggerdef(t_2.oid), (\"position\"(\"substring\"(pg_get_triggerdef(t_2.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)))::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 1) WHEN 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END)::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 66) WHEN 2 THEN 'BEFORE'::text WHEN 64 THEN 'INSTEAD OF'::text ELSE 'AFTER'::text END)::information_schema.character_data, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::timestamp(2) with time zone)::information_schema.time_stamp))", "t_2.tgname"],
                      "Hash Cond": "((((nc.nspname)::information_schema.sql_identifier)::text = ((n.nspname)::information_schema.sql_identifier)::text) AND (((c.relname)::information_schema.sql_identifier)::text = ((c_3.relname)::information_schema.sql_identifier)::text))",
                      "Shared Hit Blocks": 4403,
                      "Shared Read Blocks": 0,
                      "Shared Dirtied Blocks": 0,
                      "Shared Written Blocks": 0,
                      "Local Hit Blocks": 0,
                      "Local Read Blocks": 0,
                      "Local Dirtied Blocks": 0,
                      "Local Written Blocks": 0,
                      "Temp Read Blocks": 0,
                      "Temp Written Blocks": 0,
                      "Plans": [
                        {
                          "Node Type": "Hash Join",
                          "Parent Relationship": "Outer",
                          "Join Type": "Right",
                          "Startup Cost": 1157.07,
                          "Total Cost": 2232.84,
                          "Plan Rows": 380,
                          "Plan Width": 327,
                          "Actual Startup Time": 87.169,
                          "Actual Total Time": 9014.500,
                          "Actual Rows": 37553,
                          "Actual Loops": 1,
                          "Output": ["nc.nspname", "nc.oid", "c.relname", "c.relkind", "a.attnum", "a.attname", "c_1.relname", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))", "(ROW((current_database())::information_schema.sql_identifier, (nc_1.nspname)::information_schema.sql_identifier, (c_1.relname)::information_schema.sql_identifier, (a.attname)::information_schema.sql_identifier, (a.attnum)::information_schema.cardinal_number, (pg_get_expr(ad.adbin, ad.adrelid))::information_schema.character_data, (CASE WHEN (a.attnotnull OR ((t_1.typtype = 'd'::\"char\") AND t_1.typnotnull)) THEN 'NO'::text ELSE 'YES'::text END)::information_schema.yes_or_no, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN CASE WHEN ((bt.typelem <> '0'::oid) AND (bt.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nbt.nspname = 'pg_catalog'::name) THEN format_type(t_1.typbasetype, NULL::integer) ELSE 'USER-DEFINED'::text END ELSE CASE WHEN ((t_1.typelem <> '0'::oid) AND (t_1.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nt_1.nspname = 'pg_catalog'::name) THEN format_type(a.atttypid, NULL::integer) ELSE 'USER-DEFINED'::text END END)::information_schema.character_data, (information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_char_octet_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision_radix(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_scale(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_datetime_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_interval_type(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.character_data, (NULL::integer)::information_schema.cardinal_number, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (CASE WHEN (nco.nspname IS NOT NULL) THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (nco.nspname)::information_schema.sql_identifier, (co.collname)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN nt_1.nspname ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN t_1.typname ELSE NULL::name END)::information_schema.sql_identifier, (current_database())::information_schema.sql_identifier, (COALESCE(nbt.nspname, nt_1.nspname))::information_schema.sql_identifier, (COALESCE(bt.typname, t_1.typname))::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (a.attnum)::information_schema.sql_identifier, ('NO'::character varying(3))::information_schema.yes_or_no, ('NO'::character varying(3))::information_schema.yes_or_no, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying(3))::information_schema.yes_or_no, ('NEVER'::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (CASE WHEN ((c_1.relkind = 'r'::\"char\") OR ((c_1.relkind = ANY ('{v,f}'::\"char\"[])) AND pg_column_is_updatable((c_1.oid)::regclass, a.attnum, false))) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                          "Hash Cond": "((((nc_1.nspname)::information_schema.sql_identifier)::text = ((nc.nspname)::information_schema.sql_identifier)::text) AND (((c_1.relname)::information_schema.sql_identifier)::text = ((c.relname)::information_schema.sql_identifier)::text))",
                          "Shared Hit Blocks": 4397,
                          "Shared Read Blocks": 0,
                          "Shared Dirtied Blocks": 0,
                          "Shared Written Blocks": 0,
                          "Local Hit Blocks": 0,
                          "Local Read Blocks": 0,
                          "Local Dirtied Blocks": 0,
                          "Local Written Blocks": 0,
                          "Temp Read Blocks": 0,
                          "Temp Written Blocks": 0,
                          "Plans": [
                            {
                              "Node Type": "Hash Join",
                              "Parent Relationship": "Outer",
                              "Join Type": "Left",
                              "Startup Cost": 383.95,
                              "Total Cost": 1393.93,
                              "Plan Rows": 855,
                              "Plan Width": 226,
                              "Actual Startup Time": 46.991,
                              "Actual Total Time": 8784.025,
                              "Actual Rows": 37553,
                              "Actual Loops": 1,
                              "Output": ["a.attnum", "a.attname", "c_1.relname", "nc_1.nspname", "ROW((current_database())::information_schema.sql_identifier, (nc_1.nspname)::information_schema.sql_identifier, (c_1.relname)::information_schema.sql_identifier, (a.attname)::information_schema.sql_identifier, (a.attnum)::information_schema.cardinal_number, (pg_get_expr(ad.adbin, ad.adrelid))::information_schema.character_data, (CASE WHEN (a.attnotnull OR ((t_1.typtype = 'd'::\"char\") AND t_1.typnotnull)) THEN 'NO'::text ELSE 'YES'::text END)::information_schema.yes_or_no, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN CASE WHEN ((bt.typelem <> '0'::oid) AND (bt.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nbt.nspname = 'pg_catalog'::name) THEN format_type(t_1.typbasetype, NULL::integer) ELSE 'USER-DEFINED'::text END ELSE CASE WHEN ((t_1.typelem <> '0'::oid) AND (t_1.typlen = '-1'::integer)) THEN 'ARRAY'::text WHEN (nt_1.nspname = 'pg_catalog'::name) THEN format_type(a.atttypid, NULL::integer) ELSE 'USER-DEFINED'::text END END)::information_schema.character_data, (information_schema._pg_char_max_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_char_octet_length(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_precision_radix(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_numeric_scale(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_datetime_precision(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.cardinal_number, (information_schema._pg_interval_type(information_schema._pg_truetypid(a.*, t_1.*), information_schema._pg_truetypmod(a.*, t_1.*)))::information_schema.character_data, (NULL::integer)::information_schema.cardinal_number, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (CASE WHEN (nco.nspname IS NOT NULL) THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (nco.nspname)::information_schema.sql_identifier, (co.collname)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN current_database() ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN nt_1.nspname ELSE NULL::name END)::information_schema.sql_identifier, (CASE WHEN (t_1.typtype = 'd'::\"char\") THEN t_1.typname ELSE NULL::name END)::information_schema.sql_identifier, (current_database())::information_schema.sql_identifier, (COALESCE(nbt.nspname, nt_1.nspname))::information_schema.sql_identifier, (COALESCE(bt.typname, t_1.typname))::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (a.attnum)::information_schema.sql_identifier, ('NO'::character varying(3))::information_schema.yes_or_no, ('NO'::character varying(3))::information_schema.yes_or_no, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (NULL::character varying(3))::information_schema.yes_or_no, ('NEVER'::character varying)::information_schema.character_data, (NULL::character varying)::information_schema.character_data, (CASE WHEN ((c_1.relkind = 'r'::\"char\") OR ((c_1.relkind = ANY ('{v,f}'::\"char\"[])) AND pg_column_is_updatable((c_1.oid)::regclass, a.attnum, false))) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no)"],
                              "Hash Cond": "(a.attcollation = co.oid)",
                              "Shared Hit Blocks": 3295,
                              "Shared Read Blocks": 0,
                              "Shared Dirtied Blocks": 0,
                              "Shared Written Blocks": 0,
                              "Local Hit Blocks": 0,
                              "Local Read Blocks": 0,
                              "Local Dirtied Blocks": 0,
                              "Local Written Blocks": 0,
                              "Temp Read Blocks": 0,
                              "Temp Written Blocks": 0,
                              "Plans": [
                                {
                                  "Node Type": "Hash Join",
                                  "Parent Relationship": "Outer",
                                  "Join Type": "Left",
                                  "Startup Cost": 381.53,
                                  "Total Cost": 1379.75,
                                  "Plan Rows": 855,
                                  "Plan Width": 1929,
                                  "Actual Startup Time": 45.952,
                                  "Actual Total Time": 826.777,
                                  "Actual Rows": 37553,
                                  "Actual Loops": 1,
                                  "Output": ["t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname", "bt.typelem", "bt.typlen", "bt.typname", "nbt.nspname", "a.attnum", "a.attname", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*", "ad.adrelid", "ad.adbin", "c_1.relname", "c_1.oid", "c_1.relkind", "nc_1.nspname", "nt_1.nspname"],
                                  "Hash Cond": "((a.attrelid = ad.adrelid) AND (a.attnum = ad.adnum))",
                                  "Shared Hit Blocks": 2438,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0,
                                  "Plans": [
                                    {
                                      "Node Type": "Hash Join",
                                      "Parent Relationship": "Outer",
                                      "Join Type": "Left",
                                      "Startup Cost": 322.05,
                                      "Total Cost": 1305.22,
                                      "Plan Rows": 855,
                                      "Plan Width": 1491,
                                      "Actual Startup Time": 41.603,
                                      "Actual Total Time": 693.512,
                                      "Actual Rows": 37553,
                                      "Actual Loops": 1,
                                      "Output": ["t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname", "bt.typelem", "bt.typlen", "bt.typname", "nbt.nspname", "a.attnum", "a.attname", "a.attrelid", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*", "c_1.relname", "c_1.oid", "c_1.relkind", "nc_1.nspname", "nt_1.nspname"],
                                      "Hash Cond": "(t_1.typbasetype = bt.oid)",
                                      "Join Filter": "(t_1.typtype = 'd'::\"char\")",
                                      "Rows Removed by Join Filter": 0,
                                      "Shared Hit Blocks": 2394,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Hash Join",
                                          "Parent Relationship": "Outer",
                                          "Join Type": "Inner",
                                          "Startup Cost": 145.00,
                                          "Total Cost": 1115.81,
                                          "Plan Rows": 855,
                                          "Plan Width": 1357,
                                          "Actual Startup Time": 25.956,
                                          "Actual Total Time": 614.157,
                                          "Actual Rows": 37553,
                                          "Actual Loops": 1,
                                          "Output": ["a.attnum", "a.attname", "a.attrelid", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*", "c_1.relname", "c_1.oid", "c_1.relkind", "nc_1.nspname", "t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname", "nt_1.nspname"],
                                          "Hash Cond": "(t_1.typnamespace = nt_1.oid)",
                                          "Shared Hit Blocks": 2322,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0,
                                          "Plans": [
                                            {
                                              "Node Type": "Hash Join",
                                              "Parent Relationship": "Outer",
                                              "Join Type": "Inner",
                                              "Startup Cost": 143.87,
                                              "Total Cost": 1102.38,
                                              "Plan Rows": 998,
                                              "Plan Width": 1297,
                                              "Actual Startup Time": 25.933,
                                              "Actual Total Time": 456.652,
                                              "Actual Rows": 37553,
                                              "Actual Loops": 1,
                                              "Output": ["a.attnum", "a.attname", "a.attrelid", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*", "c_1.relname", "c_1.oid", "c_1.relkind", "nc_1.nspname", "t_1.typnamespace", "t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname"],
                                              "Hash Cond": "(a.atttypid = t_1.oid)",
                                              "Shared Hit Blocks": 2321,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0,
                                              "Plans": [
                                                {
                                                  "Node Type": "Nested Loop",
                                                  "Parent Relationship": "Outer",
                                                  "Join Type": "Inner",
                                                  "Startup Cost": 1.41,
                                                  "Total Cost": 946.20,
                                                  "Plan Rows": 998,
                                                  "Plan Width": 439,
                                                  "Actual Startup Time": 8.845,
                                                  "Actual Total Time": 361.268,
                                                  "Actual Rows": 37553,
                                                  "Actual Loops": 1,
                                                  "Output": ["a.attnum", "a.attname", "a.attrelid", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*", "c_1.relname", "c_1.oid", "c_1.relkind", "nc_1.nspname"],
                                                  "Shared Hit Blocks": 2250,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0,
                                                  "Plans": [
                                                    {
                                                      "Node Type": "Hash Join",
                                                      "Parent Relationship": "Outer",
                                                      "Join Type": "Inner",
                                                      "Startup Cost": 1.12,
                                                      "Total Cost": 237.17,
                                                      "Plan Rows": 126,
                                                      "Plan Width": 137,
                                                      "Actual Startup Time": 8.826,
                                                      "Actual Total Time": 10.580,
                                                      "Actual Rows": 354,
                                                      "Actual Loops": 1,
                                                      "Output": ["c_1.relname", "c_1.oid", "c_1.relowner", "c_1.relkind", "nc_1.nspname"],
                                                      "Hash Cond": "(c_1.relnamespace = nc_1.oid)",
                                                      "Shared Hit Blocks": 183,
                                                      "Shared Read Blocks": 0,
                                                      "Shared Dirtied Blocks": 0,
                                                      "Shared Written Blocks": 0,
                                                      "Local Hit Blocks": 0,
                                                      "Local Read Blocks": 0,
                                                      "Local Dirtied Blocks": 0,
                                                      "Local Written Blocks": 0,
                                                      "Temp Read Blocks": 0,
                                                      "Temp Written Blocks": 0,
                                                      "Plans": [
                                                        {
                                                          "Node Type": "Seq Scan",
                                                          "Parent Relationship": "Outer",
                                                          "Relation Name": "pg_class",
                                                          "Schema": "pg_catalog",
                                                          "Alias": "c_1",
                                                          "Startup Cost": 0.00,
                                                          "Total Cost": 231.49,
                                                          "Plan Rows": 883,
                                                          "Plan Width": 77,
                                                          "Actual Startup Time": 0.003,
                                                          "Actual Total Time": 9.807,
                                                          "Actual Rows": 885,
                                                          "Actual Loops": 1,
                                                          "Output": ["c_1.relname", "c_1.relnamespace", "c_1.oid", "c_1.relowner", "c_1.relkind"],
                                                          "Filter": "(c_1.relkind = ANY ('{r,v,f}'::\"char\"[]))",
                                                          "Rows Removed by Filter": 2719,
                                                          "Shared Hit Blocks": 182,
                                                          "Shared Read Blocks": 0,
                                                          "Shared Dirtied Blocks": 0,
                                                          "Shared Written Blocks": 0,
                                                          "Local Hit Blocks": 0,
                                                          "Local Read Blocks": 0,
                                                          "Local Dirtied Blocks": 0,
                                                          "Local Written Blocks": 0,
                                                          "Temp Read Blocks": 0,
                                                          "Temp Written Blocks": 0
                                                        },
                                                        {
                                                          "Node Type": "Hash",
                                                          "Parent Relationship": "Inner",
                                                          "Startup Cost": 1.10,
                                                          "Total Cost": 1.10,
                                                          "Plan Rows": 1,
                                                          "Plan Width": 68,
                                                          "Actual Startup Time": 0.011,
                                                          "Actual Total Time": 0.011,
                                                          "Actual Rows": 1,
                                                          "Actual Loops": 1,
                                                          "Output": ["nc_1.oid", "nc_1.nspname"],
                                                          "Hash Buckets": 1024,
                                                          "Original Hash Buckets": 1024,
                                                          "Hash Batches": 1,
                                                          "Original Hash Batches": 1,
                                                          "Peak Memory Usage": 9,
                                                          "Shared Hit Blocks": 1,
                                                          "Shared Read Blocks": 0,
                                                          "Shared Dirtied Blocks": 0,
                                                          "Shared Written Blocks": 0,
                                                          "Local Hit Blocks": 0,
                                                          "Local Read Blocks": 0,
                                                          "Local Dirtied Blocks": 0,
                                                          "Local Written Blocks": 0,
                                                          "Temp Read Blocks": 0,
                                                          "Temp Written Blocks": 0,
                                                          "Plans": [
                                                            {
                                                              "Node Type": "Seq Scan",
                                                              "Parent Relationship": "Outer",
                                                              "Relation Name": "pg_namespace",
                                                              "Schema": "pg_catalog",
                                                              "Alias": "nc_1",
                                                              "Startup Cost": 0.00,
                                                              "Total Cost": 1.10,
                                                              "Plan Rows": 1,
                                                              "Plan Width": 68,
                                                              "Actual Startup Time": 0.007,
                                                              "Actual Total Time": 0.009,
                                                              "Actual Rows": 1,
                                                              "Actual Loops": 1,
                                                              "Output": ["nc_1.oid", "nc_1.nspname"],
                                                              "Filter": "((NOT pg_is_other_temp_schema(nc_1.oid)) AND (((nc_1.nspname)::information_schema.sql_identifier)::text = 'tabular'::text))",
                                                              "Rows Removed by Filter": 9,
                                                              "Shared Hit Blocks": 1,
                                                              "Shared Read Blocks": 0,
                                                              "Shared Dirtied Blocks": 0,
                                                              "Shared Written Blocks": 0,
                                                              "Local Hit Blocks": 0,
                                                              "Local Read Blocks": 0,
                                                              "Local Dirtied Blocks": 0,
                                                              "Local Written Blocks": 0,
                                                              "Temp Read Blocks": 0,
                                                              "Temp Written Blocks": 0
                                                            }
                                                          ]
                                                        }
                                                      ]
                                                    },
                                                    {
                                                      "Node Type": "Index Scan",
                                                      "Parent Relationship": "Inner",
                                                      "Scan Direction": "Forward",
                                                      "Index Name": "pg_attribute_relid_attnum_index",
                                                      "Relation Name": "pg_attribute",
                                                      "Schema": "pg_catalog",
                                                      "Alias": "a",
                                                      "Startup Cost": 0.29,
                                                      "Total Cost": 5.53,
                                                      "Plan Rows": 10,
                                                      "Plan Width": 306,
                                                      "Actual Startup Time": 0.034,
                                                      "Actual Total Time": 0.655,
                                                      "Actual Rows": 106,
                                                      "Actual Loops": 354,
                                                      "Output": ["a.attnum", "a.attname", "a.attrelid", "a.atttypid", "a.attcollation", "a.attnotnull", "a.*"],
                                                      "Index Cond": "((a.attrelid = c_1.oid) AND (a.attnum > 0))",
                                                      "Rows Removed by Index Recheck": 0,
                                                      "Filter": "((NOT a.attisdropped) AND (pg_has_role(c_1.relowner, 'USAGE'::text) OR has_column_privilege(c_1.oid, a.attnum, 'SELECT, INSERT, UPDATE, REFERENCES'::text)))",
                                                      "Rows Removed by Filter": 0,
                                                      "Shared Hit Blocks": 2067,
                                                      "Shared Read Blocks": 0,
                                                      "Shared Dirtied Blocks": 0,
                                                      "Shared Written Blocks": 0,
                                                      "Local Hit Blocks": 0,
                                                      "Local Read Blocks": 0,
                                                      "Local Dirtied Blocks": 0,
                                                      "Local Written Blocks": 0,
                                                      "Temp Read Blocks": 0,
                                                      "Temp Written Blocks": 0
                                                    }
                                                  ]
                                                },
                                                {
                                                  "Node Type": "Hash",
                                                  "Parent Relationship": "Inner",
                                                  "Startup Cost": 102.76,
                                                  "Total Cost": 102.76,
                                                  "Plan Rows": 3176,
                                                  "Plan Width": 862,
                                                  "Actual Startup Time": 17.076,
                                                  "Actual Total Time": 17.076,
                                                  "Actual Rows": 3092,
                                                  "Actual Loops": 1,
                                                  "Output": ["t_1.typnamespace", "t_1.oid", "t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname"],
                                                  "Hash Buckets": 4096,
                                                  "Original Hash Buckets": 4096,
                                                  "Hash Batches": 1,
                                                  "Original Hash Batches": 1,
                                                  "Peak Memory Usage": 939,
                                                  "Shared Hit Blocks": 71,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0,
                                                  "Plans": [
                                                    {
                                                      "Node Type": "Seq Scan",
                                                      "Parent Relationship": "Outer",
                                                      "Relation Name": "pg_type",
                                                      "Schema": "pg_catalog",
                                                      "Alias": "t_1",
                                                      "Startup Cost": 0.00,
                                                      "Total Cost": 102.76,
                                                      "Plan Rows": 3176,
                                                      "Plan Width": 862,
                                                      "Actual Startup Time": 0.009,
                                                      "Actual Total Time": 10.794,
                                                      "Actual Rows": 3092,
                                                      "Actual Loops": 1,
                                                      "Output": ["t_1.typnamespace", "t_1.oid", "t_1.typtype", "t_1.typbasetype", "t_1.typnotnull", "t_1.typelem", "t_1.typlen", "t_1.*", "t_1.typname"],
                                                      "Shared Hit Blocks": 71,
                                                      "Shared Read Blocks": 0,
                                                      "Shared Dirtied Blocks": 0,
                                                      "Shared Written Blocks": 0,
                                                      "Local Hit Blocks": 0,
                                                      "Local Read Blocks": 0,
                                                      "Local Dirtied Blocks": 0,
                                                      "Local Written Blocks": 0,
                                                      "Temp Read Blocks": 0,
                                                      "Temp Written Blocks": 0
                                                    }
                                                  ]
                                                }
                                              ]
                                            },
                                            {
                                              "Node Type": "Hash",
                                              "Parent Relationship": "Inner",
                                              "Startup Cost": 1.06,
                                              "Total Cost": 1.06,
                                              "Plan Rows": 6,
                                              "Plan Width": 68,
                                              "Actual Startup Time": 0.017,
                                              "Actual Total Time": 0.017,
                                              "Actual Rows": 10,
                                              "Actual Loops": 1,
                                              "Output": ["nt_1.oid", "nt_1.nspname"],
                                              "Hash Buckets": 1024,
                                              "Original Hash Buckets": 1024,
                                              "Hash Batches": 1,
                                              "Original Hash Batches": 1,
                                              "Peak Memory Usage": 9,
                                              "Shared Hit Blocks": 1,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0,
                                              "Plans": [
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "Outer",
                                                  "Relation Name": "pg_namespace",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "nt_1",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.06,
                                                  "Plan Rows": 6,
                                                  "Plan Width": 68,
                                                  "Actual Startup Time": 0.003,
                                                  "Actual Total Time": 0.010,
                                                  "Actual Rows": 10,
                                                  "Actual Loops": 1,
                                                  "Output": ["nt_1.oid", "nt_1.nspname"],
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        {
                                          "Node Type": "Hash",
                                          "Parent Relationship": "Inner",
                                          "Startup Cost": 143.02,
                                          "Total Cost": 143.02,
                                          "Plan Rows": 2722,
                                          "Plan Width": 138,
                                          "Actual Startup Time": 15.637,
                                          "Actual Total Time": 15.637,
                                          "Actual Rows": 3092,
                                          "Actual Loops": 1,
                                          "Output": ["bt.oid", "bt.typelem", "bt.typlen", "bt.typname", "nbt.nspname"],
                                          "Hash Buckets": 4096,
                                          "Original Hash Buckets": 4096,
                                          "Hash Batches": 1,
                                          "Original Hash Batches": 1,
                                          "Peak Memory Usage": 546,
                                          "Shared Hit Blocks": 72,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0,
                                          "Plans": [
                                            {
                                              "Node Type": "Hash Join",
                                              "Parent Relationship": "Outer",
                                              "Join Type": "Inner",
                                              "Startup Cost": 1.14,
                                              "Total Cost": 143.02,
                                              "Plan Rows": 2722,
                                              "Plan Width": 138,
                                              "Actual Startup Time": 0.023,
                                              "Actual Total Time": 13.575,
                                              "Actual Rows": 3092,
                                              "Actual Loops": 1,
                                              "Output": ["bt.oid", "bt.typelem", "bt.typlen", "bt.typname", "nbt.nspname"],
                                              "Hash Cond": "(bt.typnamespace = nbt.oid)",
                                              "Shared Hit Blocks": 72,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0,
                                              "Plans": [
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "Outer",
                                                  "Relation Name": "pg_type",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "bt",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 102.76,
                                                  "Plan Rows": 3176,
                                                  "Plan Width": 78,
                                                  "Actual Startup Time": 0.002,
                                                  "Actual Total Time": 2.047,
                                                  "Actual Rows": 3092,
                                                  "Actual Loops": 1,
                                                  "Output": ["bt.typnamespace", "bt.oid", "bt.typelem", "bt.typlen", "bt.typname"],
                                                  "Shared Hit Blocks": 71,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Hash",
                                                  "Parent Relationship": "Inner",
                                                  "Startup Cost": 1.06,
                                                  "Total Cost": 1.06,
                                                  "Plan Rows": 6,
                                                  "Plan Width": 68,
                                                  "Actual Startup Time": 0.016,
                                                  "Actual Total Time": 0.016,
                                                  "Actual Rows": 10,
                                                  "Actual Loops": 1,
                                                  "Output": ["nbt.oid", "nbt.nspname"],
                                                  "Hash Buckets": 1024,
                                                  "Original Hash Buckets": 1024,
                                                  "Hash Batches": 1,
                                                  "Original Hash Batches": 1,
                                                  "Peak Memory Usage": 9,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0,
                                                  "Plans": [
                                                    {
                                                      "Node Type": "Seq Scan",
                                                      "Parent Relationship": "Outer",
                                                      "Relation Name": "pg_namespace",
                                                      "Schema": "pg_catalog",
                                                      "Alias": "nbt",
                                                      "Startup Cost": 0.00,
                                                      "Total Cost": 1.06,
                                                      "Plan Rows": 6,
                                                      "Plan Width": 68,
                                                      "Actual Startup Time": 0.003,
                                                      "Actual Total Time": 0.009,
                                                      "Actual Rows": 10,
                                                      "Actual Loops": 1,
                                                      "Output": ["nbt.oid", "nbt.nspname"],
                                                      "Shared Hit Blocks": 1,
                                                      "Shared Read Blocks": 0,
                                                      "Shared Dirtied Blocks": 0,
                                                      "Shared Written Blocks": 0,
                                                      "Local Hit Blocks": 0,
                                                      "Local Read Blocks": 0,
                                                      "Local Dirtied Blocks": 0,
                                                      "Local Written Blocks": 0,
                                                      "Temp Read Blocks": 0,
                                                      "Temp Written Blocks": 0
                                                    }
                                                  ]
                                                }
                                              ]
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "Node Type": "Hash",
                                      "Parent Relationship": "Inner",
                                      "Startup Cost": 50.19,
                                      "Total Cost": 50.19,
                                      "Plan Rows": 619,
                                      "Plan Width": 444,
                                      "Actual Startup Time": 4.339,
                                      "Actual Total Time": 4.339,
                                      "Actual Rows": 622,
                                      "Actual Loops": 1,
                                      "Output": ["ad.adrelid", "ad.adnum", "ad.adbin"],
                                      "Hash Buckets": 1024,
                                      "Original Hash Buckets": 1024,
                                      "Hash Batches": 1,
                                      "Original Hash Batches": 1,
                                      "Peak Memory Usage": 298,
                                      "Shared Hit Blocks": 44,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Seq Scan",
                                          "Parent Relationship": "Outer",
                                          "Relation Name": "pg_attrdef",
                                          "Schema": "pg_catalog",
                                          "Alias": "ad",
                                          "Startup Cost": 0.00,
                                          "Total Cost": 50.19,
                                          "Plan Rows": 619,
                                          "Plan Width": 444,
                                          "Actual Startup Time": 0.002,
                                          "Actual Total Time": 0.421,
                                          "Actual Rows": 622,
                                          "Actual Loops": 1,
                                          "Output": ["ad.adrelid", "ad.adnum", "ad.adbin"],
                                          "Shared Hit Blocks": 44,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        }
                                      ]
                                    }
                                  ]
                                },
                                {
                                  "Node Type": "Hash",
                                  "Parent Relationship": "Inner",
                                  "Startup Cost": 2.34,
                                  "Total Cost": 2.34,
                                  "Plan Rows": 7,
                                  "Plan Width": 132,
                                  "Actual Startup Time": 0.044,
                                  "Actual Total Time": 0.044,
                                  "Actual Rows": 6,
                                  "Actual Loops": 1,
                                  "Output": ["co.oid", "co.collname", "nco.nspname"],
                                  "Hash Buckets": 1024,
                                  "Original Hash Buckets": 1024,
                                  "Hash Batches": 1,
                                  "Original Hash Batches": 1,
                                  "Peak Memory Usage": 9,
                                  "Shared Hit Blocks": 2,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0,
                                  "Plans": [
                                    {
                                      "Node Type": "Hash Join",
                                      "Parent Relationship": "Outer",
                                      "Join Type": "Inner",
                                      "Startup Cost": 1.14,
                                      "Total Cost": 2.34,
                                      "Plan Rows": 7,
                                      "Plan Width": 132,
                                      "Actual Startup Time": 0.027,
                                      "Actual Total Time": 0.036,
                                      "Actual Rows": 6,
                                      "Actual Loops": 1,
                                      "Output": ["co.oid", "co.collname", "nco.nspname"],
                                      "Hash Cond": "(co.collnamespace = nco.oid)",
                                      "Join Filter": "((nco.nspname <> 'pg_catalog'::name) OR (co.collname <> 'default'::name))",
                                      "Rows Removed by Join Filter": 1,
                                      "Shared Hit Blocks": 2,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Seq Scan",
                                          "Parent Relationship": "Outer",
                                          "Relation Name": "pg_collation",
                                          "Schema": "pg_catalog",
                                          "Alias": "co",
                                          "Startup Cost": 0.00,
                                          "Total Cost": 1.07,
                                          "Plan Rows": 7,
                                          "Plan Width": 72,
                                          "Actual Startup Time": 0.003,
                                          "Actual Total Time": 0.007,
                                          "Actual Rows": 7,
                                          "Actual Loops": 1,
                                          "Output": ["co.collnamespace", "co.oid", "co.collname"],
                                          "Shared Hit Blocks": 1,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        },
                                        {
                                          "Node Type": "Hash",
                                          "Parent Relationship": "Inner",
                                          "Startup Cost": 1.06,
                                          "Total Cost": 1.06,
                                          "Plan Rows": 6,
                                          "Plan Width": 68,
                                          "Actual Startup Time": 0.016,
                                          "Actual Total Time": 0.016,
                                          "Actual Rows": 10,
                                          "Actual Loops": 1,
                                          "Output": ["nco.oid", "nco.nspname"],
                                          "Hash Buckets": 1024,
                                          "Original Hash Buckets": 1024,
                                          "Hash Batches": 1,
                                          "Original Hash Batches": 1,
                                          "Peak Memory Usage": 9,
                                          "Shared Hit Blocks": 1,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0,
                                          "Plans": [
                                            {
                                              "Node Type": "Seq Scan",
                                              "Parent Relationship": "Outer",
                                              "Relation Name": "pg_namespace",
                                              "Schema": "pg_catalog",
                                              "Alias": "nco",
                                              "Startup Cost": 0.00,
                                              "Total Cost": 1.06,
                                              "Plan Rows": 6,
                                              "Plan Width": 68,
                                              "Actual Startup Time": 0.003,
                                              "Actual Total Time": 0.008,
                                              "Actual Rows": 10,
                                              "Actual Loops": 1,
                                              "Output": ["nco.oid", "nco.nspname"],
                                              "Shared Hit Blocks": 1,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0
                                            }
                                          ]
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            },
                            {
                              "Node Type": "Hash",
                              "Parent Relationship": "Inner",
                              "Startup Cost": 771.79,
                              "Total Cost": 771.79,
                              "Plan Rows": 89,
                              "Plan Width": 165,
                              "Actual Startup Time": 40.167,
                              "Actual Total Time": 40.167,
                              "Actual Rows": 354,
                              "Actual Loops": 1,
                              "Output": ["nc.nspname", "nc.oid", "c.relname", "c.relkind", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                              "Hash Buckets": 1024,
                              "Original Hash Buckets": 1024,
                              "Hash Batches": 1,
                              "Original Hash Batches": 1,
                              "Peak Memory Usage": 107,
                              "Shared Hit Blocks": 1102,
                              "Shared Read Blocks": 0,
                              "Shared Dirtied Blocks": 0,
                              "Shared Written Blocks": 0,
                              "Local Hit Blocks": 0,
                              "Local Read Blocks": 0,
                              "Local Dirtied Blocks": 0,
                              "Local Written Blocks": 0,
                              "Temp Read Blocks": 0,
                              "Temp Written Blocks": 0,
                              "Plans": [
                                {
                                  "Node Type": "Nested Loop",
                                  "Parent Relationship": "Outer",
                                  "Join Type": "Left",
                                  "Startup Cost": 338.94,
                                  "Total Cost": 771.79,
                                  "Plan Rows": 89,
                                  "Plan Width": 165,
                                  "Actual Startup Time": 23.754,
                                  "Actual Total Time": 39.804,
                                  "Actual Rows": 354,
                                  "Actual Loops": 1,
                                  "Output": ["nc.nspname", "nc.oid", "c.relname", "c.relkind", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                                  "Shared Hit Blocks": 1102,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0,
                                  "Plans": [
                                    {
                                      "Node Type": "Hash Join",
                                      "Parent Relationship": "Outer",
                                      "Join Type": "Left",
                                      "Startup Cost": 338.52,
                                      "Total Cost": 682.37,
                                      "Plan Rows": 89,
                                      "Plan Width": 169,
                                      "Actual Startup Time": 23.744,
                                      "Actual Total Time": 38.140,
                                      "Actual Rows": 354,
                                      "Actual Loops": 1,
                                      "Output": ["nc.nspname", "nc.oid", "c.relname", "c.relkind", "c.reloftype", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                                      "Hash Cond": "((((nc.nspname)::information_schema.sql_identifier)::text = ((nc_2.nspname)::information_schema.sql_identifier)::text) AND (((c.relname)::information_schema.sql_identifier)::text = ((c_2.relname)::information_schema.sql_identifier)::text))",
                                      "Shared Hit Blocks": 394,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Hash Join",
                                          "Parent Relationship": "Outer",
                                          "Join Type": "Inner",
                                          "Startup Cost": 1.12,
                                          "Total Cost": 343.79,
                                          "Plan Rows": 89,
                                          "Plan Width": 137,
                                          "Actual Startup Time": 4.563,
                                          "Actual Total Time": 18.503,
                                          "Actual Rows": 354,
                                          "Actual Loops": 1,
                                          "Output": ["nc.nspname", "nc.oid", "c.relname", "c.relkind", "c.reloftype"],
                                          "Hash Cond": "(c.relnamespace = nc.oid)",
                                          "Shared Hit Blocks": 183,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0,
                                          "Plans": [
                                            {
                                              "Node Type": "Seq Scan",
                                              "Parent Relationship": "Outer",
                                              "Relation Name": "pg_class",
                                              "Schema": "pg_catalog",
                                              "Alias": "c",
                                              "Startup Cost": 0.00,
                                              "Total Cost": 339.46,
                                              "Plan Rows": 621,
                                              "Plan Width": 73,
                                              "Actual Startup Time": 0.014,
                                              "Actual Total Time": 17.814,
                                              "Actual Rows": 885,
                                              "Actual Loops": 1,
                                              "Output": ["c.relname", "c.relnamespace", "c.reltype", "c.reloftype", "c.relowner", "c.relam", "c.relfilenode", "c.reltablespace", "c.relpages", "c.reltuples", "c.relallvisible", "c.reltoastrelid", "c.relhasindex", "c.relisshared", "c.relpersistence", "c.relkind", "c.relnatts", "c.relchecks", "c.relhasoids", "c.relhaspkey", "c.relhasrules", "c.relhastriggers", "c.relhassubclass", "c.relrowsecurity", "c.relforcerowsecurity", "c.relispopulated", "c.relreplident", "c.relfrozenxid", "c.relminmxid", "c.relacl", "c.reloptions"],
                                              "Filter": "((c.relkind = ANY ('{r,v,f}'::\"char\"[])) AND (pg_has_role(c.relowner, 'USAGE'::text) OR has_table_privilege(c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text) OR has_any_column_privilege(c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text)))",
                                              "Rows Removed by Filter": 2719,
                                              "Shared Hit Blocks": 182,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0
                                            },
                                            {
                                              "Node Type": "Hash",
                                              "Parent Relationship": "Inner",
                                              "Startup Cost": 1.10,
                                              "Total Cost": 1.10,
                                              "Plan Rows": 1,
                                              "Plan Width": 68,
                                              "Actual Startup Time": 0.018,
                                              "Actual Total Time": 0.018,
                                              "Actual Rows": 1,
                                              "Actual Loops": 1,
                                              "Output": ["nc.nspname", "nc.oid"],
                                              "Hash Buckets": 1024,
                                              "Original Hash Buckets": 1024,
                                              "Hash Batches": 1,
                                              "Original Hash Batches": 1,
                                              "Peak Memory Usage": 9,
                                              "Shared Hit Blocks": 1,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0,
                                              "Plans": [
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "Outer",
                                                  "Relation Name": "pg_namespace",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "nc",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.10,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 68,
                                                  "Actual Startup Time": 0.013,
                                                  "Actual Total Time": 0.016,
                                                  "Actual Rows": 1,
                                                  "Actual Loops": 1,
                                                  "Output": ["nc.nspname", "nc.oid"],
                                                  "Filter": "((NOT pg_is_other_temp_schema(nc.oid)) AND (((nc.nspname)::information_schema.sql_identifier)::text = 'tabular'::text))",
                                                  "Rows Removed by Filter": 9,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        {
                                          "Node Type": "Hash",
                                          "Parent Relationship": "Inner",
                                          "Startup Cost": 337.21,
                                          "Total Cost": 337.21,
                                          "Plan Rows": 13,
                                          "Plan Width": 160,
                                          "Actual Startup Time": 19.171,
                                          "Actual Total Time": 19.171,
                                          "Actual Rows": 6,
                                          "Actual Loops": 1,
                                          "Output": ["nc_2.nspname", "c_2.relname", "(ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no))"],
                                          "Hash Buckets": 1024,
                                          "Original Hash Buckets": 1024,
                                          "Hash Batches": 1,
                                          "Original Hash Batches": 1,
                                          "Peak Memory Usage": 51,
                                          "Shared Hit Blocks": 211,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0,
                                          "Plans": [
                                            {
                                              "Node Type": "Nested Loop",
                                              "Parent Relationship": "Outer",
                                              "Join Type": "Inner",
                                              "Startup Cost": 0.00,
                                              "Total Cost": 337.21,
                                              "Plan Rows": 13,
                                              "Plan Width": 160,
                                              "Actual Startup Time": 1.501,
                                              "Actual Total Time": 19.149,
                                              "Actual Rows": 6,
                                              "Actual Loops": 1,
                                              "Output": ["nc_2.nspname", "c_2.relname", "ROW((current_database())::information_schema.sql_identifier, (nc_2.nspname)::information_schema.sql_identifier, (c_2.relname)::information_schema.sql_identifier, (CASE WHEN pg_has_role(c_2.relowner, 'USAGE'::text) THEN pg_get_viewdef(c_2.oid) ELSE NULL::text END)::information_schema.character_data, (CASE WHEN ('check_option=cascaded'::text = ANY (c_2.reloptions)) THEN 'CASCADED'::text WHEN ('check_option=local'::text = ANY (c_2.reloptions)) THEN 'LOCAL'::text ELSE 'NONE'::text END)::information_schema.character_data, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 20) = 20) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN ((pg_relation_is_updatable((c_2.oid)::regclass, false) & 8) = 8) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 11 or hashed SubPlan 12) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 13 or hashed SubPlan 14) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no, (CASE WHEN (alternatives: SubPlan 15 or hashed SubPlan 16) THEN 'YES'::text ELSE 'NO'::text END)::information_schema.yes_or_no)"],
                                              "Join Filter": "(nc_2.oid = c_2.relnamespace)",
                                              "Rows Removed by Join Filter": 126,
                                              "Shared Hit Blocks": 211,
                                              "Shared Read Blocks": 0,
                                              "Shared Dirtied Blocks": 0,
                                              "Shared Written Blocks": 0,
                                              "Local Hit Blocks": 0,
                                              "Local Read Blocks": 0,
                                              "Local Dirtied Blocks": 0,
                                              "Local Written Blocks": 0,
                                              "Temp Read Blocks": 0,
                                              "Temp Written Blocks": 0,
                                              "Plans": [
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "Outer",
                                                  "Relation Name": "pg_namespace",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "nc_2",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.10,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 68,
                                                  "Actual Startup Time": 0.008,
                                                  "Actual Total Time": 0.011,
                                                  "Actual Rows": 1,
                                                  "Actual Loops": 1,
                                                  "Output": ["nc_2.oid", "nc_2.nspname"],
                                                  "Filter": "((NOT pg_is_other_temp_schema(nc_2.oid)) AND (((nc_2.nspname)::information_schema.sql_identifier)::text = 'tabular'::text))",
                                                  "Rows Removed by Filter": 9,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "Inner",
                                                  "Relation Name": "pg_class",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "c_2",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 334.96,
                                                  "Plan Rows": 92,
                                                  "Plan Width": 125,
                                                  "Actual Startup Time": 0.006,
                                                  "Actual Total Time": 0.882,
                                                  "Actual Rows": 132,
                                                  "Actual Loops": 1,
                                                  "Output": ["c_2.relnamespace", "c_2.relname", "c_2.relowner", "c_2.oid", "c_2.reloptions"],
                                                  "Filter": "((c_2.relkind = 'v'::\"char\") AND (pg_has_role(c_2.relowner, 'USAGE'::text) OR has_table_privilege(c_2.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text) OR has_any_column_privilege(c_2.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text)))",
                                                  "Rows Removed by Filter": 3472,
                                                  "Shared Hit Blocks": 182,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 11",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_1",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.50,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 0,
                                                  "Actual Startup Time": 0.000,
                                                  "Actual Total Time": 0.000,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 0,
                                                  "Filter": "((pg_trigger_1.tgrelid = c_2.oid) AND (((pg_trigger_1.tgtype)::integer & 81) = 81))",
                                                  "Rows Removed by Filter": 0,
                                                  "Shared Hit Blocks": 0,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 12",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_2",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.44,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 4,
                                                  "Actual Startup Time": 0.010,
                                                  "Actual Total Time": 0.010,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 1,
                                                  "Output": ["pg_trigger_2.tgrelid"],
                                                  "Filter": "(((pg_trigger_2.tgtype)::integer & 81) = 81)",
                                                  "Rows Removed by Filter": 25,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 13",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_3",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.50,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 0,
                                                  "Actual Startup Time": 0.000,
                                                  "Actual Total Time": 0.000,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 0,
                                                  "Filter": "((pg_trigger_3.tgrelid = c_2.oid) AND (((pg_trigger_3.tgtype)::integer & 73) = 73))",
                                                  "Rows Removed by Filter": 0,
                                                  "Shared Hit Blocks": 0,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 14",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_4",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.44,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 4,
                                                  "Actual Startup Time": 0.006,
                                                  "Actual Total Time": 0.006,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 1,
                                                  "Output": ["pg_trigger_4.tgrelid"],
                                                  "Filter": "(((pg_trigger_4.tgtype)::integer & 73) = 73)",
                                                  "Rows Removed by Filter": 25,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 15",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_5",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.50,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 0,
                                                  "Actual Startup Time": 0.000,
                                                  "Actual Total Time": 0.000,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 0,
                                                  "Filter": "((pg_trigger_5.tgrelid = c_2.oid) AND (((pg_trigger_5.tgtype)::integer & 69) = 69))",
                                                  "Rows Removed by Filter": 0,
                                                  "Shared Hit Blocks": 0,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                },
                                                {
                                                  "Node Type": "Seq Scan",
                                                  "Parent Relationship": "SubPlan",
                                                  "Subplan Name": "SubPlan 16",
                                                  "Relation Name": "pg_trigger",
                                                  "Schema": "pg_catalog",
                                                  "Alias": "pg_trigger_6",
                                                  "Startup Cost": 0.00,
                                                  "Total Cost": 1.44,
                                                  "Plan Rows": 1,
                                                  "Plan Width": 4,
                                                  "Actual Startup Time": 0.007,
                                                  "Actual Total Time": 0.007,
                                                  "Actual Rows": 0,
                                                  "Actual Loops": 1,
                                                  "Output": ["pg_trigger_6.tgrelid"],
                                                  "Filter": "(((pg_trigger_6.tgtype)::integer & 69) = 69)",
                                                  "Rows Removed by Filter": 25,
                                                  "Shared Hit Blocks": 1,
                                                  "Shared Read Blocks": 0,
                                                  "Shared Dirtied Blocks": 0,
                                                  "Shared Written Blocks": 0,
                                                  "Local Hit Blocks": 0,
                                                  "Local Read Blocks": 0,
                                                  "Local Dirtied Blocks": 0,
                                                  "Local Written Blocks": 0,
                                                  "Temp Read Blocks": 0,
                                                  "Temp Written Blocks": 0
                                                }
                                              ]
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    {
                                      "Node Type": "Nested Loop",
                                      "Parent Relationship": "Inner",
                                      "Join Type": "Inner",
                                      "Startup Cost": 0.41,
                                      "Total Cost": 0.99,
                                      "Plan Rows": 1,
                                      "Plan Width": 4,
                                      "Actual Startup Time": 0.003,
                                      "Actual Total Time": 0.003,
                                      "Actual Rows": 0,
                                      "Actual Loops": 354,
                                      "Output": ["t.oid"],
                                      "Shared Hit Blocks": 708,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Index Scan",
                                          "Parent Relationship": "Outer",
                                          "Scan Direction": "Forward",
                                          "Index Name": "pg_type_oid_index",
                                          "Relation Name": "pg_type",
                                          "Schema": "pg_catalog",
                                          "Alias": "t",
                                          "Startup Cost": 0.28,
                                          "Total Cost": 0.83,
                                          "Plan Rows": 1,
                                          "Plan Width": 8,
                                          "Actual Startup Time": 0.002,
                                          "Actual Total Time": 0.002,
                                          "Actual Rows": 0,
                                          "Actual Loops": 354,
                                          "Output": ["t.typnamespace", "t.oid"],
                                          "Index Cond": "(c.reloftype = t.oid)",
                                          "Rows Removed by Index Recheck": 0,
                                          "Shared Hit Blocks": 708,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        },
                                        {
                                          "Node Type": "Index Only Scan",
                                          "Parent Relationship": "Inner",
                                          "Scan Direction": "Forward",
                                          "Index Name": "pg_namespace_oid_index",
                                          "Relation Name": "pg_namespace",
                                          "Schema": "pg_catalog",
                                          "Alias": "nt",
                                          "Startup Cost": 0.13,
                                          "Total Cost": 0.15,
                                          "Plan Rows": 1,
                                          "Plan Width": 4,
                                          "Actual Startup Time": 0.000,
                                          "Actual Total Time": 0.000,
                                          "Actual Rows": 0,
                                          "Actual Loops": 0,
                                          "Output": ["nt.oid"],
                                          "Index Cond": "(nt.oid = t.typnamespace)",
                                          "Rows Removed by Index Recheck": 0,
                                          "Heap Fetches": 0,
                                          "Shared Hit Blocks": 0,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        }
                                      ]
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "Node Type": "Hash",
                          "Parent Relationship": "Inner",
                          "Startup Cost": 9.85,
                          "Total Cost": 9.85,
                          "Plan Rows": 3,
                          "Plan Width": 224,
                          "Actual Startup Time": 0.032,
                          "Actual Total Time": 0.032,
                          "Actual Rows": 0,
                          "Actual Loops": 1,
                          "Output": ["n.nspname", "c_3.relname", "t_2.tgname", "(ROW((current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (t_2.tgname)::information_schema.sql_identifier, (\"*VALUES*\".column2)::information_schema.character_data, (current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (c_3.relname)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (CASE WHEN pg_has_role(c_3.relowner, 'USAGE'::text) THEN (SubPlan 3) ELSE NULL::text END)::information_schema.character_data, (\"substring\"(pg_get_triggerdef(t_2.oid), (\"position\"(\"substring\"(pg_get_triggerdef(t_2.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)))::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 1) WHEN 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END)::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 66) WHEN 2 THEN 'BEFORE'::text WHEN 64 THEN 'INSTEAD OF'::text ELSE 'AFTER'::text END)::information_schema.character_data, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::timestamp(2) with time zone)::information_schema.time_stamp))"],
                          "Hash Buckets": 1024,
                          "Original Hash Buckets": 1024,
                          "Hash Batches": 1,
                          "Original Hash Batches": 1,
                          "Peak Memory Usage": 8,
                          "Shared Hit Blocks": 6,
                          "Shared Read Blocks": 0,
                          "Shared Dirtied Blocks": 0,
                          "Shared Written Blocks": 0,
                          "Local Hit Blocks": 0,
                          "Local Read Blocks": 0,
                          "Local Dirtied Blocks": 0,
                          "Local Written Blocks": 0,
                          "Temp Read Blocks": 0,
                          "Temp Written Blocks": 0,
                          "Plans": [
                            {
                              "Node Type": "Nested Loop",
                              "Parent Relationship": "Outer",
                              "Join Type": "Inner",
                              "Startup Cost": 0.41,
                              "Total Cost": 9.85,
                              "Plan Rows": 3,
                              "Plan Width": 224,
                              "Actual Startup Time": 0.031,
                              "Actual Total Time": 0.031,
                              "Actual Rows": 0,
                              "Actual Loops": 1,
                              "Output": ["n.nspname", "c_3.relname", "t_2.tgname", "ROW((current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (t_2.tgname)::information_schema.sql_identifier, (\"*VALUES*\".column2)::information_schema.character_data, (current_database())::information_schema.sql_identifier, (n.nspname)::information_schema.sql_identifier, (c_3.relname)::information_schema.sql_identifier, (NULL::integer)::information_schema.cardinal_number, (CASE WHEN pg_has_role(c_3.relowner, 'USAGE'::text) THEN (SubPlan 3) ELSE NULL::text END)::information_schema.character_data, (\"substring\"(pg_get_triggerdef(t_2.oid), (\"position\"(\"substring\"(pg_get_triggerdef(t_2.oid), 48), 'EXECUTE PROCEDURE'::text) + 47)))::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 1) WHEN 1 THEN 'ROW'::text ELSE 'STATEMENT'::text END)::information_schema.character_data, (CASE ((t_2.tgtype)::integer & 66) WHEN 2 THEN 'BEFORE'::text WHEN 64 THEN 'INSTEAD OF'::text ELSE 'AFTER'::text END)::information_schema.character_data, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::character varying)::information_schema.sql_identifier, (NULL::timestamp(2) with time zone)::information_schema.time_stamp)"],
                              "Join Filter": "(((t_2.tgtype)::integer & \"*VALUES*\".column1) <> 0)",
                              "Rows Removed by Join Filter": 0,
                              "Shared Hit Blocks": 6,
                              "Shared Read Blocks": 0,
                              "Shared Dirtied Blocks": 0,
                              "Shared Written Blocks": 0,
                              "Local Hit Blocks": 0,
                              "Local Read Blocks": 0,
                              "Local Dirtied Blocks": 0,
                              "Local Written Blocks": 0,
                              "Temp Read Blocks": 0,
                              "Temp Written Blocks": 0,
                              "Plans": [
                                {
                                  "Node Type": "Nested Loop",
                                  "Parent Relationship": "Outer",
                                  "Join Type": "Inner",
                                  "Startup Cost": 0.41,
                                  "Total Cost": 9.76,
                                  "Plan Rows": 1,
                                  "Plan Width": 202,
                                  "Actual Startup Time": 0.030,
                                  "Actual Total Time": 0.030,
                                  "Actual Rows": 0,
                                  "Actual Loops": 1,
                                  "Output": ["n.nspname", "c_3.relname", "c_3.relowner", "t_2.tgname", "t_2.tgtype", "t_2.oid"],
                                  "Shared Hit Blocks": 6,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0,
                                  "Plans": [
                                    {
                                      "Node Type": "Nested Loop",
                                      "Parent Relationship": "Outer",
                                      "Join Type": "Inner",
                                      "Startup Cost": 0.28,
                                      "Total Cost": 9.59,
                                      "Plan Rows": 1,
                                      "Plan Width": 142,
                                      "Actual Startup Time": 0.018,
                                      "Actual Total Time": 0.021,
                                      "Actual Rows": 1,
                                      "Actual Loops": 1,
                                      "Output": ["c_3.relnamespace", "c_3.relname", "c_3.relowner", "t_2.tgname", "t_2.tgtype", "t_2.oid"],
                                      "Shared Hit Blocks": 4,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0,
                                      "Plans": [
                                        {
                                          "Node Type": "Seq Scan",
                                          "Parent Relationship": "Outer",
                                          "Relation Name": "pg_trigger",
                                          "Schema": "pg_catalog",
                                          "Alias": "t_2",
                                          "Startup Cost": 0.00,
                                          "Total Cost": 1.25,
                                          "Plan Rows": 1,
                                          "Plan Width": 74,
                                          "Actual Startup Time": 0.006,
                                          "Actual Total Time": 0.008,
                                          "Actual Rows": 1,
                                          "Actual Loops": 1,
                                          "Output": ["t_2.tgname", "t_2.tgrelid", "t_2.tgtype", "t_2.oid"],
                                          "Filter": "(NOT t_2.tgisinternal)",
                                          "Rows Removed by Filter": 24,
                                          "Shared Hit Blocks": 1,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        },
                                        {
                                          "Node Type": "Index Scan",
                                          "Parent Relationship": "Inner",
                                          "Scan Direction": "Forward",
                                          "Index Name": "pg_class_oid_index",
                                          "Relation Name": "pg_class",
                                          "Schema": "pg_catalog",
                                          "Alias": "c_3",
                                          "Startup Cost": 0.28,
                                          "Total Cost": 8.33,
                                          "Plan Rows": 1,
                                          "Plan Width": 76,
                                          "Actual Startup Time": 0.009,
                                          "Actual Total Time": 0.010,
                                          "Actual Rows": 1,
                                          "Actual Loops": 1,
                                          "Output": ["c_3.relnamespace", "c_3.oid", "c_3.relname", "c_3.relowner"],
                                          "Index Cond": "(c_3.oid = t_2.tgrelid)",
                                          "Rows Removed by Index Recheck": 0,
                                          "Filter": "(pg_has_role(c_3.relowner, 'USAGE'::text) OR has_table_privilege(c_3.oid, 'INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text) OR has_any_column_privilege(c_3.oid, 'INSERT, UPDATE, REFERENCES'::text))",
                                          "Rows Removed by Filter": 0,
                                          "Shared Hit Blocks": 3,
                                          "Shared Read Blocks": 0,
                                          "Shared Dirtied Blocks": 0,
                                          "Shared Written Blocks": 0,
                                          "Local Hit Blocks": 0,
                                          "Local Read Blocks": 0,
                                          "Local Dirtied Blocks": 0,
                                          "Local Written Blocks": 0,
                                          "Temp Read Blocks": 0,
                                          "Temp Written Blocks": 0
                                        }
                                      ]
                                    },
                                    {
                                      "Node Type": "Index Scan",
                                      "Parent Relationship": "Inner",
                                      "Scan Direction": "Forward",
                                      "Index Name": "pg_namespace_oid_index",
                                      "Relation Name": "pg_namespace",
                                      "Schema": "pg_catalog",
                                      "Alias": "n",
                                      "Startup Cost": 0.13,
                                      "Total Cost": 0.16,
                                      "Plan Rows": 1,
                                      "Plan Width": 68,
                                      "Actual Startup Time": 0.005,
                                      "Actual Total Time": 0.005,
                                      "Actual Rows": 0,
                                      "Actual Loops": 1,
                                      "Output": ["n.oid", "n.nspname"],
                                      "Index Cond": "(n.oid = c_3.relnamespace)",
                                      "Rows Removed by Index Recheck": 0,
                                      "Filter": "((NOT pg_is_other_temp_schema(n.oid)) AND (((n.nspname)::information_schema.sql_identifier)::text = 'tabular'::text))",
                                      "Rows Removed by Filter": 1,
                                      "Shared Hit Blocks": 2,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0
                                    }
                                  ]
                                },
                                {
                                  "Node Type": "Values Scan",
                                  "Parent Relationship": "Inner",
                                  "Alias": "*VALUES*",
                                  "Startup Cost": 0.00,
                                  "Total Cost": 0.04,
                                  "Plan Rows": 3,
                                  "Plan Width": 36,
                                  "Actual Startup Time": 0.000,
                                  "Actual Total Time": 0.000,
                                  "Actual Rows": 0,
                                  "Actual Loops": 0,
                                  "Output": ["\"*VALUES*\".column1", "\"*VALUES*\".column2"],
                                  "Shared Hit Blocks": 0,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0
                                },
                                {
                                  "Node Type": "Limit",
                                  "Parent Relationship": "SubPlan",
                                  "Subplan Name": "SubPlan 3",
                                  "Startup Cost": 0.01,
                                  "Total Cost": 0.01,
                                  "Plan Rows": 1,
                                  "Plan Width": 32,
                                  "Actual Startup Time": 0.000,
                                  "Actual Total Time": 0.000,
                                  "Actual Rows": 0,
                                  "Actual Loops": 0,
                                  "Output": ["(rm.m[1])"],
                                  "Shared Hit Blocks": 0,
                                  "Shared Read Blocks": 0,
                                  "Shared Dirtied Blocks": 0,
                                  "Shared Written Blocks": 0,
                                  "Local Hit Blocks": 0,
                                  "Local Read Blocks": 0,
                                  "Local Dirtied Blocks": 0,
                                  "Local Written Blocks": 0,
                                  "Temp Read Blocks": 0,
                                  "Temp Written Blocks": 0,
                                  "Plans": [
                                    {
                                      "Node Type": "Function Scan",
                                      "Parent Relationship": "Outer",
                                      "Function Name": "regexp_matches",
                                      "Schema": "pg_catalog",
                                      "Alias": "rm",
                                      "Startup Cost": 0.01,
                                      "Total Cost": 0.01,
                                      "Plan Rows": 1,
                                      "Plan Width": 32,
                                      "Actual Startup Time": 0.000,
                                      "Actual Total Time": 0.000,
                                      "Actual Rows": 0,
                                      "Actual Loops": 0,
                                      "Output": ["rm.m[1]"],
                                      "Function Call": "regexp_matches(pg_get_triggerdef(t_2.oid), '.{35,} WHEN \\((.+)\\) EXECUTE PROCEDURE'::text)",
                                      "Shared Hit Blocks": 0,
                                      "Shared Read Blocks": 0,
                                      "Shared Dirtied Blocks": 0,
                                      "Shared Written Blocks": 0,
                                      "Local Hit Blocks": 0,
                                      "Local Read Blocks": 0,
                                      "Local Dirtied Blocks": 0,
                                      "Local Written Blocks": 0,
                                      "Temp Read Blocks": 0,
                                      "Temp Written Blocks": 0
                                    }
                                  ]
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "Node Type": "Index Scan",
                  "Parent Relationship": "SubPlan",
                  "Subplan Name": "SubPlan 2",
                  "Scan Direction": "Forward",
                  "Index Name": "pg_class_oid_index",
                  "Relation Name": "pg_class",
                  "Schema": "pg_catalog",
                  "Alias": "c_4",
                  "Startup Cost": 0.31,
                  "Total Cost": 8.58,
                  "Plan Rows": 1,
                  "Plan Width": 4,
                  "Actual Startup Time": 0.033,
                  "Actual Total Time": 0.034,
                  "Actual Rows": 1,
                  "Actual Loops": 37553,
                  "Output": ["col_description(c_4.oid, ((a.attnum)::information_schema.cardinal_number)::integer)"],
                  "Index Cond": "(c_4.oid = $3)",
                  "Rows Removed by Index Recheck": 0,
                  "Filter": "(c_4.relname = ((c_1.relname)::information_schema.sql_identifier)::name)",
                  "Rows Removed by Filter": 0,
                  "Shared Hit Blocks": 188362,
                  "Shared Read Blocks": 0,
                  "Shared Dirtied Blocks": 0,
                  "Shared Written Blocks": 0,
                  "Local Hit Blocks": 0,
                  "Local Read Blocks": 0,
                  "Local Dirtied Blocks": 0,
                  "Local Written Blocks": 0,
                  "Temp Read Blocks": 0,
                  "Temp Written Blocks": 0,
                  "Plans": [
                    {
                      "Node Type": "Result",
                      "Parent Relationship": "InitPlan",
                      "Subplan Name": "InitPlan 1 (returns $3)",
                      "Startup Cost": 0.00,
                      "Total Cost": 0.03,
                      "Plan Rows": 1,
                      "Plan Width": 0,
                      "Actual Startup Time": 0.009,
                      "Actual Total Time": 0.010,
                      "Actual Rows": 1,
                      "Actual Loops": 37553,
                      "Output": ["((((quote_ident(((nc.nspname)::information_schema.sql_identifier)::text) || '.'::text) || quote_ident(((c.relname)::information_schema.sql_identifier)::text)))::regclass)::oid"],
                      "Shared Hit Blocks": 0,
                      "Shared Read Blocks": 0,
                      "Shared Dirtied Blocks": 0,
                      "Shared Written Blocks": 0,
                      "Local Hit Blocks": 0,
                      "Local Read Blocks": 0,
                      "Local Dirtied Blocks": 0,
                      "Local Written Blocks": 0,
                      "Temp Read Blocks": 0,
                      "Temp Written Blocks": 0
                    }
                  ]
                },
                {
                  "Node Type": "Nested Loop",
                  "Parent Relationship": "SubPlan",
                  "Subplan Name": "SubPlan 4",
                  "Join Type": "Inner",
                  "Startup Cost": 0.28,
                  "Total Cost": 9.75,
                  "Plan Rows": 1,
                  "Plan Width": 44,
                  "Actual Startup Time": 0.000,
                  "Actual Total Time": 0.000,
                  "Actual Rows": 0,
                  "Actual Loops": 0,
                  "Output": ["pg_description.description"],
                  "Shared Hit Blocks": 0,
                  "Shared Read Blocks": 0,
                  "Shared Dirtied Blocks": 0,
                  "Shared Written Blocks": 0,
                  "Local Hit Blocks": 0,
                  "Local Read Blocks": 0,
                  "Local Dirtied Blocks": 0,
                  "Local Written Blocks": 0,
                  "Temp Read Blocks": 0,
                  "Temp Written Blocks": 0,
                  "Plans": [
                    {
                      "Node Type": "Seq Scan",
                      "Parent Relationship": "Outer",
                      "Relation Name": "pg_trigger",
                      "Schema": "pg_catalog",
                      "Alias": "pg_trigger",
                      "Startup Cost": 0.00,
                      "Total Cost": 1.44,
                      "Plan Rows": 1,
                      "Plan Width": 4,
                      "Actual Startup Time": 0.000,
                      "Actual Total Time": 0.000,
                      "Actual Rows": 0,
                      "Actual Loops": 0,
                      "Output": ["pg_trigger.oid"],
                      "Filter": "(pg_trigger.tgname = ((t_2.tgname)::information_schema.sql_identifier)::name)",
                      "Rows Removed by Filter": 0,
                      "Shared Hit Blocks": 0,
                      "Shared Read Blocks": 0,
                      "Shared Dirtied Blocks": 0,
                      "Shared Written Blocks": 0,
                      "Local Hit Blocks": 0,
                      "Local Read Blocks": 0,
                      "Local Dirtied Blocks": 0,
                      "Local Written Blocks": 0,
                      "Temp Read Blocks": 0,
                      "Temp Written Blocks": 0
                    },
                    {
                      "Node Type": "Index Scan",
                      "Parent Relationship": "Inner",
                      "Scan Direction": "Forward",
                      "Index Name": "pg_description_o_c_o_index",
                      "Relation Name": "pg_description",
                      "Schema": "pg_catalog",
                      "Alias": "pg_description",
                      "Startup Cost": 0.28,
                      "Total Cost": 8.30,
                      "Plan Rows": 1,
                      "Plan Width": 48,
                      "Actual Startup Time": 0.000,
                      "Actual Total Time": 0.000,
                      "Actual Rows": 0,
                      "Actual Loops": 0,
                      "Output": ["pg_description.objoid", "pg_description.classoid", "pg_description.objsubid", "pg_description.description"],
                      "Index Cond": "(pg_description.objoid = pg_trigger.oid)",
                      "Rows Removed by Index Recheck": 0,
                      "Shared Hit Blocks": 0,
                      "Shared Read Blocks": 0,
                      "Shared Dirtied Blocks": 0,
                      "Shared Written Blocks": 0,
                      "Local Hit Blocks": 0,
                      "Local Read Blocks": 0,
                      "Local Dirtied Blocks": 0,
                      "Local Written Blocks": 0,
                      "Temp Read Blocks": 0,
                      "Temp Written Blocks": 0
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "Planning Time": 14.736,
    "Triggers": [
    ],
    "Execution Time": 17263.893
  }
]

Also really exercising the DB by adding lots of tables. I.E.

curl 'http://127.0.0.1:8080/v1/query' \
-XPOST \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
--data-binary '{"type":"bulk","args":[{"type":"add_existing_table_or_view","args":{"name":"_datakeys_bg10","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"_datakeys_ct10","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"_datakeys_muni351","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001a_whi_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001b_aa_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001b_aa_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001c_na_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001c_na_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001d_as_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001d_as_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001e_pi_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001e_pi_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001f_oth_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001f_oth_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001g_mlt_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001g_mlt_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001h_nhw_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001h_nhw_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001i_lat_population_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01001i_lat_population_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01002_med_age_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01002_med_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b01002_med_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b03002_race_ethnicity_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b03002_race_ethnicity_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b03002_race_ethnicity_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b04006_reported_ancestry_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b04006_reported_ancestry_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05002_citizenship_nativity_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05002_citizenship_nativity_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05002_place_of_birth_citizenship_nativity_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05002_place_of_birth_citizenship_nativity_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05003_citizenship_nativity_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05003_citizenship_nativity_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05011_naturalization_by_year_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b05011_naturalization_by_year_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b06009_educational_attainment_by_placeofbirth_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b06009_educational_attainment_by_placeofbirth_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07001_geomobility_in_migration_by_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07001_geomobility_in_migration_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07204_geomobility_in_migration_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07204_geomobility_in_migration_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07401_geomobility_out_migration_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b07403_geomobility_out_migration_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08006_means_transportation_to_work_by_residence_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08006_means_transportation_to_work_by_residence_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08101_means_transportation_to_work_by_residence_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08101_means_transportation_to_work_by_residence_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08105_means_transportation_to_work_by_residence_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08105_means_transportation_to_work_by_residence_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08134_means_by_traveltime_to_work_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08134_means_by_traveltime_to_work_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08134_means_by_traveltime_to_work_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08135_agg_traveltime_to_work_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08135_agg_traveltime_to_work_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08201_hhsize_by_vehicles_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08201_hhsize_by_vehicles_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08301_means_transportation_to_work_by_residence_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08301_means_transportation_to_work_by_residence_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08301_means_transportation_to_work_by_residence_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08303_traveltime_to_work_by_residence_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08303_traveltime_to_work_by_residence_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08303_traveltime_to_work_by_residence_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08601_means_transportation_to_work_by_workplace_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b08603_traveltime_to_work_by_placeofwork_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b10059_grandparents_grandkids_by_poverty_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b10059_grandparents_grandkids_by_poverty_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11005_hh_with_kids_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11005_hh_with_kids_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11005_hh_with_kids_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11007_hh_with_seniors_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11007_hh_with_seniors_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11007_hh_with_seniors_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11009_unmarried_partners_hh_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b11009_unmarried_partners_hh_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b15001_educational_attainment_by_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b15001_educational_attainment_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b15002_educational_attainment_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b15002_educational_attainment_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b15002_educational_attainment_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b16004_home_language_english_ability_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b16004_home_language_english_ability_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b16004_home_language_english_ability_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b16005_nativity_english_ability_by_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b16005_nativity_english_ability_by_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17001_poverty_by_age_gender_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17001_poverty_by_age_gender_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17001_poverty_by_population_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17001_poverty_by_population_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17006_child_poverty_by_familytype_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17006_child_poverty_by_familytype_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17010_families_with_children_in_poverty_race_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17010_families_with_children_in_poverty_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17010_families_with_children_in_poverty_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17017_poverty_by_hh_type_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17017_poverty_by_hh_type_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17017_poverty_by_hh_type_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17020_poverty_by_race_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17020_poverty_by_race_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17026_income_to_poverty_by_families_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b17026_income_to_poverty_by_families_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101_disability_by_gender_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101_disability_by_gender_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101_thru_b18107_disability_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101_thru_b18107_disability_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101ai_disability_by_age_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18101ai_disability_by_age_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18135_health_insurance_by_disability_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18135_health_insurance_by_disability_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18140_median_earning_by_disability_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b18140_median_earning_by_disability_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19001_hh_income_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19001_hh_income_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19001_hh_income_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19001_hh_income_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19001_hh_income_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_b19113_b19202_mhi_fam_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_b19113_b19202_mhi_fam_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_b19113_b19202_mhi_fam_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_mhi_race_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_mhi_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19013_mhi_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19037_hh_income_by_age_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19037_hh_income_by_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19037_hh_income_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19037_hh_income_by_age_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19037_hh_income_by_age_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19058_public_assist_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19058_public_assist_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19083_gini_index_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19083_gini_index_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19301_per_capita_income_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19301_per_capita_income_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b19301_per_capita_income_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22001_hh_foodstamps_snap_60yrs_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22001_hh_foodstamps_snap_60yrs_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22002_hh_foodstamps_snap_hhtype_kids_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22002_hh_foodstamps_snap_hhtype_kids_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22003_b22005_hh_foodstamps_snap_by_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22003_b22005_hh_foodstamps_snap_by_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22007_fam_foodstamps_snap_famtype_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22007_fam_foodstamps_snap_famtype_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22008_mhi_foodstamps_snap_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b22008_mhi_foodstamps_snap_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b23006_educational_attainment_by_laborforce_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b23006_educational_attainment_by_laborforce_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b23025_employment_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b23025_employment_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b23025_employment_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25002_b25003_hu_occupancy_by_tenure_race_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25002_b25003_hu_occupancy_by_tenure_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25002_b25003_hu_occupancy_by_tenure_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25007_hh_tenure_by_age_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25007_hh_tenure_by_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25007_hh_tenure_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25010_avg_hhsize_by_tenure_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25010_avg_hhsize_by_tenure_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25010_avg_hhsize_by_tenure_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25024_hu_units_in_structure_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25024_hu_units_in_structure_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25024_hu_units_in_structure_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25031_median_rent_by_bedrooms_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25031_median_rent_by_bedrooms_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25032_hu_tenure_by_units_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25032_hu_tenure_by_units_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25032_hu_tenure_by_units_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25044_hu_vehicles_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25044_hu_vehicles_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25044_hu_vehicles_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25046_b25044_b01003_hh_vehicle_ownership_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25056_b25058_contract_rent_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25056_b25058_contract_rent_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25056_b25058_contract_rent_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25063_b25064_b25065_rent_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25063_b25064_b25065_rent_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25063_b25064_b25065_rent_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25065_b25066_aggregate_rent_by_units_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25065_b25066_aggregate_rent_by_units_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25072_b25093_costburden_by_age_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25072_b25093_costburden_by_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25072_b25093_costburden_by_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25074_costburden_renters_by_income_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25074_costburden_renters_by_income_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25074_costburden_renters_by_income_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25081_b25082_b25089_b25090_mortgage_status_aggregate_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25081_b25082_b25089_b25090_mortgage_status_aggregate_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25081_b25082_b25089_b25090_mortgage_status_aggregate_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25091_b25070_costburden_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25091_b25070_costburden_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25091_b25070_costburden_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25097_median_value_by_mortgage_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25097_median_value_by_mortgage_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25106_costburden_by_income_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25106_costburden_by_income_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25117_hu_tenure_by_fuel_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25117_hu_tenure_by_fuel_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25118_hh_income_by_tenure_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25118_hh_income_by_tenure_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25119_mhi_tenure_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25119_mhi_tenure_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25127_hu_tenure_year_built_units_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b25127_hu_tenure_year_built_units_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b27001_healthinsurance_by_gender_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"b27001_healthinsurance_by_gender_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"boun_area_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c15002_educational_attainment_by_race_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c15002_educational_attainment_by_race_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c18120_emp_status_by_disability_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c18120_emp_status_by_disability_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c18130_poverty_status_by_disability_status_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c18130_poverty_status_by_disability_status_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c23002_employment_by_race_age_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"c23002_employment_by_race_age_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12_pop_by_age_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12a_whi_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12a_whi_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12a_whi_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12a_whi_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12b_black_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12b_black_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12b_black_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12b_black_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12c_na_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12c_na_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12c_na_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12c_na_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12d_asian_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12d_asian_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12d_asian_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12d_asian_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12e_pi_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12e_pi_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12e_pi_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12e_pi_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12f_other_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12f_other_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12f_other_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12f_other_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12g_multi_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12g_multi_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12g_multi_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12g_multi_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12h_hisp_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12h_hisp_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12h_hisp_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12h_hisp_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12i_nhwhi_race_by_age_gender_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12i_nhwhi_race_by_age_gender_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12i_nhwhi_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p12i_nhwhi_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p20_hh_with_kids_by_hhtype_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p20_hh_with_kids_by_hhtype_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p20_hh_with_kids_by_hhtype_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p20_hh_with_kids_by_hhtype_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p28_hh_by_hhsize_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p28_hh_by_hhsize_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p28_hh_by_hhsize_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"census2010_p28_hh_by_hhsize_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_general_demographics_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_general_demographics_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_general_demographics_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_general_demographics_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_pop_estimates_2017_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_pop_estimates_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_projections_pop_by_age_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_projections_pop_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_asian_detail_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_asian_detail_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_by_age_gender_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_by_age_gender_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_ethnicity_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_latino_detail_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"demo_race_latino_detail_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_es202_all_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_es202_naics_2d_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_es202_naics_3d_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_es202_naics_4d_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_hh_income_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_hh_income_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_hh_income_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_municipal_taxes_revenue_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"econ_occupation_emp_wages_naics_ma","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"educ_enrollment_by_year_districts","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"educ_enrollment_by_year_schools","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_cbecs_building_energy_sources_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_cbecs_elec_consumption_expenditure_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_cbecs_fueloil_consumption_expenditure_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_cbecs_natgas_consumption_expenditure_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_masssave_elec_gas_ci_consumption_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_masssave_elec_gas_res_li_consumption_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_mecs_consumption_ratios_ne_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_mecs_end_use_consumption_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_mecs_first_use_consumption_ne_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_mecs_fuel_consumption_ne_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_recs_hh_fuel_consumption_ne_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_recs_hh_fuel_expenditures_ne_us","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"energy_recs_hu_structural_characteristics","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"env_dep_reviewed_water_demand_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"health_food_insecurity_omad_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"health_food_insecurity_omad_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"health_hospitalizations_hypertension_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"health_premature_mortality_race_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_building_permits_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_income_by_cb_chas_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_income_by_cb_chas_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_income_by_hh_type_chas_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_income_by_hh_type_chas_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_race_by_cb_chas_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_race_by_cb_chas_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_by_cb_chas_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_by_cb_chas_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_by_hh_income_chas_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_by_hh_income_chas_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_size_by_seniors_b","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_size_by_seniors_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_size_by_seniors_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_hh_type_size_by_seniors_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_housing_units_90_10_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_projections_hh_by_age_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_projections_hu_demand_by_age_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_res_sales_by_type_value_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_shi_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_tenure_by_units_acs_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_tenure_by_units_acs_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"hous_tenure_by_units_acs_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc-lead-commercial","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc-lead-industrial","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc-lead-residential","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc_lead_commercial","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc_lead_industrial","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"mapc_lead_residential","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_2014_q2_250m_grid","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_250m_grid","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_bg","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_ct","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_m","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_ma","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mavc_public_summary_smooth_250m_grid","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mpo_funding_projected","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_mpo_funding_spent","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_perfect_fit_parking","schema":"tabular"}},{"type":"add_existing_table_or_view","args":{"name":"trans_zipcar_zip","schema":"tabular"}}]}'
mzagaja commented 4 years ago

Finally this is the long running query on the main GraphiQL console that crashes it:

curl 'http://127.0.0.1:8080/v1/graphql' \
-XPOST \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15' \
--data-binary '{"query":"\n    query IntrospectionQuery {\n      __schema {\n        queryType { name }\n        mutationType { name }\n        subscriptionType { name }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          description\n          locations\n          args {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      description\n      fields(includeDeprecated: true) {\n        name\n        description\n        args {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        description\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      description\n      type { ...TypeRef }\n      defaultValue\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  "}'

CPU runs hot on the server with Hasura but not on the database server.

lexi-lambda commented 4 years ago

From the GHC issue tracker:

"Unable to commit ... bytes" usually means mmap() failure. You probably ran out of memory.

So it sounds like you’re running out of memory. How much data is actually returned by that query?

mzagaja commented 4 years ago

I spun up an AWS r5.large instance for testing purposes and deployed the latest beta9 docker container on it, pointing to the same database. r5.large has 16GB of RAM. It now loads though will be a bit slow to load the full thing. running the curl request above yields a JSON response that is approximately 135.6MB on the client. Not sure how that translates into RAM usage on Hasura itself but I have included some general Hasura memory usage at rest after running that query in this screenshot:

image

and then when reloading the API explorer:

image

So overall higher RAM seems to fix this and I appreciate the pointer. I think users might appreciate some kind of error that better suggests this in the logging when it fails for this reason, or a change that would lead to a more graceful failure than shutting down the instance. On my end running a console refresh does not look like it is stressing our database server.

0x777 commented 4 years ago

@mzagaja Thanks for taking the time to dig through the problematic queries. We'll improve these queries as soon as possible.

I think users might appreciate some kind of error that better suggests this in the logging when it fails for this reason, or a change that would lead to a more graceful failure than shutting down the instance

I'm not quite sure if we can catch this error but we should definitely document this behaviour.

On my end running a console refresh does not look like it is stressing our database server

The response of an introspection query is cached till the schema changes. This could be the reason.

jberryman commented 4 years ago

(Linking to #3388 which I've been using as the canonical memory leak issue, for referencing in PRs, etc.)

coco98 commented 2 years ago

Related to: #7585