| 97 | |
| 98 | |
| 99 | class PGExecute: |
| 100 | # The boolean argument to the current_schemas function indicates whether |
| 101 | # implicit schemas, e.g. pg_catalog |
| 102 | search_path_query = """ |
| 103 | SELECT * FROM unnest(current_schemas(true))""" |
| 104 | |
| 105 | schemata_query = """ |
| 106 | SELECT nspname |
| 107 | FROM pg_catalog.pg_namespace |
| 108 | ORDER BY 1 """ |
| 109 | |
| 110 | tables_query = """ |
| 111 | SELECT n.nspname schema_name, |
| 112 | c.relname table_name |
| 113 | FROM pg_catalog.pg_class c |
| 114 | LEFT JOIN pg_catalog.pg_namespace n |
| 115 | ON n.oid = c.relnamespace |
| 116 | WHERE c.relkind = ANY(%s) |
| 117 | ORDER BY 1,2;""" |
| 118 | |
| 119 | databases_query = """ |
| 120 | SELECT d.datname |
| 121 | FROM pg_catalog.pg_database d |
| 122 | ORDER BY 1""" |
| 123 | |
| 124 | full_databases_query = """ |
| 125 | SELECT d.datname as "Name", |
| 126 | pg_catalog.pg_get_userbyid(d.datdba) as "Owner", |
| 127 | pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding", |
| 128 | d.datcollate as "Collate", |
| 129 | d.datctype as "Ctype", |
| 130 | pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" |
| 131 | FROM pg_catalog.pg_database d |
| 132 | ORDER BY 1""" |
| 133 | |
| 134 | socket_directory_query = """ |
| 135 | SELECT setting |
| 136 | FROM pg_settings |
| 137 | WHERE name = 'unix_socket_directories' |
| 138 | """ |
| 139 | |
| 140 | view_definition_query = """ |
| 141 | WITH v AS (SELECT %s::pg_catalog.regclass::pg_catalog.oid AS v_oid) |
| 142 | SELECT nspname, relname, relkind, |
| 143 | pg_catalog.pg_get_viewdef(c.oid, true), |
| 144 | array_remove(array_remove(c.reloptions,'check_option=local'), |
| 145 | 'check_option=cascaded') AS reloptions, |
| 146 | CASE |
| 147 | WHEN 'check_option=local' = ANY (c.reloptions) THEN 'LOCAL'::text |
| 148 | WHEN 'check_option=cascaded' = ANY (c.reloptions) THEN 'CASCADED'::text |
| 149 | ELSE NULL |
| 150 | END AS checkoption |
| 151 | FROM pg_catalog.pg_class c |
| 152 | LEFT JOIN pg_catalog.pg_namespace n ON (c.relnamespace = n.oid) |
| 153 | JOIN v ON (c.oid = v.v_oid)""" |
| 154 | |
| 155 | function_definition_query = """ |
| 156 | WITH f AS |