Changeset: 7147d1252828 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=7147d1252828
Modified Files:
tests/JDBC_API_Tester.java
Branch: default
Log Message:
Converted and added Test_Int128() to JDBC_API_Tester.java.
As it is dependent on the availability of support of datatype hugeint an extra
check for hugeint is added.
diffs (108 lines):
diff --git a/tests/JDBC_API_Tester.java b/tests/JDBC_API_Tester.java
--- a/tests/JDBC_API_Tester.java
+++ b/tests/JDBC_API_Tester.java
@@ -10,6 +10,7 @@ import java.sql.*;
import java.io.StringReader;
import java.math.BigDecimal;
+import java.math.BigInteger;
import java.nio.charset.Charset;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -59,7 +60,7 @@ final public class JDBC_API_Tester {
jt.Test_Ctransaction();
jt.Test_Dobjects();
jt.Test_FetchSize();
- // jt.Test_Int128();
+ jt.Test_Int128();
jt.Test_PSgeneratedkeys();
jt.Test_PSgetObject();
jt.Test_PSlargebatchval();
@@ -808,6 +809,87 @@ final public class JDBC_API_Tester {
"ResultSet fetch size after set: 16384\n");
}
+ private 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 && rs.next()) {
+ String sqlname = rs.getString(1);
+ if ("hugeint".equals(sqlname))
+ supportsHugeInt = true;
+ }
+ } 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!").append("\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!").append("\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").append("\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");
+ }
+
private void Test_PSgeneratedkeys() {
sb.setLength(0); // clear the output log buffer
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list