Skip to content

Commit dcc28eb

Browse files
authored
Merge pull request #149 from macbre/queries_not_using_index-handle-no-tables-used
queries_not_using_index | handle "No tables used"
2 parents 8f914dd + 857cb3a commit dcc28eb

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

indexdigest/linters/linter_0019_queries_not_using_indices.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def check_queries_not_using_indices(database, queries):
2020
if explain_row['Extra'] in [
2121
'Impossible WHERE noticed after reading const tables',
2222
'no matching row in const table',
23+
'No tables used'
2324
]:
2425
continue
2526

indexdigest/test/linters/test_0019_queries_not_using_indices.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ def test_queries(self):
1212
reports = list(check_queries_not_using_indices(
1313
database=self.connection, queries=read_queries_from_log('0019-queries-not-using-indices-log')))
1414

15-
# print(reports)
15+
print(list(map(str, reports)))
1616

17-
self.assertEqual(len(reports), 2)
17+
self.assertEqual(len(reports), 3)
1818

1919
self.assertEqual(str(reports[0]), '0019_queries_not_using_indices: "SELECT item_id FROM 0019_queries_not_using_indices..." query did not make use of any index')
2020
self.assertEqual(reports[0].table_name, '0019_queries_not_using_indices')
@@ -27,4 +27,9 @@ def test_queries(self):
2727
self.assertEqual(str(reports[1].context['explain_extra']), 'Using where')
2828
self.assertEqual(str(reports[1].context['explain_rows']), '3')
2929

30+
self.assertEqual(reports[2].table_name, '0019_queries_not_using_indices')
31+
self.assertEqual(str(reports[2].context['query']), 'SELECT 1 AS one FROM dual WHERE exists ( SELECT item_id FROM 0019_queries_not_using_indices WHERE foo = "test" );')
32+
self.assertEqual(str(reports[2].context['explain_extra']), 'Using where')
33+
self.assertEqual(str(reports[2].context['explain_rows']), '3')
34+
3035
# assert False

sql/0019-queries-not-using-indices-log

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,7 @@ SELECT item_id FROM 0019_queries_not_using_indices WHERE foo = "test" OR item_id
77
SELECT item_id FROM 0019_queries_not_using_indices WHERE foo = "test"
88
-- no matching row in const table (#44)
99
SELECT foo FROM 0019_queries_not_using_indices WHERE item_id = 5;
10+
-- #148: EXPLAINS' Extra says "No tables used"
11+
SELECT 1*1;
12+
SELECT 1 AS one FROM dual WHERE exists ( SELECT 1 FROM 0000_the_table WHERE item_id = 2 );
13+
SELECT 1 AS one FROM dual WHERE exists ( SELECT item_id FROM 0019_queries_not_using_indices WHERE foo = "test" );

0 commit comments

Comments
 (0)