summaryrefslogtreecommitdiffstats
path: root/sqlglot/generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlglot/generator.py')
-rw-r--r--sqlglot/generator.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/sqlglot/generator.py b/sqlglot/generator.py
index 8d82db4..81e0ac3 100644
--- a/sqlglot/generator.py
+++ b/sqlglot/generator.py
@@ -912,7 +912,7 @@ class Generator:
return f"{prefix}{string}"
def partition_sql(self, expression: exp.Partition) -> str:
- return f"PARTITION({self.expressions(expression)})"
+ return f"PARTITION({self.expressions(expression, flat=True)})"
def properties_sql(self, expression: exp.Properties) -> str:
root_properties = []
@@ -1102,23 +1102,24 @@ class Generator:
overwrite = expression.args.get("overwrite")
if isinstance(expression.this, exp.Directory):
- this = "OVERWRITE " if overwrite else "INTO "
+ this = " OVERWRITE" if overwrite else " INTO"
else:
- this = "OVERWRITE TABLE " if overwrite else "INTO "
+ this = " OVERWRITE TABLE" if overwrite else " INTO"
alternative = expression.args.get("alternative")
- alternative = f" OR {alternative} " if alternative else " "
- this = f"{this}{self.sql(expression, 'this')}"
+ alternative = f" OR {alternative}" if alternative else ""
+ this = f"{this} {self.sql(expression, 'this')}"
- exists = " IF EXISTS " if expression.args.get("exists") else " "
+ exists = " IF EXISTS" if expression.args.get("exists") else ""
partition_sql = (
- self.sql(expression, "partition") if expression.args.get("partition") else ""
+ f" {self.sql(expression, 'partition')}" if expression.args.get("partition") else ""
)
- expression_sql = self.sql(expression, "expression")
+ where = self.sql(expression, "where")
+ where = f"{self.sep()}REPLACE WHERE {where}" if where else ""
+ expression_sql = f"{self.sep()}{self.sql(expression, 'expression')}"
conflict = self.sql(expression, "conflict")
returning = self.sql(expression, "returning")
- sep = self.sep() if partition_sql else ""
- sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{conflict}{returning}"
+ sql = f"INSERT{alternative}{this}{exists}{partition_sql}{where}{expression_sql}{conflict}{returning}"
return self.prepend_ctes(expression, sql)
def intersect_sql(self, expression: exp.Intersect) -> str: