|
|
@ -734,13 +734,6 @@ async def replace_table_with_subquery(ctrSqlDict, oldStrSql): |
|
|
original_table = match.group(2) |
|
|
original_table = match.group(2) |
|
|
alias_part = match.group(3) # " AS xxx" 或 " xxx" |
|
|
alias_part = match.group(3) # " AS xxx" 或 " xxx" |
|
|
alias_name = match.group(4) # xxx |
|
|
alias_name = match.group(4) # xxx |
|
|
|
|
|
|
|
|
# 动态获取子查询 |
|
|
|
|
|
if original_table in ctrSqlDict: |
|
|
|
|
|
# 使用 ctrSqlDict 中的子查询替换表名 |
|
|
|
|
|
replaced = f"{keyword} ({ctrSqlDict[original_table]}) {alias_part}" |
|
|
|
|
|
else: |
|
|
|
|
|
# 默认处理逻辑:判断 alias 是否为关键字 |
|
|
|
|
|
sql_keywords = { |
|
|
sql_keywords = { |
|
|
"SELECT", "INSERT", "UPDATE", "DELETE", "MERGE", "TRUNCATE", |
|
|
"SELECT", "INSERT", "UPDATE", "DELETE", "MERGE", "TRUNCATE", |
|
|
"VALUES", "RETURNING", "FROM", "WHERE", "GROUP", "HAVING", "ORDER", |
|
|
"VALUES", "RETURNING", "FROM", "WHERE", "GROUP", "HAVING", "ORDER", |
|
|
@ -753,6 +746,13 @@ async def replace_table_with_subquery(ctrSqlDict, oldStrSql): |
|
|
"ALL", "SOME", "FETCH", "NEXT", "ONLY", "ASC", "DESC", "GRANT", "REVOKE", "ROLE", |
|
|
"ALL", "SOME", "FETCH", "NEXT", "ONLY", "ASC", "DESC", "GRANT", "REVOKE", "ROLE", |
|
|
"USER", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", |
|
|
"USER", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", |
|
|
} |
|
|
} |
|
|
|
|
|
# 动态获取子查询 |
|
|
|
|
|
if original_table in ctrSqlDict and alias_name not in sql_keywords: |
|
|
|
|
|
# 使用 ctrSqlDict 中的子查询替换表名 |
|
|
|
|
|
replaced = f"{keyword} ({ctrSqlDict[original_table]}) {alias_part}" |
|
|
|
|
|
else: |
|
|
|
|
|
# 默认处理逻辑:判断 alias 是否为关键字 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if alias_name and alias_name.upper().split()[0] not in sql_keywords: |
|
|
if alias_name and alias_name.upper().split()[0] not in sql_keywords: |
|
|
replaced = f"{keyword} ({subquery}) {alias_part}" |
|
|
replaced = f"{keyword} ({subquery}) {alias_part}" |
|
|
|