Skip to content

Commit

Permalink
修复 oracle 包含创建表和创建索引提示表不存在 (#1697) (#1837)
Browse files Browse the repository at this point in the history
* 修复 oracle 包含创建表和创建索引提示表不存在 (#1697)

* black lint

Co-authored-by: hhyo <[email protected]>
  • Loading branch information
dengjili229 and hhyo authored Oct 16, 2022
1 parent a094a7c commit ca30cb2
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions sql/engines/oracle.py
Original file line number Diff line number Diff line change
Expand Up @@ -483,13 +483,15 @@ def get_sql_first_object_name(sql=""):

@staticmethod
def check_create_index_table(sql="", object_name_list=None, db_name=""):
schema_name = '"' + db_name + '"'
object_name_list = object_name_list or set()
if re.match(r"^create\s+index\s", sql):
table_name = re.match(
r"^create\s+index\s+.+\s+on\s(.+?)(\(|\s\()", sql, re.M
).group(1)
if "." not in table_name:
table_name = f"{db_name}.{table_name}"
table_name = f"{schema_name}.{table_name}"
table_name = table_name.upper()
if table_name in object_name_list:
return True
else:
Expand All @@ -499,7 +501,8 @@ def check_create_index_table(sql="", object_name_list=None, db_name=""):
r"^create\s+unique\s+index\s+.+\s+on\s(.+?)(\(|\s\()", sql, re.M
).group(1)
if "." not in table_name:
table_name = f"{db_name}.{table_name}"
table_name = f"{schema_name}.{table_name}"
table_name = table_name.upper()
if table_name in object_name_list:
return True
else:
Expand All @@ -509,19 +512,22 @@ def check_create_index_table(sql="", object_name_list=None, db_name=""):

@staticmethod
def get_dml_table(sql="", object_name_list=None, db_name=""):
schema_name = '"' + db_name + '"'
object_name_list = object_name_list or set()
if re.match(r"^update", sql):
table_name = re.match(r"^update\s(.+?)\s", sql, re.M).group(1)
if "." not in table_name:
table_name = f"{db_name}.{table_name}"
table_name = f"{schema_name}.{table_name}"
table_name = table_name.upper()
if table_name in object_name_list:
return True
else:
return False
elif re.match(r"^delete", sql):
table_name = re.match(r"^delete\s+from\s+([\w-]+)\s*", sql, re.M).group(1)
if "." not in table_name:
table_name = f"{db_name}.{table_name}"
table_name = f"{schema_name}.{table_name}"
table_name = table_name.upper()
if table_name in object_name_list:
return True
else:
Expand All @@ -533,7 +539,8 @@ def get_dml_table(sql="", object_name_list=None, db_name=""):
re.M,
).group(6)
if "." not in table_name:
table_name = f"{db_name}.{table_name}"
table_name = f"{schema_name}.{table_name}"
table_name = table_name.upper()
if table_name in object_name_list:
return True
else:
Expand Down

0 comments on commit ca30cb2

Please sign in to comment.