Mercurial > hg > monetdb-java
comparison tests/JDBC_API_Tester.java @ 447:7147d1252828
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.
author | Martin van Dinther <martin.van.dinther@monetdbsolutions.com> |
---|---|
date | Wed, 03 Mar 2021 14:02:58 +0100 (2021-03-03) |
parents | 1ae0dc05bce5 |
children | d7bac8d0fb93 |
comparison
equal
deleted
inserted
replaced
446:1ae0dc05bce5 | 447:7147d1252828 |
---|---|
8 | 8 |
9 import java.sql.*; | 9 import java.sql.*; |
10 | 10 |
11 import java.io.StringReader; | 11 import java.io.StringReader; |
12 import java.math.BigDecimal; | 12 import java.math.BigDecimal; |
13 import java.math.BigInteger; | |
13 import java.nio.charset.Charset; | 14 import java.nio.charset.Charset; |
14 import java.text.SimpleDateFormat; | 15 import java.text.SimpleDateFormat; |
15 import java.util.ArrayList; | 16 import java.util.ArrayList; |
16 import java.util.Calendar; | 17 import java.util.Calendar; |
17 import java.util.Iterator; | 18 import java.util.Iterator; |
57 jt.Test_Creplysize(); | 58 jt.Test_Creplysize(); |
58 jt.Test_Csavepoints(); | 59 jt.Test_Csavepoints(); |
59 jt.Test_Ctransaction(); | 60 jt.Test_Ctransaction(); |
60 jt.Test_Dobjects(); | 61 jt.Test_Dobjects(); |
61 jt.Test_FetchSize(); | 62 jt.Test_FetchSize(); |
62 // jt.Test_Int128(); | 63 jt.Test_Int128(); |
63 jt.Test_PSgeneratedkeys(); | 64 jt.Test_PSgeneratedkeys(); |
64 jt.Test_PSgetObject(); | 65 jt.Test_PSgetObject(); |
65 jt.Test_PSlargebatchval(); | 66 jt.Test_PSlargebatchval(); |
66 jt.Test_PSlargeresponse(con_URL); | 67 jt.Test_PSlargeresponse(con_URL); |
67 jt.Test_PSmanycon(con_URL); | 68 jt.Test_PSmanycon(con_URL); |
804 compareExpectedOutput("Test_FetchSize", | 805 compareExpectedOutput("Test_FetchSize", |
805 "Statement fetch size before set: 0\n" + | 806 "Statement fetch size before set: 0\n" + |
806 "ResultSet fetch size before set: 250\n" + | 807 "ResultSet fetch size before set: 250\n" + |
807 "Statement fetch size after set: 40\n" + | 808 "Statement fetch size after set: 40\n" + |
808 "ResultSet fetch size after set: 16384\n"); | 809 "ResultSet fetch size after set: 16384\n"); |
810 } | |
811 | |
812 private void Test_Int128() { | |
813 sb.setLength(0); // clear the output log buffer | |
814 | |
815 Statement stmt = null; | |
816 ResultSet rs = null; | |
817 | |
818 // check first if datatype hugeint is supported on this server | |
819 boolean supportsHugeInt = false; | |
820 try { | |
821 stmt = con.createStatement(); | |
822 // query sys.types to find out if sql datatype hugeint is supported | |
823 rs = stmt.executeQuery("SELECT sqlname from sys.types where sqlname = 'hugeint';"); | |
824 if (rs != null && rs.next()) { | |
825 String sqlname = rs.getString(1); | |
826 if ("hugeint".equals(sqlname)) | |
827 supportsHugeInt = true; | |
828 } | |
829 } catch (SQLException e) { | |
830 sb.append("FAILED: ").append(e.getMessage()).append("\n"); | |
831 } | |
832 | |
833 if (!supportsHugeInt) { | |
834 closeStmtResSet(stmt, rs); | |
835 compareExpectedOutput("Test_Int128", ""); | |
836 return; // skip the rest of the test | |
837 } | |
838 | |
839 // test whether we can represent a full-size int128 as JDBC results | |
840 PreparedStatement insertStatement = null; | |
841 try { | |
842 stmt.executeUpdate("CREATE TABLE HUGEINTT (I HUGEINT)"); | |
843 stmt.executeUpdate("CREATE TABLE HUGEDECT (I DECIMAL(38,19))"); | |
844 | |
845 BigInteger bi = new BigInteger("123456789012345678909876543210987654321"); | |
846 BigDecimal bd = new BigDecimal("1234567890123456789.9876543210987654321"); | |
847 | |
848 insertStatement = con.prepareStatement("INSERT INTO HUGEINTT VALUES (?)"); | |
849 insertStatement.setBigDecimal(1, new BigDecimal(bi)); | |
850 insertStatement.executeUpdate(); | |
851 insertStatement.close(); | |
852 | |
853 stmt.executeUpdate("INSERT INTO HUGEDECT VALUES (" + bd + ");"); | |
854 | |
855 rs = stmt.executeQuery("SELECT I FROM HUGEINTT"); | |
856 rs.next(); | |
857 BigInteger biRes = rs.getBigDecimal(1).toBigInteger(); | |
858 rs.close(); | |
859 sb.append("Expecting " + bi + ", got " + biRes).append("\n"); | |
860 if (!bi.equals(biRes)) { | |
861 sb.append("value of bi is NOT equal to biRes!").append("\n"); | |
862 } | |
863 | |
864 rs = stmt.executeQuery("SELECT I FROM HUGEDECT"); | |
865 rs.next(); | |
866 BigDecimal bdRes = rs.getBigDecimal(1); | |
867 rs.close(); | |
868 sb.append("Expecting " + bd + ", got " + bdRes).append("\n"); | |
869 if (!bd.equals(bdRes)) { | |
870 sb.append("value of bd is NOT equal to bdRes!").append("\n"); | |
871 } | |
872 } catch (SQLException e) { | |
873 sb.append("FAILED: ").append(e.getMessage()).append("\n"); | |
874 } | |
875 | |
876 // cleanup | |
877 try { | |
878 stmt.executeUpdate("DROP TABLE IF EXISTS HUGEINTT"); | |
879 stmt.executeUpdate("DROP TABLE IF EXISTS HUGEDECT"); | |
880 sb.append("SUCCESS").append("\n"); | |
881 } catch (SQLException e) { | |
882 sb.append("FAILED: ").append(e.getMessage()).append("\n"); | |
883 } | |
884 closeStmtResSet(insertStatement, null); | |
885 closeStmtResSet(stmt, rs); | |
886 | |
887 compareExpectedOutput("Test_Int128", | |
888 "Expecting 123456789012345678909876543210987654321, got 123456789012345678909876543210987654321\n" + | |
889 "Expecting 1234567890123456789.9876543210987654321, got 1234567890123456789.9876543210987654321\n" + | |
890 "SUCCESS\n"); | |
809 } | 891 } |
810 | 892 |
811 private void Test_PSgeneratedkeys() { | 893 private void Test_PSgeneratedkeys() { |
812 sb.setLength(0); // clear the output log buffer | 894 sb.setLength(0); // clear the output log buffer |
813 | 895 |