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