Skip to content

Commit e3d4613

Browse files
committed
Optimize multi-table update statements and rewrite them to automatically place the updated table first.
1 parent a7833e4 commit e3d4613

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

syncanysql/compiler.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3267,11 +3267,13 @@ def optimize_rewrite_update(self, expression, config, arguments):
32673267
primary_tables = [self.optimize_rewrite_parse_table(expression, config, arguments, expression.args["this"])]
32683268
if not primary_tables[0]["table_name"]:
32693269
return expression
3270+
primary_tables[0]["expression"] = expression.args["this"]
32703271
if expression.args["this"].args.get("table_expressions"):
32713272
for table_expression in expression.args["this"].args["table_expressions"]:
32723273
primary_table = self.optimize_rewrite_parse_table(expression, config, arguments, table_expression)
32733274
if not primary_table["table_name"]:
32743275
return expression
3276+
primary_table["expression"] = table_expression
32753277
primary_tables.append(primary_table)
32763278

32773279
primary_table, primary_keys, set_expressions = (primary_tables[0] if len(primary_tables) == 1 else None), [], []
@@ -3334,8 +3336,8 @@ def optimize_rewrite_update(self, expression, config, arguments):
33343336
sql.append(", ".join(select_sql))
33353337
sql.append("FROM")
33363338
if expression.args["this"].args.get("table_expressions"):
3337-
sql.append(", ".join([self.generate_sql(expression.args["this"])] +
3338-
[self.generate_sql(table_expression) for table_expression in expression.args["this"].args["table_expressions"]]))
3339+
sql.append(", ".join([self.generate_sql(primary_table["expression"])] +
3340+
[self.generate_sql(pt["expression"]) for pt in primary_tables if pt is not primary_table]))
33393341
else:
33403342
sql.append(self.generate_sql(expression.args["this"]))
33413343
if expression.args["this"].args.get("join_expressions"):

0 commit comments

Comments
 (0)