Changeset: addb345e4fa8 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java?cmd=changeset;node=addb345e4fa8
Modified Files:
        tests/JDBC_API_Tester.java
Branch: default
Log Message:

Changed test 'getIndexInfo(null, sys, table_types, false, false)' to resolve 
difference (9 instead of 10) reported on testweb for default branch.
Also implemented some more tests.


diffs (truncated from 417 to 300 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
@@ -8,6 +8,8 @@
 
 import java.sql.*;
 import java.util.*;
+import java.io.StringReader;
+import java.nio.charset.Charset;
 
 /**
  * class to test JDBC Driver API methods and behavior of MonetDB server.
@@ -49,8 +51,8 @@ final public class JDBC_API_Tester {
                jt.Test_PSgeneratedkeys();
                jt.Test_PSgetObject();
                jt.Test_PSlargebatchval();
-               jt.Test_PSlargeresponse();
-               jt.Test_PSmanycon();
+               jt.Test_PSlargeresponse(con_URL);
+               jt.Test_PSmanycon(con_URL);
                jt.Test_PSmetadata();
                jt.Test_PSsomeamount();
                jt.Test_PSsqldata();
@@ -643,74 +645,74 @@ final public class JDBC_API_Tester {
                        // inspect the catalog by use of dbmd functions
                        compareResultSet(dbmd.getCatalogs(), "getCatalogs()",
                        "Resultset with 1 columns\n" +
-                       "TABLE_CAT      \n");
+                       "TABLE_CAT\n");
 
                        compareResultSet(dbmd.getSchemas(null, "sys"), 
"getSchemas(null, sys)",
                        "Resultset with 2 columns\n" +
-                       "TABLE_SCHEM    TABLE_CATALOG   \n" +
-                       "sys    null    \n");
+                       "TABLE_SCHEM    TABLE_CATALOG\n" +
+                       "sys    null\n");
 
                        compareResultSet(dbmd.getTables(null, "tmp", null, 
null), "getTables(null, tmp, null, null)",   // schema tmp has 6 tables
                        "Resultset with 10 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
TABLE_TYPE      REMARKS TYPE_CAT        TYPE_SCHEM      TYPE_NAME       
SELF_REFERENCING_COL_NAME       REF_GENERATION  \n" +
-                       "null   tmp     _columns        SYSTEM TABLE    null    
null    null    null    null    null    \n" +
-                       "null   tmp     _tables SYSTEM TABLE    null    null    
null    null    null    null    \n" +
-                       "null   tmp     idxs    SYSTEM TABLE    null    null    
null    null    null    null    \n" +
-                       "null   tmp     keys    SYSTEM TABLE    null    null    
null    null    null    null    \n" +
-                       "null   tmp     objects SYSTEM TABLE    null    null    
null    null    null    null    \n" +
-                       "null   tmp     triggers        SYSTEM TABLE    null    
null    null    null    null    null    \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
TABLE_TYPE      REMARKS TYPE_CAT        TYPE_SCHEM      TYPE_NAME       
SELF_REFERENCING_COL_NAME       REF_GENERATION\n" +
+                       "null   tmp     _columns        SYSTEM TABLE    null    
null    null    null    null    null\n" +
+                       "null   tmp     _tables SYSTEM TABLE    null    null    
null    null    null    null\n" +
+                       "null   tmp     idxs    SYSTEM TABLE    null    null    
null    null    null    null\n" +
+                       "null   tmp     keys    SYSTEM TABLE    null    null    
null    null    null    null\n" +
+                       "null   tmp     objects SYSTEM TABLE    null    null    
null    null    null    null\n" +
+                       "null   tmp     triggers        SYSTEM TABLE    null    
null    null    null    null    null\n");
 
                        compareResultSet(dbmd.getTables(null, "sys", "schemas", 
null), "getTables(null, sys, schemas, null)",
                        "Resultset with 10 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
TABLE_TYPE      REMARKS TYPE_CAT        TYPE_SCHEM      TYPE_NAME       
SELF_REFERENCING_COL_NAME       REF_GENERATION  \n" +
-                       "null   sys     schemas SYSTEM TABLE    null    null    
null    null    null    null    \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
TABLE_TYPE      REMARKS TYPE_CAT        TYPE_SCHEM      TYPE_NAME       
SELF_REFERENCING_COL_NAME       REF_GENERATION\n" +
+                       "null   sys     schemas SYSTEM TABLE    null    null    
null    null    null    null\n");
 
                        compareResultSet(dbmd.getColumns(null, "sys", 
"table_types", null), "getColumns(null, sys, table_types, null)",
                        "Resultset with 24 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     DATA_TYPE       TYPE_NAME       COLUMN_SIZE     BUFFER_LENGTH   
DECIMAL_DIGITS  NUM_PREC_RADIX  NULLABLE        REMARKS COLUMN_DEF      
SQL_DATA_TYPE   SQL_DATETIME_SUB        CHAR_OCTET_LENGTH       
ORDINAL_POSITION        IS_NULLABLE     SCOPE_CATALOG   SCOPE_SCHEMA    
SCOPE_TABLE     SOURCE_DATA_TYPE        IS_AUTOINCREMENT        
IS_GENERATEDCOLUMN      \n" +
-                       "null   sys     table_types     table_type_id   5       
smallint        16      0       0       2       0       null    null    0       
0       null    1       NO      null    null    null    null    NO      NO      
\n" +
-                       "null   sys     table_types     table_type_name 12      
varchar 25      0       0       0       0       null    null    0       0       
25      2       NO      null    null    null    null    NO      NO      \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     DATA_TYPE       TYPE_NAME       COLUMN_SIZE     BUFFER_LENGTH   
DECIMAL_DIGITS  NUM_PREC_RADIX  NULLABLE        REMARKS COLUMN_DEF      
SQL_DATA_TYPE   SQL_DATETIME_SUB        CHAR_OCTET_LENGTH       
ORDINAL_POSITION        IS_NULLABLE     SCOPE_CATALOG   SCOPE_SCHEMA    
SCOPE_TABLE     SOURCE_DATA_TYPE        IS_AUTOINCREMENT        
IS_GENERATEDCOLUMN\n" +
+                       "null   sys     table_types     table_type_id   5       
smallint        16      0       0       2       0       null    null    0       
0       null    1       NO      null    null    null    null    NO      NO\n" +
+                       "null   sys     table_types     table_type_name 12      
varchar 25      0       0       0       0       null    null    0       0       
25      2       NO      null    null    null    null    NO      NO\n");
 
                        compareResultSet(dbmd.getPrimaryKeys(null, "sys", 
"table_types"), "getPrimaryKeys(null, sys, table_types)",
                        "Resultset with 6 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     KEY_SEQ PK_NAME \n" +
-                       "null   sys     table_types     table_type_id   1       
table_types_table_type_id_pkey  \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     KEY_SEQ PK_NAME\n" +
+                       "null   sys     table_types     table_type_id   1       
table_types_table_type_id_pkey\n");
 
                        compareResultSet(dbmd.getCrossReference(null, "sys", 
"tables", null, "sys", "table_types"), "getCrossReference(null, sys, tables, 
null, sys, table_types)",
                        "Resultset with 14 columns\n" +
-                       "PKTABLE_CAT    PKTABLE_SCHEM   PKTABLE_NAME    
PKCOLUMN_NAME   FKTABLE_CAT     FKTABLE_SCHEM   FKTABLE_NAME    FKCOLUMN_NAME   
KEY_SEQ UPDATE_RULE     DELETE_RULE     FK_NAME PK_NAME DEFERRABILITY   \n");
+                       "PKTABLE_CAT    PKTABLE_SCHEM   PKTABLE_NAME    
PKCOLUMN_NAME   FKTABLE_CAT     FKTABLE_SCHEM   FKTABLE_NAME    FKCOLUMN_NAME   
KEY_SEQ UPDATE_RULE     DELETE_RULE     FK_NAME PK_NAME DEFERRABILITY\n");
 
                        compareResultSet(dbmd.getImportedKeys(null, "sys", 
"table_types"), "getImportedKeys(null, sys, table_types)",
                        "Resultset with 14 columns\n" +
-                       "PKTABLE_CAT    PKTABLE_SCHEM   PKTABLE_NAME    
PKCOLUMN_NAME   FKTABLE_CAT     FKTABLE_SCHEM   FKTABLE_NAME    FKCOLUMN_NAME   
KEY_SEQ UPDATE_RULE     DELETE_RULE     FK_NAME PK_NAME DEFERRABILITY   \n");
+                       "PKTABLE_CAT    PKTABLE_SCHEM   PKTABLE_NAME    
PKCOLUMN_NAME   FKTABLE_CAT     FKTABLE_SCHEM   FKTABLE_NAME    FKCOLUMN_NAME   
KEY_SEQ UPDATE_RULE     DELETE_RULE     FK_NAME PK_NAME DEFERRABILITY\n");
 
-                       compareResultSet(dbmd.getIndexInfo(null, "sys", 
"table_types", false, false), "getIndexInfo(null, sys, table_types, false, 
false)",
+                       compareResultSet(dbmd.getIndexInfo(null, "sys", 
"key_types", false, false), "getIndexInfo(null, sys, key_types, false, false)",
                        "Resultset with 13 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
NON_UNIQUE      INDEX_QUALIFIER INDEX_NAME      TYPE    ORDINAL_POSITION        
COLUMN_NAME     ASC_OR_DESC     CARDINALITY     PAGES   FILTER_CONDITION        
\n" +
-                       "null   sys     table_types     false   null    
table_types_table_type_id_pkey  2       1       table_type_id   null    10      
0       null    \n" +
-                       "null   sys     table_types     false   null    
table_types_table_type_name_unique      2       1       table_type_name null    
10      0       null    \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
NON_UNIQUE      INDEX_QUALIFIER INDEX_NAME      TYPE    ORDINAL_POSITION        
COLUMN_NAME     ASC_OR_DESC     CARDINALITY     PAGES   FILTER_CONDITION\n" +
+                       "null   sys     key_types       false   null    
key_types_key_type_id_pkey      2       1       key_type_id     null    3       
0       null\n" +
+                       "null   sys     key_types       false   null    
key_types_key_type_name_unique  2       1       key_type_name   null    3       
0       null\n");
 
                        compareResultSet(dbmd.getTablePrivileges(null, "sys", 
"table_types"), "getTablePrivileges(null, sys, table_types)",
                        "Resultset with 7 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      GRANTOR 
GRANTEE PRIVILEGE       IS_GRANTABLE    \n" +
-                       "null   sys     table_types     monetdb public  SELECT  
NO      \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      GRANTOR 
GRANTEE PRIVILEGE       IS_GRANTABLE\n" +
+                       "null   sys     table_types     monetdb public  SELECT  
NO\n");
 
                        compareResultSet(dbmd.getColumnPrivileges(null, "sys", 
"table_types", null), "getColumnPrivileges(null, sys, table_types, null)",
                        "Resultset with 8 columns\n" +
-                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     GRANTOR GRANTEE PRIVILEGE       IS_GRANTABLE    \n");
+                       "TABLE_CAT      TABLE_SCHEM     TABLE_NAME      
COLUMN_NAME     GRANTOR GRANTEE PRIVILEGE       IS_GRANTABLE\n");
 
                        compareResultSet(dbmd.getUDTs(null, "sys", null, null), 
"getUDTs(null, sys, null, null)",
                        "Resultset with 7 columns\n" +
-                       "TYPE_CAT       TYPE_SCHEM      TYPE_NAME       
CLASS_NAME      DATA_TYPE       REMARKS BASE_TYPE       \n" +
-                       "null   sys     inet    org.monetdb.jdbc.types.INET     
2000    inet    null    \n" +
-                       "null   sys     json    java.lang.String        2000    
json    null    \n" +
-                       "null   sys     url     org.monetdb.jdbc.types.URL      
2000    url     null    \n" +
-                       "null   sys     uuid    java.lang.String        2000    
uuid    null    \n");
+                       "TYPE_CAT       TYPE_SCHEM      TYPE_NAME       
CLASS_NAME      DATA_TYPE       REMARKS BASE_TYPE\n" +
+                       "null   sys     inet    org.monetdb.jdbc.types.INET     
2000    inet    null\n" +
+                       "null   sys     json    java.lang.String        2000    
json    null\n" +
+                       "null   sys     url     org.monetdb.jdbc.types.URL      
2000    url     null\n" +
+                       "null   sys     uuid    java.lang.String        2000    
uuid    null\n");
 
                        int[] UDTtypes = { Types.STRUCT, Types.DISTINCT };
                        compareResultSet(dbmd.getUDTs(null, "sys", null, 
UDTtypes), "getUDTs(null, sys, null, UDTtypes",
                        "Resultset with 7 columns\n" +
-                       "TYPE_CAT       TYPE_SCHEM      TYPE_NAME       
CLASS_NAME      DATA_TYPE       REMARKS BASE_TYPE       \n");
+                       "TYPE_CAT       TYPE_SCHEM      TYPE_NAME       
CLASS_NAME      DATA_TYPE       REMARKS BASE_TYPE\n");
 
                        sb.setLength(0);        // clear the output log buffer
                } catch (SQLException e) {
@@ -727,12 +729,16 @@ final public class JDBC_API_Tester {
                int columnCount = rsmd.getColumnCount();
                sb.append("Resultset with ").append(columnCount).append(" 
columns").append("\n");
                for (int col = 1; col <= columnCount; col++) {
-                       sb.append(rsmd.getColumnName(col) + "\t");
+                       if (col > 1)
+                               sb.append("\t");
+                       sb.append(rsmd.getColumnName(col));
                }
                sb.append("\n");
                while (rs.next()) {
                        for (int col = 1; col <= columnCount; col++) {
-                               sb.append(rs.getString(col) + "\t");
+                               if (col > 1)
+                                       sb.append("\t");
+                               sb.append(rs.getString(col));
                        }
                        sb.append("\n");
                }
@@ -753,6 +759,7 @@ final public class JDBC_API_Tester {
                        sb.append("Statement fetch size before set: " + 
stmt.getFetchSize()).append("\n");
                        sb.append("ResultSet fetch size before set: " + 
rs.getFetchSize()).append("\n");
 
+                       stmt.setFetchSize(40);
                        rs.setFetchSize(16384);
 
                        sb.append("Statement fetch size after set: " + 
stmt.getFetchSize()).append("\n");
@@ -767,7 +774,7 @@ final public class JDBC_API_Tester {
                compareExpectedOutput("Test_FetchSize",
                        "Statement fetch size before set: 0\n" +
                        "ResultSet fetch size before set: 250\n" +
-                       "Statement fetch size after set: 0\n" +
+                       "Statement fetch size after set: 40\n" +
                        "ResultSet fetch size after set: 16384\n");
        }
 
@@ -924,7 +931,10 @@ final public class JDBC_API_Tester {
                closeStmtResSet(pstmt, rs);
 
                try {
+                       sb.append("4. Rollback changes...");
                        con.rollback();
+                       sb.append(" passed").append("\n");
+
                        // restore default setting
                        con.setAutoCommit(true);
                } catch (SQLException e) {
@@ -941,52 +951,205 @@ final public class JDBC_API_Tester {
                        "  Retrieved row data: ti=1 si=1 i=1 bi=1\n" +
                        "  Retrieved row data: ti=127 si=12700 i=1270000 
bi=127000000\n" +
                        "3b. closing ResultSet... passed\n" +
-                       "3c. closing PreparedStatement... passed\n");
+                       "3c. closing PreparedStatement... passed\n" +
+                       "4. Rollback changes... passed\n");
        }
 
        private void Test_PSlargebatchval() {
                sb.setLength(0);        // clear the output log buffer
 
+               byte[] errorBytes = new byte[] { (byte) 0xe2, (byte) 0x80, 
(byte) 0xa7 };
+               String errorStr = new String(errorBytes, 
Charset.forName("UTF-8"));
+               StringBuilder repeatedErrorStr = new StringBuilder();
+               for (int i = 0; i < 8170;i++) {
+                       repeatedErrorStr.append(errorStr);
+               }
+               String largeStr = repeatedErrorStr.toString();
+
                Statement stmt = null;
+               PreparedStatement pstmt = null;
+               ResultSet rs = null;
                try {
+                       // >> true: auto commit should be on
+                       sb.append("0. true\t" + 
con.getAutoCommit()).append("\n");
+
                        stmt = con.createStatement();
+                       sb.append("1. creating test table...");
+                       stmt.execute("CREATE TABLE Test_PSlargebatchval (c INT, 
a CLOB, b DOUBLE)");
+                       sb.append("success").append("\n");
+
+                       sb.append("2. prepare insert...");
+                       pstmt = con.prepareStatement("INSERT INTO 
Test_PSlargebatchval VALUES (?,?,?)");
+                       sb.append("success").append("\n");
+
+                       pstmt.setLong(1, 1L);
+                       pstmt.setString(2, largeStr);
+                       pstmt.setDouble(3, 1.0);
+                       pstmt.addBatch();
+                       pstmt.executeBatch();
+                       sb.append("3. inserted 1 large string").append("\n");
+
+                       /* test issue reported at 
https://www.monetdb.org/bugzilla/show_bug.cgi?id=3470 */
+                       pstmt.setLong(1, -2L);
+                       pstmt.setClob(2, new StringReader(largeStr));
+                       pstmt.setDouble(3, -2.0);
+                       pstmt.addBatch();
+                       pstmt.executeBatch();
+                       sb.append("4. inserted 1 large clob via StringReader() 
object").append("\n");
+
+                       Clob myClob = con.createClob();
+                       myClob.setString(1L, largeStr);
+
+                       pstmt.setLong(1, 123456789L);
+                       pstmt.setClob(2, myClob);
+                       pstmt.setDouble(3, 12345678901.98765);
+                       pstmt.addBatch();
+                       pstmt.executeBatch();
+                       sb.append("5. inserted 1 large clob via createClob() 
object").append("\n");
+
+                       pstmt.close();
+
+                       sb.append("6. select count(*)... ");
+                       rs = stmt.executeQuery("SELECT COUNT(*) FROM 
Test_PSlargebatchval");
+                       if (rs.next())
+                               sb.append(rs.getInt(1) + " rows 
inserted.").append("\n");
+                       rs.close();
+
+                       sb.append("7. drop table...");
+                       stmt.execute("DROP TABLE Test_PSlargebatchval");
+                       sb.append("success").append("\n");
+                       stmt.close();
+               } catch (SQLException e) {
+                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+                       while ((e = e.getNextException()) != null)
+                               sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+               }
+               closeStmtResSet(stmt, rs);
+               closeStmtResSet(pstmt, null);
+
+               compareExpectedOutput("Test_PSlargebatchval",
+                       "0. true        true\n" +
+                       "1. creating test table...success\n" +
+                       "2. prepare insert...success\n" +
+                       "3. inserted 1 large string\n" +
+                       "4. inserted 1 large clob via StringReader() object\n" +
+                       "5. inserted 1 large clob via createClob() object\n" +
+                       "6. select count(*)... 3 rows inserted.\n" +
+                       "7. drop table...success\n");
+       }
+
+       private void Test_PSlargeresponse(String conURL) {
+               sb.setLength(0);        // clear the output log buffer
+
+               PreparedStatement pstmt = null;
+               try {
+                       sb.append("1. DatabaseMetadata environment retrieval... 
");
+
+                       // retrieve this to simulate a bug report
+                       DatabaseMetaData dbmd = con.getMetaData();
+                       if (conURL.startsWith(dbmd.getURL()))
+                               sb.append("oke");
+                       else
+                               sb.append("not oke " + dbmd.getURL());
+                       sb.append("\n");
+
+                       pstmt = con.prepareStatement("select * from columns");
+                       sb.append("2. empty call...");
+                       // should succeed (no arguments given)
+                       pstmt.execute();
+                       sb.append(" passed").append("\n");
+               } catch (SQLException e) {
+                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
+               }
+               closeStmtResSet(pstmt, null);
+
+               compareExpectedOutput("Test_PSlargeresponse",
+                       "1. DatabaseMetadata environment retrieval... oke\n" +
+                       "2. empty call... passed\n");
+       }
+
+       private void Test_PSmanycon(String arg0) {
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to