MCPcopy Create free account
hub / github.com/Borvik/vscode-postgres / loadCompletionCache

Function loadCompletionCache

src/language/server.ts:177–317  ·  view source on GitHub ↗
(connectionOptions: IDBConnection)

Source from the content-addressed store, hash-verified

175}
176
177async 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,

Callers 1

setupDBConnectionFunction · 0.85

Calls 1

getVersionQueriesMethod · 0.80

Tested by

no test coverage detected