@@ -62,7 +62,7 @@ def get_table_list(self, cursor):
6262 """
6363 Returns a list of table and view names in the current database.
6464 """
65- sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES'
65+ sql = 'SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = SCHEMA_NAME() '
6666 cursor .execute (sql )
6767 types = {'BASE TABLE' : 't' , 'VIEW' : 'v' }
6868 return [TableInfo (row [0 ], types .get (row [1 ]))
@@ -126,14 +126,14 @@ def get_relations(self, cursor, table_name):
126126 d.COLUMN_NAME AS referenced_column_name
127127FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS a
128128INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS b
129- ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
129+ ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND a.TABLE_SCHEMA = b.CONSTRAINT_SCHEMA
130130INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE AS c
131- ON b.UNIQUE_CONSTRAINT_NAME = c.CONSTRAINT_NAME
131+ ON b.UNIQUE_CONSTRAINT_NAME = c.CONSTRAINT_NAME AND b.CONSTRAINT_SCHEMA = c.CONSTRAINT_SCHEMA
132132INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS d
133- ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
133+ ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME AND c.CONSTRAINT_SCHEMA = d.CONSTRAINT_SCHEMA
134134INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS e
135- ON a.CONSTRAINT_NAME = e.CONSTRAINT_NAME
136- WHERE a.TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
135+ ON a.CONSTRAINT_NAME = e.CONSTRAINT_NAME AND a.TABLE_SCHEMA = e.TABLE_SCHEMA
136+ WHERE a.TABLE_SCHEMA = SCHEMA_NAME() AND a. TABLE_NAME = %s AND a.CONSTRAINT_TYPE = 'FOREIGN KEY'"""
137137 cursor .execute (sql , (table_name ,))
138138 return dict ([[item [0 ], (item [2 ], item [1 ])] for item in cursor .fetchall ()])
139139
@@ -156,15 +156,20 @@ def get_indexes(self, cursor, table_name):
156156
157157 pk_uk_sql = """
158158SELECT d.COLUMN_NAME, c.CONSTRAINT_TYPE FROM (
159- SELECT a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE
159+ SELECT a.CONSTRAINT_NAME, a.CONSTRAINT_TYPE, a.TABLE_SCHEMA
160160FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS a
161161INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS b
162- ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND a.TABLE_NAME = b.TABLE_NAME
163- WHERE a.TABLE_NAME = %s AND (CONSTRAINT_TYPE = 'PRIMARY KEY' OR CONSTRAINT_TYPE = 'UNIQUE')
164- GROUP BY a.CONSTRAINT_TYPE, a.CONSTRAINT_NAME
162+ ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME
163+ AND a.TABLE_SCHEMA = b.TABLE_SCHEMA
164+ AND a.TABLE_NAME = b.TABLE_NAME
165+ WHERE a.TABLE_SCHEMA = SCHEMA_NAME()
166+ AND a.TABLE_NAME = %s
167+ AND (CONSTRAINT_TYPE = 'PRIMARY KEY' OR CONSTRAINT_TYPE = 'UNIQUE')
168+ GROUP BY a.CONSTRAINT_TYPE, a.CONSTRAINT_NAME, a.TABLE_SCHEMA
165169HAVING(COUNT(a.CONSTRAINT_NAME)) = 1) AS c
166170INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE AS d
167- ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME"""
171+ ON c.CONSTRAINT_NAME = d.CONSTRAINT_NAME
172+ AND c.TABLE_SCHEMA = d.TABLE_SCHEMA"""
168173
169174 field_names = [item [0 ] for item in self .get_table_description (cursor , table_name , identity_check = False )]
170175 indexes , results = {}, {}
@@ -190,6 +195,7 @@ def get_indexes(self, cursor, table_name):
190195 HAVING count(1) = 1)
191196AND ix.is_primary_key = 0
192197AND ix.is_unique_constraint = 0
198+ AND t.schema_id = SCHEMA_ID()
193199AND t.name = %s"""
194200
195201 cursor .execute (ix_sql , (table_name ,))
@@ -217,7 +223,7 @@ def get_key_columns(self, cursor, table_name):
217223 INNER JOIN sys.columns c ON c.object_id = t.object_id AND c.column_id = fk.parent_column_id
218224 INNER JOIN sys.tables rt ON rt.object_id = fk.referenced_object_id
219225 INNER JOIN sys.columns rc ON rc.object_id = rt.object_id AND rc.column_id = fk.referenced_column_id
220- WHERE t.name = %s""" , [table_name ])
226+ WHERE t.schema_id = SCHEMA_ID() AND t. name = %s""" , [table_name ])
221227 key_columns .extend ([tuple (row ) for row in cursor .fetchall ()])
222228 return key_columns
223229
@@ -280,6 +286,7 @@ def get_constraints(self, cursor, table_name):
280286 kc.table_name = fk.table_name AND
281287 kc.column_name = fk.column_name
282288 WHERE
289+ kc.table_schema = SCHEMA_NAME() AND
283290 kc.table_name = %s
284291 ORDER BY kc.ordinal_position ASC
285292 """ , [table_name ])
@@ -306,6 +313,7 @@ def get_constraints(self, cursor, table_name):
306313 kc.constraint_name = c.constraint_name
307314 WHERE
308315 c.constraint_type = 'CHECK' AND
316+ kc.table_schema = SCHEMA_NAME() AND
309317 kc.table_name = %s
310318 """ , [table_name ])
311319 for constraint , column in cursor .fetchall ():
@@ -344,6 +352,7 @@ def get_constraints(self, cursor, table_name):
344352 ic.object_id = c.object_id AND
345353 ic.column_id = c.column_id
346354 WHERE
355+ t.schema_id = SCHEMA_ID() AND
347356 t.name = %s
348357 ORDER BY
349358 i.index_id ASC,
0 commit comments