Changeset: d2a2ad52310e for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/d2a2ad52310e
Modified Files:
src/test/java/JDBC_API_Tester.java
src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:
Convert Test_Int128() -> ApiTests#testInt128()
diffs (158 lines):
diff --git a/src/test/java/JDBC_API_Tester.java
b/src/test/java/JDBC_API_Tester.java
--- a/src/test/java/JDBC_API_Tester.java
+++ b/src/test/java/JDBC_API_Tester.java
@@ -1025,91 +1025,6 @@ public final class JDBC_API_Tester exten
}
@Test
- public void Test_Int128() {
- sb.setLength(0); // clear the output log buffer
-
- Statement stmt = null;
- ResultSet rs = null;
-
- // check first if datatype hugeint is supported on this server
- boolean supportsHugeInt = false;
- try {
- stmt = con.createStatement();
- // query sys.types to find out if sql datatype hugeint
is supported
- rs = stmt.executeQuery("SELECT sqlname from sys.types
where sqlname = 'hugeint';");
- if (rs != null) {
- if (rs.next()) {
- if ("hugeint".equals(rs.getString(1)))
- supportsHugeInt = true;
- }
- rs.close();
- rs = null;
- }
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
-
- if (!supportsHugeInt) {
- closeStmtResSet(stmt, rs);
- compareExpectedOutput("Test_Int128", "");
- return; // skip the rest of the test
- }
-
- // test whether we can represent a full-size int128 as JDBC
results
- PreparedStatement insertStatement = null;
- try {
- stmt.executeUpdate("CREATE TABLE HUGEINTT (I HUGEINT)");
- stmt.executeUpdate("CREATE TABLE HUGEDECT (I
DECIMAL(38,19))");
-
- BigInteger bi = new
BigInteger("123456789012345678909876543210987654321");
- BigDecimal bd = new
BigDecimal("1234567890123456789.9876543210987654321");
-
- insertStatement = con.prepareStatement("INSERT INTO
HUGEINTT VALUES (?)");
- insertStatement.setBigDecimal(1, new BigDecimal(bi));
- insertStatement.executeUpdate();
- insertStatement.close();
-
- stmt.executeUpdate("INSERT INTO HUGEDECT VALUES (" + bd
+ ");");
-
- rs = stmt.executeQuery("SELECT I FROM HUGEINTT");
- rs.next();
- BigInteger biRes = rs.getBigDecimal(1).toBigInteger();
- rs.close();
- sb.append("Expecting " + bi + ", got " +
biRes).append("\n");
- if (!bi.equals(biRes)) {
- sb.append("value of bi is NOT equal to
biRes!\n");
- }
-
- rs = stmt.executeQuery("SELECT I FROM HUGEDECT");
- rs.next();
- BigDecimal bdRes = rs.getBigDecimal(1);
- rs.close();
- sb.append("Expecting " + bd + ", got " +
bdRes).append("\n");
- if (!bd.equals(bdRes)) {
- sb.append("value of bd is NOT equal to
bdRes!\n");
- }
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
-
- // cleanup
- try {
- stmt.executeUpdate("DROP TABLE IF EXISTS HUGEINTT");
- stmt.executeUpdate("DROP TABLE IF EXISTS HUGEDECT");
- sb.append("SUCCESS\n");
- } catch (SQLException e) {
- sb.append("FAILED:
").append(e.getMessage()).append("\n");
- }
- closeStmtResSet(insertStatement, null);
- closeStmtResSet(stmt, rs);
-
- compareExpectedOutput("Test_Int128",
- "Expecting 123456789012345678909876543210987654321, got
123456789012345678909876543210987654321\n" +
- "Expecting 1234567890123456789.9876543210987654321, got
1234567890123456789.9876543210987654321\n" +
- "SUCCESS\n");
- }
-
- @Test
public void Test_Interval_Types() {
sb.setLength(0); // clear the output log buffer
diff --git a/src/test/java/org/monetdb/jdbc/ApiTests.java
b/src/test/java/org/monetdb/jdbc/ApiTests.java
--- a/src/test/java/org/monetdb/jdbc/ApiTests.java
+++ b/src/test/java/org/monetdb/jdbc/ApiTests.java
@@ -8,11 +8,14 @@ import org.monetdb.testinfra.CloseOnFail
import org.monetdb.testinfra.Config;
import org.monetdb.testinfra.MonetVersionNumber;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
import static org.monetdb.testinfra.Assertions.assertSQLException;
/**
@@ -450,4 +453,44 @@ public class ApiTests {
assertEquals(16384, rs.getFetchSize());
}
}
+
+ @Test
+ public void testInt128() throws SQLException {
+ // skip if server does not have huge
+ boolean serverHasHuge = 1 == queryInt("SELECT COUNT(*) FROM
sys.types where sqlname = 'hugeint'");
+ assumeTrue(serverHasHuge);
+
+ stmt.executeUpdate("DROP TABLE IF EXISTS test_huge_int");
+ stmt.executeUpdate("CREATE TABLE test_huge_int (i HUGEINT)");
+ stmt.executeUpdate("DROP TABLE IF EXISTS test_huge_dec");
+ stmt.executeUpdate("CREATE TABLE test_huge_dec (d
DECIMAL(38,19))");
+
+ BigInteger bi = new
BigInteger("123456789012345678909876543210987654321");
+ BigDecimal bd = new
BigDecimal("1234567890123456789.9876543210987654321");
+
+ // Insert huge int using prepared statement
+ String insertQuery = "INSERT INTO test_huge_int VALUES (?)";
+ try (PreparedStatement ps = conn.prepareStatement(insertQuery))
{
+ ps.setBigDecimal(1, new BigDecimal(bi));
+ ps.executeUpdate();
+ }
+
+ // insert huge decimal using string interpolation
+ stmt.executeUpdate("INSERT INTO test_huge_dec VALUES (" + bd +
");");
+
+ // extract them
+ try (ResultSet rs = stmt.executeQuery("SELECT * FROM
test_huge_int")) {
+ rs.next();
+ BigInteger i = rs.getBigDecimal(1).toBigInteger();
+ assertEquals(bi, i);
+ }
+ try (ResultSet rs = stmt.executeQuery("SELECT * FROM
test_huge_dec")) {
+ rs.next();
+ BigDecimal d = rs.getBigDecimal(1);
+ assertEquals(bd, d);
+ }
+
+ stmt.executeUpdate("DROP TABLE test_huge_int");
+ stmt.executeUpdate("DROP TABLE test_huge_dec");
+ }
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]