Skip to content

Commit e2170b6

Browse files
authored
Retain first semi-colon instead of removing it in SQL template (#621)
1 parent 7df4db2 commit e2170b6

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@ public SqlNode parse() {
232232
break;
233233
}
234234
case DELIMITER:
235+
{
236+
parseDelimiter();
237+
break outer;
238+
}
235239
case EOF:
236240
{
237241
break outer;
@@ -557,6 +561,10 @@ protected void parseEOL() {
557561
appendNode(node);
558562
}
559563

564+
protected void parseDelimiter() {
565+
appendNode(OtherNode.of(token));
566+
}
567+
560568
protected boolean containsOnlyWhitespaces(SqlNode node) {
561569
for (SqlNode child : node.getChildren()) {
562570
if (!(child instanceof WhitespaceNode)) {

doma-core/src/test/java/org/seasar/doma/internal/jdbc/sql/SqlParserTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,18 @@ public void testManyEol() throws WrapException {
943943
assertNotNull(sqlNode);
944944
}
945945

946+
@Test
947+
public void testDelimiter() {
948+
ExpressionEvaluator evaluator = new ExpressionEvaluator();
949+
SqlParser parser = new SqlParser("select 1; select 2;");
950+
SqlNode sqlNode = parser.parse();
951+
PreparedSql sql =
952+
new NodePreparedSqlBuilder(
953+
config, SqlKind.SELECT, "dummyPath", evaluator, SqlLogType.FORMATTED)
954+
.build(sqlNode, Function.identity());
955+
assertEquals("select 1;", sql.getRawSql());
956+
}
957+
946958
public enum MyEnum {
947959
AAA,
948960
BBB,

0 commit comments

Comments
 (0)