[prev in list] [next in list] [prev in thread] [next in thread] 

List:       monetdb-checkins
Subject:    MonetDB: default - Merge with Jun2016 branch.
From:       Sjoerd Mullender <commits+sjoerd=acm.org () monetdb ! org>
Date:       2016-06-30 15:34:54
Message-ID: hg.7fe98a9c9a99.1467300894.6315528441665844383 () monetdb2 ! cwi-incubator ! nl
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic