Skip to content

Commit f4f6e4b

Browse files
committed
Update Table sql should use the table alias (if differing from the table name).
1 parent f8c6798 commit f4f6e4b

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

sqlest/src/main/scala/sqlest/sql/base/UpdateStatementBuilder.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ trait UpdateStatementBuilder extends BaseStatementBuilder {
2929
}
3030

3131
def updateTableSql(table: Table): String =
32-
s"update ${identifierSql(table.tableName)}"
32+
if (table.tableName == table.tableAlias)
33+
s"update ${identifierSql(table.tableName)}"
34+
else
35+
"update " + identifierSql(table.tableName) + " as " + identifierSql(table.tableAlias)
3336

3437
def updateSetSql(setters: Seq[Setter[_, _]]): String =
3538
"set " + setters.map(setter => identifierSql(setter.column.columnName) + " = " + columnSql(setter.value)).mkString(", ")

sqlest/src/test/scala/sqlest/sql/UpdateStatementBuilderSpec.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,23 @@ class UpdateStatementBuilderSpec extends BaseStatementBuilderSpec {
4141
List(List("a", "b", "c", "d", "e", "f"))
4242
)
4343
}
44+
45+
it should "produce the right sql for an aliased table" in {
46+
val tableOneAliased = new TableOne(Some("one_alias"))
47+
sql {
48+
update(tableOneAliased)
49+
.set(
50+
tableOneAliased.col1 -> "a",
51+
tableOneAliased.col2 -> "b"
52+
)
53+
.where(tableOneAliased.col1 === "d".column && "e".column === "f".column)
54+
} should equal(
55+
s"""
56+
|update one as one_alias
57+
|set col1 = ?, col2 = ?
58+
|where ((one_alias.col1 = ?) and (? = ?))
59+
""".formatSql,
60+
List(List("a", "b", "d", "e", "f"))
61+
)
62+
}
4463
}

0 commit comments

Comments
 (0)