(connectionOptions: IDBConnection)
| 175 | } |
| 176 | |
| 177 | async function loadCompletionCache(connectionOptions: IDBConnection) { |
| 178 | if (!connectionOptions || !dbConnection) return; |
| 179 | // setup database caches for schemas, functions, tables, and fields |
| 180 | let vQueries = SqlQueryManager.getVersionQueries(dbConnection.pg_version); |
| 181 | try { |
| 182 | if (connectionOptions.database) { |
| 183 | let schemas = await dbConnection.query(` |
| 184 | SELECT nspname as name |
| 185 | FROM pg_namespace |
| 186 | WHERE |
| 187 | nspname not in ('information_schema', 'pg_catalog', 'pg_toast') |
| 188 | AND nspname not like 'pg_temp_%' |
| 189 | AND nspname not like 'pg_toast_temp_%' |
| 190 | AND has_schema_privilege(oid, 'CREATE, USAGE') |
| 191 | ORDER BY nspname; |
| 192 | `); |
| 193 | schemaCache = schemas.rows; |
| 194 | } |
| 195 | } |
| 196 | catch (err) { |
| 197 | console.log(err.message); |
| 198 | } |
| 199 | |
| 200 | try { |
| 201 | if (connectionOptions.database) { |
| 202 | /* |
| 203 | SELECT tablename as name, true as is_table FROM pg_tables WHERE schemaname not in ('information_schema', 'pg_catalog') |
| 204 | union all |
| 205 | SELECT viewname as name, false as is_table FROM pg_views WHERE schemaname not in ('information_schema', 'pg_catalog') order by name; |
| 206 | */ |
| 207 | let tablesAndColumns = await dbConnection.query(` |
| 208 | SELECT |
| 209 | tbl.schemaname, |
| 210 | tbl.tablename, |
| 211 | tbl.quoted_name, |
| 212 | tbl.is_table, |
| 213 | json_agg(a) as columns |
| 214 | FROM |
| 215 | ( |
| 216 | SELECT |
| 217 | n.nspname as schemaname, |
| 218 | c.relname as tablename, |
| 219 | (quote_ident(n.nspname) || '.' || quote_ident(c.relname)) as quoted_name, |
| 220 | true as is_table |
| 221 | FROM |
| 222 | pg_catalog.pg_class c |
| 223 | JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace |
| 224 | WHERE |
| 225 | c.relkind = 'r' |
| 226 | AND n.nspname not in ('information_schema', 'pg_catalog', 'pg_toast') |
| 227 | AND n.nspname not like 'pg_temp_%' |
| 228 | AND n.nspname not like 'pg_toast_temp_%' |
| 229 | AND has_schema_privilege(n.oid, 'USAGE') = true |
| 230 | AND has_table_privilege(quote_ident(n.nspname) || '.' || quote_ident(c.relname), 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER') = true |
| 231 | union all |
| 232 | SELECT |
| 233 | n.nspname as schemaname, |
| 234 | c.relname as tablename, |
no test coverage detected