test: cover updateSetToDefaultParsesTheAssignmentValueAsNull
This commit is contained in:
1 parent
1e0560573b
commit
e8d6bf0db5
1 file changed
+67
@@ -286,6 +286,73 @@ class ParserTest {
|
||||
assertEquals(Assignment("a", intLit(1)), update.assignments[0])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateSetToDefaultParsesTheAssignmentValueAsNull() {
|
||||
val update = parseOne("UPDATE t SET a = DEFAULT, b = 2 WHERE id = 3") as UpdateStatement
|
||||
assertEquals(Assignment("a", null), update.assignments[0])
|
||||
assertEquals(Assignment("b", intLit(2)), update.assignments[1])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun insertWithoutReturningLeavesItNull() {
|
||||
val statement = parseOne("INSERT INTO t VALUES (1)") as InsertStatement
|
||||
assertNull(statement.returning)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun insertReturningStarParsesAsStarProjection() {
|
||||
val statement = parseOne("INSERT INTO t VALUES (1) RETURNING *") as InsertStatement
|
||||
assertEquals(StarProjection, statement.returning)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun insertReturningExpressionListWithAliasParsesLikeASelectProjection() {
|
||||
val statement = parseOne("INSERT INTO t (a, b) VALUES (1, 2) RETURNING a, b + 1 AS bplus") as InsertStatement
|
||||
val projection = statement.returning as ExpressionProjection
|
||||
assertEquals(2, projection.items.size)
|
||||
assertEquals("a", (projection.items[0].expression as ColumnExpression).name)
|
||||
assertNull(projection.items[0].alias)
|
||||
assertEquals("bplus", projection.items[1].alias)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun insertOnConflictReturningParsesReturningAfterTheConflictClause() {
|
||||
val statement = parseOne(
|
||||
"INSERT INTO t (id) VALUES (1) ON CONFLICT (id) DO NOTHING RETURNING id"
|
||||
) as InsertStatement
|
||||
assertNotNull(statement.onConflict)
|
||||
val projection = statement.returning as ExpressionProjection
|
||||
assertEquals("id", (projection.items.single().expression as ColumnExpression).name)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateReturningParsesAfterWhere() {
|
||||
val statement = parseOne("UPDATE t SET a = 1 WHERE id = 3 RETURNING id, a") as UpdateStatement
|
||||
val projection = statement.returning as ExpressionProjection
|
||||
assertEquals(2, projection.items.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun updateReturningWithoutWhereStillParses() {
|
||||
val statement = parseOne("UPDATE t SET a = 1 RETURNING *") as UpdateStatement
|
||||
assertNull(statement.where)
|
||||
assertEquals(StarProjection, statement.returning)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deleteReturningParsesAfterWhere() {
|
||||
val statement = parseOne("DELETE FROM t WHERE id = 3 RETURNING id") as DeleteStatement
|
||||
val projection = statement.returning as ExpressionProjection
|
||||
assertEquals("id", (projection.items.single().expression as ColumnExpression).name)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun deleteReturningWithoutWhereStillParses() {
|
||||
val statement = parseOne("DELETE FROM t RETURNING *") as DeleteStatement
|
||||
assertNull(statement.where)
|
||||
assertEquals(StarProjection, statement.returning)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun multipleStatementsAreSeparatedBySemicolons() {
|
||||
val statements = parse("CREATE TABLE t (a INTEGER); DROP TABLE t;")
|
||||
|
||||
Reference in new issue
Block a user