Skip to content

Commit

Permalink
filter empty sql
Browse files Browse the repository at this point in the history
Signed-off-by: ⚆ Trung Nguyen <[email protected]>
  • Loading branch information
trung committed Jan 4, 2024
1 parent 3531c15 commit 6b83671
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/main/java/io/r2dbc/h2/H2Statement.java
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public Flux<H2Result> execute() {
Assert.requireTrue(!this.bindings.open, "No unfinished bindings!");

return Flux.fromArray(this.sql.split(";"))
.filter(sql -> !sql.trim().isEmpty())
.flatMap(sql -> {
if (this.generatedColumns == null) {
return execute(this.client, sql.trim(), this.bindings, this.codecs, this.allGeneratedColumns);
Expand Down
30 changes: 30 additions & 0 deletions src/test/java/io/r2dbc/h2/H2StatementTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,36 @@ void executeWithoutAdd() {
.verifyComplete();
}

@Test
void executeMultipleCommands() {
CommandInterface insertCommand1 = mock(CommandInterface.class);
when(this.client.prepareCommand("insert test-query-1", Collections.emptyList())).thenReturn(Collections.singleton(insertCommand1).iterator());
when(this.client.update(insertCommand1, false)).thenReturn(new ResultWithGeneratedKeys.WithKeys(0, new LocalResult()));

CommandInterface insertCommand2 = mock(CommandInterface.class);
when(this.client.prepareCommand("insert test-query-2", Collections.emptyList())).thenReturn(Collections.singleton(insertCommand2).iterator());
when(this.client.update(insertCommand2, false)).thenReturn(new ResultWithGeneratedKeys.WithKeys(0, new LocalResult()));

new H2Statement(this.client, this.codecs, "insert test-query-1;insert test-query-2")
.execute()
.as(StepVerifier::create)
.expectNextCount(2)
.verifyComplete();
}

@Test
void executeMultipleCommandsIgnoringEmptyOne() {
CommandInterface command = mock(CommandInterface.class);
when(this.client.prepareCommand("insert test-query-1", Collections.emptyList())).thenReturn(Collections.singleton(command).iterator());
when(this.client.update(command, false)).thenReturn(new ResultWithGeneratedKeys.WithKeys(0, new LocalResult()));

new H2Statement(this.client, this.codecs, "insert test-query-1;\n ")
.execute()
.as(StepVerifier::create)
.expectNextCount(1)
.verifyComplete();
}

@Test
void returnGeneratedValues() {
CommandInterface command = mock(CommandInterface.class);
Expand Down

0 comments on commit 6b83671

Please sign in to comment.