Changeset: 7fe98a9c9a99 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7fe98a9c9a99
Added Files:
        java/tests/Test_PSgetObject.java
        sql/jdbc/tests/Tests/Test_PSgetObject.SQL.bat
        sql/jdbc/tests/Tests/Test_PSgetObject.SQL.sh
        sql/jdbc/tests/Tests/Test_PSgetObject.stable.err
        sql/jdbc/tests/Tests/Test_PSgetObject.stable.out
Modified Files:
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
        sql/jdbc/tests/Tests/All
        sql/test/pg_regress/Tests/point.sql
        sql/test/pg_regress/Tests/point.stable.err
        sql/test/pg_regress/Tests/point.stable.out
        testing/Mtest.py.in
Branch: default
Log Message:

Merge with Jun2016 branch.


diffs (truncated from 517 to 300 lines):

diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -1737,25 +1737,34 @@ public class MonetResultSet extends Mone
        public Object getObject(int i, Map<String,Class<?>> map)
                throws SQLException
        {
-               Class<?> type;
-
-               if (tlp.values[i - 1] == null) {
-                       lastColumnRead = i - 1;
-                       return null;
+               String MonetDBtype = null;
+               try {
+                       MonetDBtype = types[i - 1];
+                       if (tlp.values[i - 1] == null) {
+                               lastColumnRead = i - 1;
+                               return null;
+                       }
+               } catch (IndexOutOfBoundsException e) {
+                       throw new SQLException("No such column " + i, "M1M05");
                }
 
-               if (map.containsKey(types[i - 1])) {
-                       type = map.get(types[i - 1]);
-               } else {
-                       type = getClassForType(getJavaType(types[i - 1]));
+               Class<?> type = null;
+               if (map != null && map.containsKey(MonetDBtype)) {
+                       type = map.get(MonetDBtype);
                }
-
-               if (type == String.class) {
+               if (type == null) {
+                       // fallback to the standard Class mappings
+                       type = getClassForType(getJavaType(MonetDBtype));
+               }
+
+               if (type == null || type == String.class) {
                        return getString(i);
                } else if (type == BigDecimal.class) {
                        return getBigDecimal(i);
                } else if (type == Boolean.class) {
                        return Boolean.valueOf(getBoolean(i));
+               } else if (type == Short.class) {
+                       return Short.valueOf(getShort(i));
                } else if (type == Integer.class) {
                        return Integer.valueOf(getInt(i));
                } else if (type == Long.class) {
@@ -1931,7 +1940,7 @@ public class MonetResultSet extends Mone
                                        return getRowId(colnum);
                                }
                        };
-                       x.readSQL(input, types[i - 1]);
+                       x.readSQL(input, MonetDBtype);
                        return x;
                } else {
                        return getString(i);
diff --git a/java/tests/Test_PSgetObject.java b/java/tests/Test_PSgetObject.java
new file mode 100644
--- /dev/null
+++ b/java/tests/Test_PSgetObject.java
@@ -0,0 +1,105 @@
+/*
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0.  If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Copyright 1997 - July 2008 CWI, August 2008 - 2016 MonetDB B.V.
+ */
+
+import java.sql.*;
+
+public class Test_PSgetObject {
+       public static void main(String[] args) throws Exception {
+               Class.forName("nl.cwi.monetdb.jdbc.MonetDriver");
+               final Connection con = DriverManager.getConnection(args[0]);
+               con.setAutoCommit(false);
+               // >> false: auto commit was just switched off
+               System.out.println("0. false\t" + con.getAutoCommit());
+
+               final Statement stmt = con.createStatement();
+               try {
+                       System.out.print("1. creating test table...");
+                       stmt.executeUpdate("CREATE TABLE table_Test_PSgetObject 
(ti tinyint, si smallint, i int, bi bigint)");
+                       stmt.close();
+                       System.out.println(" passed :)");
+               } catch (SQLException e) {
+                       System.out.println(e);
+                       System.out.println("Creation of test table failed! :(");
+                       System.out.println("ABORTING TEST!!!");
+                       System.exit(-1);
+               }
+
+               PreparedStatement pstmt;
+               try {
+                       System.out.print("2a. inserting 3 records as batch...");
+                       pstmt = con.prepareStatement("INSERT INTO 
table_Test_PSgetObject (ti,si,i,bi) VALUES (?,?,?,?)");
+                       pstmt.setShort(1, (short)1);
+                       pstmt.setShort(2, (short)1);
+                       pstmt.setInt (3, 1);
+                       pstmt.setLong(4, (long)1);
+                       pstmt.addBatch();
+
+                       pstmt.setShort(1, (short)127);
+                       pstmt.setShort(2, (short)12700);
+                       pstmt.setInt (3, 1270000);
+                       pstmt.setLong(4, (long)127000000);
+                       pstmt.addBatch();
+
+                       pstmt.setShort(1, (short)-127);
+                       pstmt.setShort(2, (short)-12700);
+                       pstmt.setInt (3, -1270000);
+                       pstmt.setLong(4, (long)-127000000);
+                       pstmt.addBatch();
+
+                       pstmt.executeBatch();
+                       System.out.println(" passed :)");
+
+                       System.out.print("2b. closing PreparedStatement...");
+                       pstmt.close();
+                       System.out.println(" passed :)");
+               } catch (SQLException e) {
+                       System.out.println("FAILED to INSERT data:( "+ 
e.getMessage());
+                       while ((e = e.getNextException()) != null)
+                               System.out.println("FAILED :( " + 
e.getMessage());
+                       System.out.println("ABORTING TEST!!!");
+               }
+
+               try {
+                       System.out.print("3a. selecting records...");
+                       pstmt = con.prepareStatement("SELECT ti,si,i,bi FROM 
table_Test_PSgetObject ORDER BY ti,si,i,bi");
+                       ResultSet rs = pstmt.executeQuery();
+                       System.out.println(" passed :)");
+
+                       while (rs.next()) {
+                               // test fix for 
https://www.monetdb.org/bugzilla/show_bug.cgi?id=4026
+                               Short ti = (Short) rs.getObject(1);
+                               Short si = (Short) rs.getObject(2);
+                               Integer i = (Integer) rs.getObject(3);
+                               Long bi = (Long) rs.getObject(4);
+
+                               System.out.println("    Retrieved row data: 
ti=" + ti + " si=" + si + " i=" + i + " bi=" + bi);
+                       }
+
+                       System.out.print("3b. closing ResultSet...");
+                       rs.close();
+                       System.out.println(" passed :)");
+
+                       System.out.print("3c. closing PreparedStatement...");
+                       pstmt.close();
+                       System.out.println(" passed :)");
+               } catch (SQLException e) {
+                       System.out.println("FAILED to RETRIEVE data:( "+ 
e.getMessage());
+                       while ((e = e.getNextException()) != null)
+                               System.out.println("FAILED :( " + 
e.getMessage());
+                       System.out.println("ABORTING TEST!!!");
+               }
+
+               System.out.print("4. Rollback changes...");
+               con.rollback();
+               System.out.println(" passed :)");
+
+               System.out.print("5. Close connection...");
+               con.close();
+               System.out.println(" passed :)");
+       }
+}
diff --git a/sql/jdbc/tests/Tests/All b/sql/jdbc/tests/Tests/All
--- a/sql/jdbc/tests/Tests/All
+++ b/sql/jdbc/tests/Tests/All
@@ -13,6 +13,7 @@ HAVE_JDBCTESTS?Test_PSlargebatchval
 HAVE_JDBCTESTS?Test_PStimedate
 HAVE_JDBCTESTS?Test_PStimezone
 HAVE_JDBCTESTS?Test_PStypes
+HAVE_JDBCTESTS?Test_PSgetObject
 HAVE_JDBCTESTS?Test_PSmanycon
 HAVE_JDBCTESTS?Test_PSmetadata
 HAVE_JDBCTESTS?Test_PSsqldata
diff --git a/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.bat 
b/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.bat
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.bat
@@ -0,0 +1,1 @@
+@call "%TSTSRCDIR%\Test.SQL.bat" %*
diff --git a/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.sh 
b/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.sh
new file mode 100755
--- /dev/null
+++ b/sql/jdbc/tests/Tests/Test_PSgetObject.SQL.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+$TSTSRCDIR/Test.SQL.sh $*
diff --git a/sql/jdbc/tests/Tests/Test_PSgetObject.stable.err 
b/sql/jdbc/tests/Tests/Test_PSgetObject.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/jdbc/tests/Tests/Test_PSgetObject.stable.err
@@ -0,0 +1,40 @@
+stderr of test 'Test_PSgetObject` in directory 'sql/jdbc/tests` itself:
+
+
+# 15:26:26 >  
+# 15:26:26 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=39372" "--set" 
"mapi_usock=/var/tmp/mtest-15437/.s.monetdb.39372" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_jdbc_tests" 
"--set" "embedded_r=yes"
+# 15:26:26 >  
+
+# builtin opt  gdk_dbpath = 
/export/scratch2/dinther/INSTALL/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 39372
+# cmdline opt  mapi_usock = /var/tmp/mtest-15437/.s.monetdb.39372
+# cmdline opt  monet_prompt = 
+# cmdline opt  gdk_dbpath = 
/export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_jdbc_tests
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 15:26:27 >  
+# 15:26:27 >  "./Test_PSgetObject.SQL.sh" "Test_PSgetObject"
+# 15:26:27 >  
+
+
+# 15:26:27 >  
+# 15:26:27 >  java Test_PSgetObject 
"jdbc:monetdb://toulouse:39372/mTests_sql_jdbc_tests?user=monetdb&password=monetdb"
+# 15:26:27 >  
+
+
+# 15:26:27 >  
+# 15:26:27 >  "Done."
+# 15:26:27 >  
+
diff --git a/sql/jdbc/tests/Tests/Test_PSgetObject.stable.out 
b/sql/jdbc/tests/Tests/Test_PSgetObject.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/jdbc/tests/Tests/Test_PSgetObject.stable.out
@@ -0,0 +1,88 @@
+stdout of test 'Test_PSgetObject` in directory 'sql/jdbc/tests` itself:
+
+
+# 15:26:26 >  
+# 15:26:26 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=39372" "--set" 
"mapi_usock=/var/tmp/mtest-15437/.s.monetdb.39372" "--set" "monet_prompt=" 
"--forcemito" 
"--dbpath=/export/scratch2/dinther/INSTALL/var/MonetDB/mTests_sql_jdbc_tests" 
"--set" "embedded_r=yes"
+# 15:26:26 >  
+
+# MonetDB 5 server v11.23.4
+# This is an unreleased version
+# Serving database 'mTests_sql_jdbc_tests', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs and 128bit 
integers dynamically linked
+# Found 15.589 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2016 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://toulouse.da.cwi.nl:39372/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-15437/.s.monetdb.39372
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 17_temporal.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 27_rejects.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 39_analytics_hge.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 40_json_hge.sql
+# loading sql script: 41_md5sum.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_gsl.sql
+# loading sql script: 46_profiler.sql
+# loading sql script: 51_sys_schema_extension.sql
+# loading sql script: 72_fits.sql
+# loading sql script: 74_netcdf.sql
+# loading sql script: 75_shp.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 80_udf_hge.sql
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to