Skip to content

Commit 2146ca2

Browse files
authored
Consider the trailing semi-colon in SQL transformation (#631)
1 parent 6097b90 commit 2146ca2

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

doma-core/src/main/java/org/seasar/doma/internal/jdbc/sql/SqlParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -562,7 +562,7 @@ protected void parseEOL() {
562562
}
563563

564564
protected void parseDelimiter() {
565-
appendNode(OtherNode.of(token));
565+
rootNode.appendNode(OtherNode.of(token));
566566
}
567567

568568
protected boolean containsOnlyWhitespaces(SqlNode node) {

doma-core/src/test/java/org/seasar/doma/internal/jdbc/dialect/H2PagingTransformerTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,18 @@ public void testOffsetLimit() {
2525
assertEquals(expected, sql.getRawSql());
2626
}
2727

28+
@Test
29+
public void testOffsetLimit_semicolon() {
30+
String expected = "select * from emp order by emp.id limit 10 offset 5;";
31+
H2PagingTransformer transformer = new H2PagingTransformer(5, 10);
32+
SqlParser parser = new SqlParser("select * from emp order by emp.id;");
33+
SqlNode sqlNode = transformer.transform(parser.parse());
34+
NodePreparedSqlBuilder sqlBuilder =
35+
new NodePreparedSqlBuilder(new MockConfig(), SqlKind.SELECT, "dummyPath");
36+
PreparedSql sql = sqlBuilder.build(sqlNode, Function.identity());
37+
assertEquals(expected, sql.getRawSql());
38+
}
39+
2840
@Test
2941
public void testOffsetLimit_forUpdate() {
3042
String expected = "select * from emp order by emp.id limit 10 offset 5 for update";
@@ -37,6 +49,18 @@ public void testOffsetLimit_forUpdate() {
3749
assertEquals(expected, sql.getRawSql());
3850
}
3951

52+
@Test
53+
public void testOffsetLimit_forUpdate_semicolon() {
54+
String expected = "select * from emp order by emp.id limit 10 offset 5 for update;";
55+
H2PagingTransformer transformer = new H2PagingTransformer(5, 10);
56+
SqlParser parser = new SqlParser("select * from emp order by emp.id for update;");
57+
SqlNode sqlNode = transformer.transform(parser.parse());
58+
NodePreparedSqlBuilder sqlBuilder =
59+
new NodePreparedSqlBuilder(new MockConfig(), SqlKind.SELECT, "dummyPath");
60+
PreparedSql sql = sqlBuilder.build(sqlNode, Function.identity());
61+
assertEquals(expected, sql.getRawSql());
62+
}
63+
4064
@Test
4165
public void testOffsetOnly() {
4266
String expected = "select * from emp order by emp.id limit -1 offset 5";

0 commit comments

Comments
 (0)