25 lines
654 B
Python
25 lines
654 B
Python
from sqlglot import exp
|
|
|
|
|
|
def quote_identities(expression):
|
|
"""
|
|
Rewrite sqlglot AST to ensure all identities are quoted.
|
|
|
|
Example:
|
|
>>> import sqlglot
|
|
>>> expression = sqlglot.parse_one("SELECT x.a AS a FROM db.x")
|
|
>>> quote_identities(expression).sql()
|
|
'SELECT "x"."a" AS "a" FROM "db"."x"'
|
|
|
|
Args:
|
|
expression (sqlglot.Expression): expression to quote
|
|
Returns:
|
|
sqlglot.Expression: quoted expression
|
|
"""
|
|
|
|
def qualify(node):
|
|
if isinstance(node, exp.Identifier):
|
|
node.set("quoted", True)
|
|
return node
|
|
|
|
return expression.transform(qualify, copy=False)
|