From 4f2c85e97df89da75bddd475cea24b1ac440cd6b Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Tue, 19 Jan 2021 23:51:13 +0800 Subject: [PATCH 1/4] Add verify workflow for validating pull request on-demand --- .github/workflows/verify.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/verify.yml diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml new file mode 100644 index 000000000..52f4f76d4 --- /dev/null +++ b/.github/workflows/verify.yml @@ -0,0 +1,36 @@ +name: Verify + +on: + workflow_dispatch: + inputs: + clickhouse: + description: "ClickHouse Version" + required: true + default: "latest" + java: + description: "Java Version" + required: true + default: "8" + pr: + description: "Pull Request#" + required: false + +jobs: + verify: + runs-on: ubuntu-latest + name: Verify pull request \#${{ github.event.inputs.pr }} using JDK ${{ github.event.inputs.java }} against ClickHouse ${{ github.event.inputs.clickhouse }} + steps: + - name: Check out repository + uses: actions/checkout@v2 + if: github.event.inputs.pr == '' + - name: Check out pull request \#${{ github.event.inputs.pr }} + uses: actions/checkout@v2 + if: github.event.inputs.pr != '' + with: + ref: refs/remotes/pull/${{ github.event.inputs.pr }}/merge + - name: Set up JDK ${{ github.event.inputs.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ github.event.inputs.java }} + - name: Build with Maven + run: mvn --batch-mode --update-snapshots -DclickhouseVersion=${{ matrix.clickhouse }} verify From 22ceec12f7a844c9ef7ccdbb1b03c746bdc2ea22 Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Wed, 20 Jan 2021 07:53:30 +0800 Subject: [PATCH 2/4] Fix failed test cases and add 19.14 in regression --- .github/workflows/build.yml | 10 +++++++++- .github/workflows/verify.yml | 14 +++++++------- .../yandex/clickhouse/integration/ErrorsTest.java | 11 +++++++++-- .../clickhouse/integration/NativeStreamTest.java | 5 +++++ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f5c291a68..74f431ac3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,7 +25,7 @@ jobs: matrix: java: [8, 9, 11] # most recent LTS releases and latest stable build - clickhouse: ["20.3", "20.8", "latest"] + clickhouse: ["19.14", "20.3", "20.8", "latest"] name: Build using JDK ${{ matrix.java }} against ClickHouse ${{ matrix.clickhouse }} steps: - name: Check out Git repository @@ -34,5 +34,13 @@ jobs: uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} + # Step that does that actual cache save and restore + - name: Cache maven dependencies + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-build-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-build- - name: Build with Maven run: mvn --batch-mode --update-snapshots -DclickhouseVersion=${{ matrix.clickhouse }} verify diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 52f4f76d4..229a4aeee 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -4,26 +4,26 @@ on: workflow_dispatch: inputs: clickhouse: - description: "ClickHouse Version" + description: "ClickHouse version" required: true default: "latest" java: - description: "Java Version" + description: "Java version" required: true default: "8" pr: - description: "Pull Request#" + description: "Pull request#" required: false jobs: verify: runs-on: ubuntu-latest - name: Verify pull request \#${{ github.event.inputs.pr }} using JDK ${{ github.event.inputs.java }} against ClickHouse ${{ github.event.inputs.clickhouse }} + name: Verify branch/PR using JDK ${{ github.event.inputs.java }} against ClickHouse ${{ github.event.inputs.clickhouse }} steps: - name: Check out repository uses: actions/checkout@v2 if: github.event.inputs.pr == '' - - name: Check out pull request \#${{ github.event.inputs.pr }} + - name: Check out PR ${{ github.event.inputs.pr }} uses: actions/checkout@v2 if: github.event.inputs.pr != '' with: @@ -32,5 +32,5 @@ jobs: uses: actions/setup-java@v1 with: java-version: ${{ github.event.inputs.java }} - - name: Build with Maven - run: mvn --batch-mode --update-snapshots -DclickhouseVersion=${{ matrix.clickhouse }} verify + - name: Verify with Maven + run: mvn --batch-mode --update-snapshots -DclickhouseVersion=${{ github.event.inputs.clickhouse }} verify diff --git a/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java b/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java index 48be4c9fd..14c983d92 100644 --- a/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java +++ b/src/test/java/ru/yandex/clickhouse/integration/ErrorsTest.java @@ -7,6 +7,7 @@ import ru.yandex.clickhouse.ClickHouseContainerForTest; import ru.yandex.clickhouse.except.ClickHouseException; import ru.yandex.clickhouse.settings.ClickHouseProperties; +import ru.yandex.clickhouse.util.ClickHouseVersionNumberUtil; import javax.sql.DataSource; @@ -27,7 +28,12 @@ public void testWrongUser() { try { Connection connection = dataSource.getConnection(); } catch (Exception e) { - Assert.assertEquals((getClickhouseException(e)).getErrorCode(), 516); + String version = ClickHouseContainerForTest.getClickHouseVersion(); + if (!version.isEmpty() && ClickHouseVersionNumberUtil.getMajorVersion(version) <= 19) { + Assert.assertEquals((getClickhouseException(e)).getErrorCode(), 192); + } else { + Assert.assertEquals((getClickhouseException(e)).getErrorCode(), 516); + } return; } Assert.assertTrue(false, "didn' find correct error"); @@ -58,7 +64,8 @@ public void testErrorDecompression() throws Exception { try { statement.executeBatch(); } catch (Exception e) { - Assert.assertTrue(getClickhouseException(e).getMessage().startsWith("ClickHouse exception, code: 60, host: " + address[0] +", port: " + address[1] +"; Code: 60, e.displayText() = DB::Exception: Table test.table_not_exists doesn't exist.")); + String exceptionMsg = getClickhouseException(e).getMessage(); + Assert.assertTrue(exceptionMsg.startsWith("ClickHouse exception, code: 60, host: " + address[0] +", port: " + address[1] +"; Code: 60, e.displayText() = DB::Exception: Table test.table_not_exists doesn't exist"), exceptionMsg); return; } Assert.assertTrue(false, "didn' find correct error"); diff --git a/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java b/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java index 11f37cc86..ee7d6a7e8 100644 --- a/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java +++ b/src/test/java/ru/yandex/clickhouse/integration/NativeStreamTest.java @@ -36,6 +36,11 @@ public void testLowCardinality() throws Exception{ "CREATE TABLE test.low_cardinality (date Date, lowCardinality LowCardinality(String), string String) ENGINE = MergeTree(date, (date), 8192)" ); + // Code: 368, e.displayText() = DB::Exception: Bad cast from type DB::ColumnString to DB::ColumnLowCardinality + if (connection.getMetaData().getDatabaseMajorVersion() <= 19) { + return; + } + final Date date1 = new Date(1497474018000L); statement.sendNativeStream( From 6659624ccb9623c96f07736ec75374461300cf9d Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Wed, 20 Jan 2021 07:55:32 +0800 Subject: [PATCH 3/4] Add missing changes to fix build break --- .../ru/yandex/clickhouse/ClickHouseContainerForTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java b/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java index d12fe5064..21166bf58 100644 --- a/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java +++ b/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java @@ -17,13 +17,15 @@ public class ClickHouseContainerForTest { private static final int NATIVE_PORT = 9000; private static final int MYSQL_PORT = 3306; + private static final String clickhouseVersion; private static final GenericContainer clickhouseContainer; static { String imageTag = System.getProperty("clickhouseVersion"); if (imageTag == null || (imageTag = imageTag.trim()).isEmpty()) { - imageTag = ""; + clickhouseVersion = imageTag = ""; } else { + clickhouseVersion = imageTag; imageTag = ":" + imageTag; } @@ -33,6 +35,10 @@ public class ClickHouseContainerForTest { .withExposedPorts(HTTP_PORT, NATIVE_PORT, MYSQL_PORT); } + public static String getClickHouseVersion() { + return clickhouseVersion; + } + public static GenericContainer getClickHouseContainer() { return clickhouseContainer; } From 24369d4e7fb819ada88e8641c1f14b8d9851d523 Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Wed, 20 Jan 2021 08:14:14 +0800 Subject: [PATCH 4/4] Fix build break when clickhouseVersion is "latest" --- .../ru/yandex/clickhouse/ClickHouseContainerForTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java b/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java index 21166bf58..c98b649ee 100644 --- a/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java +++ b/src/test/java/ru/yandex/clickhouse/ClickHouseContainerForTest.java @@ -4,6 +4,7 @@ import org.testng.annotations.BeforeSuite; import ru.yandex.clickhouse.settings.ClickHouseProperties; +import ru.yandex.clickhouse.util.ClickHouseVersionNumberUtil; import java.time.Duration; @@ -25,7 +26,11 @@ public class ClickHouseContainerForTest { if (imageTag == null || (imageTag = imageTag.trim()).isEmpty()) { clickhouseVersion = imageTag = ""; } else { - clickhouseVersion = imageTag; + if (ClickHouseVersionNumberUtil.getMajorVersion(imageTag) == 0) { + clickhouseVersion = ""; + } else { + clickhouseVersion = imageTag; + } imageTag = ":" + imageTag; }