From 82ba1df4efdf7f96fcd8c4bdb4ca41f64d50cef5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 9 Jan 2024 13:40:34 +0000 Subject: [PATCH] Fixing an issue with typing in the information_schema table that was leading to an 'invalid syntax name' message when attempting to fetch tables from our QA postgres database. --- packages/server/src/integrations/postgres.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/server/src/integrations/postgres.ts b/packages/server/src/integrations/postgres.ts index ddc6e82f6d..78955c06dc 100644 --- a/packages/server/src/integrations/postgres.ts +++ b/packages/server/src/integrations/postgres.ts @@ -149,8 +149,6 @@ class PostgresIntegration extends Sql implements DatasourcePlus { private index: number = 1 private open: boolean - COLUMNS_SQL!: string - PRIMARY_KEYS_SQL = () => ` SELECT pg_namespace.nspname table_schema , pg_class.relname table_name @@ -171,6 +169,11 @@ class PostgresIntegration extends Sql implements DatasourcePlus { JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace; ` + COLUMNS_SQL = () => ` + select * from information_schema.columns where table_schema = ANY(current_schemas(false)) + AND pg_table_is_visible(to_regclass(format('%I.%I', table_schema, table_name))); + ` + constructor(config: PostgresConfig) { super(SqlClient.POSTGRES) this.config = config @@ -224,8 +227,6 @@ class PostgresIntegration extends Sql implements DatasourcePlus { .split(",") .map(item => `"${item.trim()}"`) await this.client.query(`SET search_path TO ${search_path.join(",")};`) - this.COLUMNS_SQL = `select * from information_schema.columns where table_schema = ANY(current_schemas(false)) - AND pg_table_is_visible(to_regclass(table_schema || '.' || table_name));` this.open = true } @@ -312,7 +313,7 @@ class PostgresIntegration extends Sql implements DatasourcePlus { try { const columnsResponse: { rows: PostgresColumn[] } = - await this.client.query(this.COLUMNS_SQL) + await this.client.query(this.COLUMNS_SQL()) const tables: { [key: string]: Table } = {} @@ -382,7 +383,7 @@ class PostgresIntegration extends Sql implements DatasourcePlus { try { await this.openConnection() const columnsResponse: { rows: PostgresColumn[] } = - await this.client.query(this.COLUMNS_SQL) + await this.client.query(this.COLUMNS_SQL()) const names = columnsResponse.rows.map(row => row.table_name) return [...new Set(names)] } finally {