in tools/hologres_excute_sql.py [0:0]
def _contains_risk_commands(self, sql: str) -> bool:
import re
risk_keywords = {"DROP", "DELETE", "TRUNCATE", "ALTER", "UPDATE", "INSERT"}
# Remove comments
sql = re.sub(r'/\*.*?\*/', '', sql, flags=re.DOTALL)
sql = re.sub(r'--.*', '', sql)
# Split statements
statements = re.split(r';\s*', sql)
for stmt in statements:
stmt = stmt.strip()
if not stmt:
continue
# Match first word (case insensitive)
match = re.match(r'\s*([^\s]+)', stmt, re.IGNORECASE)
if match:
first_word = match.group(1).upper()
if first_word in risk_keywords:
return True
return False