From 6b836713b11dec389452e4a01f6c1cc7433a774e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9A=86=20Trung=20Nguyen?= <24930+trung@users.noreply.github.com> Date: Thu, 4 Jan 2024 12:42:17 -0500 Subject: [PATCH] filter empty sql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ⚆ Trung Nguyen <24930+trung@users.noreply.github.com> --- src/main/java/io/r2dbc/h2/H2Statement.java | 1 + .../java/io/r2dbc/h2/H2StatementTest.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/io/r2dbc/h2/H2Statement.java b/src/main/java/io/r2dbc/h2/H2Statement.java index 53550e9..7ea284c 100644 --- a/src/main/java/io/r2dbc/h2/H2Statement.java +++ b/src/main/java/io/r2dbc/h2/H2Statement.java @@ -102,6 +102,7 @@ public Flux 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); diff --git a/src/test/java/io/r2dbc/h2/H2StatementTest.java b/src/test/java/io/r2dbc/h2/H2StatementTest.java index 7e92799..a3d74de 100644 --- a/src/test/java/io/r2dbc/h2/H2StatementTest.java +++ b/src/test/java/io/r2dbc/h2/H2StatementTest.java @@ -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);