You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Make database optional
* Use database specific information_schema
This fixes an issue with sidebar where users can't see database tables/views
* Return empty list when schema isn't accessible
This resolves 'sqltools.getChildrenForTreeItem' failed error when clicking on an inaccessible schema.
Copy file name to clipboardExpand all lines: packages/driver.mssql/src/ls/queries.ts
+11-11Lines changed: 11 additions & 11 deletions
Original file line number
Diff line number
Diff line change
@@ -34,20 +34,20 @@ SELECT
34
34
(CASE WHEN LOWER(TC.CONSTRAINT_TYPE) = 'primary key' THEN 1 ELSE 0 END) as "isPk",
35
35
(CASE WHEN LOWER(TC.CONSTRAINT_TYPE) = 'foreign key' THEN 1 ELSE 0 END) as "isFk"
36
36
FROM
37
-
INFORMATION_SCHEMA.COLUMNS C
38
-
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ON (
37
+
${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "COLUMNS"})}` : 'INFORMATION_SCHEMA.COLUMNS'} C
38
+
LEFT JOIN ${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "KEY_COLUMN_USAGE"})}` : 'INFORMATION_SCHEMA.KEY_COLUMN_USAGE'} AS KCU ON (
39
39
C.TABLE_CATALOG = KCU.TABLE_CATALOG
40
40
AND C.TABLE_NAME = KCU.TABLE_NAME
41
41
AND C.TABLE_SCHEMA = KCU.TABLE_SCHEMA
42
42
AND C.TABLE_CATALOG = KCU.TABLE_CATALOG
43
43
AND C.COLUMN_NAME = KCU.COLUMN_NAME
44
44
)
45
-
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON (
45
+
LEFT JOIN ${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "TABLE_CONSTRAINTS"})}` : 'INFORMATION_SCHEMA.TABLE_CONSTRAINTS'} AS TC ON (
46
46
TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
47
47
AND TC.TABLE_SCHEMA = KCU.TABLE_SCHEMA
48
48
AND TC.TABLE_CATALOG = KCU.TABLE_CATALOG
49
49
)
50
-
JOIN INFORMATION_SCHEMA.TABLES AS T ON C.TABLE_NAME = T.TABLE_NAME
50
+
JOIN ${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "TABLES"})}` : 'INFORMATION_SCHEMA.TABLES'} AS T ON C.TABLE_NAME = T.TABLE_NAME
51
51
AND C.TABLE_SCHEMA = T.TABLE_SCHEMA
52
52
AND C.TABLE_CATALOG = T.TABLE_CATALOG
53
53
WHERE
@@ -79,7 +79,7 @@ SELECT
79
79
T.TABLE_SCHEMA AS "schema",
80
80
T.TABLE_CATALOG AS "database",
81
81
CONVERT(BIT, CASE WHEN T.TABLE_TYPE = 'BASE TABLE' THEN 0 ELSE 1 END) AS "isView"
82
-
FROM INFORMATION_SCHEMA.TABLES AS T
82
+
FROM ${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "TABLES"})}` : 'INFORMATION_SCHEMA.TABLES'} AS T
83
83
WHERE
84
84
T.TABLE_SCHEMA = '${p=>p.schema}'
85
85
AND T.TABLE_CATALOG = '${p=>p.database}'
@@ -98,7 +98,7 @@ SELECT
98
98
'${ContextValue.SCHEMA}' as "type",
99
99
'group-by-ref-type' as "iconId",
100
100
catalog_name as "database"
101
-
FROM information_schema.schemata
101
+
FROM ${p=>p.database ? `${escapeTableName({database: p.database,schema: "information_schema",label: "schemata"})}` : 'information_schema.schemata'}
102
102
WHERE
103
103
LOWER(schema_name) NOT IN ('information_schema', 'sys', 'guest')
104
104
AND LOWER(schema_name) NOT LIKE 'db\\_%' ESCAPE '\\'
@@ -123,7 +123,7 @@ SELECT
123
123
(CASE WHEN T.TABLE_TYPE = 'BASE TABLE' THEN 0 ELSE 1 END) AS "isView",
124
124
(CASE WHEN T.TABLE_TYPE = 'BASE TABLE' THEN 'table' ELSE 'view' END) AS description,
FROM ${p=>p.database ? `${escapeTableName({database: p.database,schema: "INFORMATION_SCHEMA",label: "TABLES"})}` : 'INFORMATION_SCHEMA.TABLES'} AS T
127
127
WHERE
128
128
LOWER(T.TABLE_SCHEMA) NOT IN ('information_schema', 'sys', 'guest')
129
129
AND LOWER(T.TABLE_SCHEMA) NOT LIKE 'db\\_%' ESCAPE '\\'
@@ -152,20 +152,20 @@ SELECT
152
152
(CASE WHEN LOWER(TC.CONSTRAINT_TYPE) = 'primary key' THEN 1 ELSE 0 END) as "isPk",
153
153
(CASE WHEN LOWER(TC.CONSTRAINT_TYPE) = 'foreign key' THEN 1 ELSE 0 END) as "isFk"
154
154
FROM
155
-
INFORMATION_SCHEMA.COLUMNS C
156
-
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ON (
155
+
${p=>p.tables[0].database ? `${escapeTableName({database: p.tables[0].database,schema: "INFORMATION_SCHEMA",label: "COLUMNS"})}` : 'INFORMATION_SCHEMA.COLUMNS'} C
156
+
LEFT JOIN ${p=>p.tables[0].database ? `${escapeTableName({database: p.tables[0].database,schema: "INFORMATION_SCHEMA",label: "KEY_COLUMN_USAGE"})}` : 'INFORMATION_SCHEMA.KEY_COLUMN_USAGE'} AS KCU ON (
157
157
C.TABLE_CATALOG = KCU.TABLE_CATALOG
158
158
AND C.TABLE_NAME = KCU.TABLE_NAME
159
159
AND C.TABLE_SCHEMA = KCU.TABLE_SCHEMA
160
160
AND C.TABLE_CATALOG = KCU.TABLE_CATALOG
161
161
AND C.COLUMN_NAME = KCU.COLUMN_NAME
162
162
)
163
-
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS TC ON (
163
+
LEFT JOIN ${p=>p.tables[0].database ? `${escapeTableName({database: p.tables[0].database,schema: "INFORMATION_SCHEMA",label: "TABLE_CONSTRAINTS"})}` : 'INFORMATION_SCHEMA.TABLE_CONSTRAINTS'} AS TC ON (
164
164
TC.CONSTRAINT_NAME = KCU.CONSTRAINT_NAME
165
165
AND TC.TABLE_SCHEMA = KCU.TABLE_SCHEMA
166
166
AND TC.TABLE_CATALOG = KCU.TABLE_CATALOG
167
167
)
168
-
JOIN INFORMATION_SCHEMA.TABLES AS T ON C.TABLE_NAME = T.TABLE_NAME
168
+
JOIN ${p=>p.tables[0].database ? `${escapeTableName({database: p.tables[0].database,schema: "INFORMATION_SCHEMA",label: "TABLES"})}` : 'INFORMATION_SCHEMA.TABLES'} AS T ON C.TABLE_NAME = T.TABLE_NAME
169
169
AND C.TABLE_SCHEMA = T.TABLE_SCHEMA
170
170
AND C.TABLE_CATALOG = T.TABLE_CATALOG
171
171
WHERE LOWER(C.TABLE_SCHEMA) NOT IN ('information_schema', 'sys', 'guest')
0 commit comments