From 17cd4861f856b0d5937a4f4b326ddbbbfd721ae2 Mon Sep 17 00:00:00 2001 From: Alex Kasko Date: Sun, 14 Jun 2026 21:53:27 +0100 Subject: [PATCH] Tests clean run, Windows CI fix --- .github/workflows/Java.yml | 4 +- src/test/java/org/duckdb/TestClosure.java | 54 ++++++++++++-------- src/test/java/org/duckdb/TestDuckDBJDBC.java | 7 +-- src/test/java/org/duckdb/TestTimestamp.java | 4 +- src/test/java/org/duckdb/TestVariant.java | 4 +- 5 files changed, 45 insertions(+), 28 deletions(-) diff --git a/.github/workflows/Java.yml b/.github/workflows/Java.yml index 7764fc731..a98732a0d 100644 --- a/.github/workflows/Java.yml +++ b/.github/workflows/Java.yml @@ -648,7 +648,7 @@ jobs: - name: Build shell: cmd run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat" mkdir build cd build mkdir release @@ -665,7 +665,7 @@ jobs: - name: List Symbols shell: cmd run: | - call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + call "C:\Program Files\Microsoft Visual Studio\18\Enterprise\VC\Auxiliary\Build\vcvars64.bat" dumpbin.exe /imports build\release\libduckdb_java.so_windows_amd64 dumpbin.exe /exports build\release\libduckdb_java.so_windows_amd64 diff --git a/src/test/java/org/duckdb/TestClosure.java b/src/test/java/org/duckdb/TestClosure.java index 8f8787e2a..bd57e5756 100644 --- a/src/test/java/org/duckdb/TestClosure.java +++ b/src/test/java/org/duckdb/TestClosure.java @@ -186,7 +186,7 @@ public static void test_long_query_conn_close() throws Exception { -> stmt.executeQuery( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte"), SQLException.class); th.join(); @@ -203,7 +203,8 @@ public static void test_long_query_conn_close_prepared() throws Exception { stmt.execute("INSERT INTO test_fib1 values(1, 0, 1)"); PreparedStatement ps = conn.prepareStatement( "WITH RECURSIVE cte AS (" - + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + + + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte"); long start = System.currentTimeMillis(); Thread th = new Thread(() -> { @@ -245,7 +246,7 @@ public static void test_long_query_stmt_close() throws Exception { -> stmt.executeQuery( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte"), SQLException.class); th.join(); @@ -263,7 +264,7 @@ public static void test_long_query_prepared_stmt_close() throws Exception { PreparedStatement ps = conn.prepareStatement( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte" ); @@ -496,7 +497,7 @@ public static void test_results_fetch_no_hang_prepared() throws Exception { @SuppressWarnings("try") public static void test_results_fetch_no_hang_prepared_chunked() throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); - long rowsCount = 1 << 24; + long rowsCount = 1 << 25; int iterations = 1; for (int i = 0; i < iterations; i++) { try (DuckDBConnection conn = DriverManager.getConnection(JDBC_URL).unwrap(DuckDBConnection.class); @@ -538,23 +539,29 @@ public static void test_stmt_can_only_cancel_self() throws Exception { } catch (Exception e) { e.printStackTrace(); } + try { + Thread.sleep(1000); + assertFalse(stmt2.isClosed()); + stmt2.cancel(); + } catch (Exception e) { + e.printStackTrace(); + } }); th.start(); - try ( - ResultSet rs = stmt2.executeQuery( + String msg = assertThrows(() -> { + stmt2.executeQuery( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 50000) " - + "SELECT avg(f) FROM cte")) { - rs.next(); - assertTrue(rs.getDouble(1) > 0); - } + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + + "SELECT avg(f) FROM cte"); + }, SQLException.class); + assertTrue(msg.startsWith("INTERRUPT Error")); th.join(); long elapsed = System.currentTimeMillis() - start; assertTrue(elapsed > 1000); assertFalse(conn.isClosed()); assertFalse(stmt1.isClosed()); - assertFalse(stmt2.isClosed()); + assertTrue(stmt2.isClosed()); } } @@ -567,7 +574,7 @@ public static void test_prepared_stmt_can_only_cancel_self() throws Exception { PreparedStatement ps2 = conn.prepareStatement( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 50000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte")) { long start = System.currentTimeMillis(); Thread th = new Thread(() -> { @@ -577,18 +584,23 @@ public static void test_prepared_stmt_can_only_cancel_self() throws Exception { } catch (Exception e) { e.printStackTrace(); } + try { + Thread.sleep(1000); + assertFalse(ps2.isClosed()); + ps2.cancel(); + } catch (Exception e) { + e.printStackTrace(); + } }); th.start(); - try (ResultSet rs = ps2.executeQuery()) { - rs.next(); - assertTrue(rs.getDouble(1) > 0); - } + String msg = assertThrows(ps2::executeQuery, SQLException.class); + assertTrue(msg.startsWith("INTERRUPT Error")); th.join(); long elapsed = System.currentTimeMillis() - start; assertTrue(elapsed > 1000); assertFalse(conn.isClosed()); assertFalse(ps1.isClosed()); - assertFalse(ps2.isClosed()); + assertTrue(ps2.isClosed()); } } } @@ -604,7 +616,7 @@ public static void test_stmt_query_timeout() throws Exception { -> stmt.executeQuery( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte"), SQLTimeoutException.class); long elapsed = System.currentTimeMillis() - start; @@ -628,7 +640,7 @@ public static void test_prepared_stmt_query_timeout() throws Exception { PreparedStatement ps = conn.prepareStatement( "WITH RECURSIVE cte AS (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 150000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte")) { ps.setQueryTimeout(1); long start = System.currentTimeMillis(); diff --git a/src/test/java/org/duckdb/TestDuckDBJDBC.java b/src/test/java/org/duckdb/TestDuckDBJDBC.java index a2aa412d0..b8d6277c6 100644 --- a/src/test/java/org/duckdb/TestDuckDBJDBC.java +++ b/src/test/java/org/duckdb/TestDuckDBJDBC.java @@ -1635,7 +1635,8 @@ public static void test_all_types() throws Exception { TimeZone.setDefault(ALL_TYPES_TIME_ZONE); try { String sql = - "select * EXCLUDE(time, time_ns, time_tz)" + // TODO: remove excludes + "select * EXCLUDE(time, time_ns, time_tz, timestamp_tz_ns)" + "\n , CASE WHEN time = '24:00:00'::TIME THEN '23:59:59.999999'::TIME ELSE time END AS time" + "\n , CASE WHEN time_ns = '24:00:00'::TIME_NS THEN '23:59:59.999999'::TIME_NS ELSE time_ns END AS time_ns" @@ -2033,7 +2034,7 @@ public static void test_get_profiling_information() throws Exception { try (ResultSet rs = stmt.executeQuery("SELECT 1+1")) { assertNotNull(rs); String profile = ((DuckDBConnection) conn).getProfilingInformation(ProfilerPrintFormat.JSON); - assertTrue(profile.contains("\"query_name\": \"SELECT 1+1\",")); + assertTrue(profile.contains("\"sql\": \"SELECT 1+1\",")); } } } @@ -2068,7 +2069,7 @@ public static void test_query_progress() throws Exception { -> stmt.executeQuery( "WITH RECURSIVE cte AS NOT MATERIALIZED (" + - "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 200000) " + "SELECT * from test_fib1 UNION ALL SELECT cte.i + 1, cte.f, cte.p + cte.f from cte WHERE cte.i < 1000000) " + "SELECT avg(f) FROM cte"), SQLException.class); diff --git a/src/test/java/org/duckdb/TestTimestamp.java b/src/test/java/org/duckdb/TestTimestamp.java index 98bdaebe0..ab1b918f1 100644 --- a/src/test/java/org/duckdb/TestTimestamp.java +++ b/src/test/java/org/duckdb/TestTimestamp.java @@ -593,7 +593,9 @@ public static void test_timestamp_before_epoch() throws Exception { assertEquals(rs.getObject(1, LocalDateTime.class), LocalDateTime.of(1969, 1, 1, 0, 0, 0, 123456789)); } - try (ResultSet rs = stmt.executeQuery("SELECT TIMESTAMP WITH TIME ZONE '1969-01-01 00:00:00.123456Z'")) { + // try (ResultSet rs = stmt.executeQuery("SELECT TIMESTAMP WITH TIME ZONE '1969-01-01 + // 00:00:00.123456Z'")) { + try (ResultSet rs = stmt.executeQuery("SELECT '1969-01-01 00:00:00.123456Z'::TIMESTAMP WITH TIME ZONE")) { rs.next(); assertEquals(rs.getObject(1, LocalDateTime.class), LocalDateTime.of(1969, 1, 1, 2, 0, 0, 123456000)); } diff --git a/src/test/java/org/duckdb/TestVariant.java b/src/test/java/org/duckdb/TestVariant.java index 7cae01623..efa2861af 100644 --- a/src/test/java/org/duckdb/TestVariant.java +++ b/src/test/java/org/duckdb/TestVariant.java @@ -240,7 +240,9 @@ public static void test_variant_struct() throws Exception { } } - public static void test_variant_struct_with_variant() throws Exception { + // TODO: enable me + // https://github.com/duckdb/duckdb/issues/23274 + public static void DISABLED_test_variant_struct_with_variant() throws Exception { try (Connection conn = DriverManager.getConnection(JDBC_URL); Statement stmt = conn.createStatement()) { stmt.execute("CREATE TABLE tab1 (col1 INTEGER, col2 STRUCT(s1 INTEGER, s2 VARIANT))");