Skip to content

Commit 11b668c

Browse files
authored
Merge pull request #151 from qidi1/double_index_recommand
repaire optimizer bug ref #150
2 parents 6729f37 + 6394b66 commit 11b668c

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ Thumbs.db
4949
##################
5050
.idea/
5151
.vscode/
52+
build
53+
dist
5254
venv/*
5355
parser.out
5456
parsetab.py

db.cfg

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
22
'db': {
3-
'host': 'localhost',
4-
'port': 3306,
5-
'dbname': 'test',
6-
'user': 'root',
7-
'pswd': '123456',
8-
'charset': 'big5'
3+
'host': '*****',
4+
'port': '*',
5+
'dbname': '*',
6+
'user': '*',
7+
'pswd': '*',
8+
'charset': '*'
99
}
1010
}

src/metadata/metadata_utils.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,14 +200,17 @@ def json_to_catalog(catalog_json, schema_sql=None) -> Catalog:
200200

201201
@staticmethod
202202
def extension_all_match_index(filter_column_list, order_list):
203+
column_set = set()
203204
column_list = []
204205
range_flag = False
205206
last_column = ''
206207
for filter_column in filter_column_list:
207208
column_name = filter_column['column_name']
208209
opt = filter_column['opt']
209210
if opt == '=' or opt == 'in' or opt == 'is':
210-
column_list.append(column_name)
211+
if column_name not in column_set:
212+
column_set.add(column_name)
213+
column_list.append(column_name)
211214
elif (
212215
opt == '>'
213216
or opt == '<'
@@ -221,6 +224,8 @@ def extension_all_match_index(filter_column_list, order_list):
221224
range_flag = True
222225

223226
if range_flag:
227+
if last_column in column_set:
228+
column_list.remove(last_column)
224229
column_list.append(last_column)
225230

226231
# TODO Statistics need to be added to determine which one comes first when there are range queries and sorting

src/optimizer/rewrite_rule/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
from .rewrite_or_rule import RewriteMySQLORRule
1414
from .remove_order_by_in_delete_update_rule import RemoveOrderByInDeleteUpdateRule
1515

16-
common_rules = [RewriteSupplementColumnRule(), RemoveOrderByInDeleteUpdateRule()]
16+
common_rules = [
17+
RewriteSupplementColumnRule(),
18+
RemoveOrderByInDeleteUpdateRule(),
19+
RewriteMySQLORRule(),
20+
]
1721

1822
mysql_rules = [RewriteMySQLORRule()]

0 commit comments

Comments
 (0)