Changeset: a0f8751f8a8b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a0f8751f8a8b
Added Files:
        java/tests/Test_CisValid.java
        sql/jdbc/tests/Tests/Test_CisValid.SQL.bat
        sql/jdbc/tests/Tests/Test_CisValid.SQL.sh
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        java/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
        java/tests/build.xml
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/12-explain.stable.out
        sql/benchmarks/tpch/Tests/15-explain.stable.out
        sql/benchmarks/tpch/Tests/18-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/jdbc/tests/Tests/All
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
Branch: Jun2016
Log Message:

Merge with Jul2015 branch.


diffs (truncated from 1171 to 300 lines):

diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java 
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetConnection.java
@@ -786,14 +786,20 @@ public class MonetConnection extends Mon
                if (closed)
                        return false;
                // ping db using select 1;
+               Statement stmt = null;
                try {
-                       Statement stmt = createStatement();
+                       stmt = createStatement();
+                       // the timeout parameter is ignored here, since
+                       // MonetStatement.setQueryTimeout(timeout) is not 
supported.
                        stmt.executeQuery("SELECT 1");
                        stmt.close();
                        return true;
-               } catch (SQLException e) {
-                       // close this connection
-                       close();
+               } catch (Exception e) {
+                       if (stmt != null) {
+                               try {
+                                       stmt.close();
+                               } catch (Exception e2) {}
+                       }
                }
                return false;
        }
diff --git a/java/tests/Test_CisValid.java b/java/tests/Test_CisValid.java
new file mode 100644
--- /dev/null
+++ b/java/tests/Test_CisValid.java
@@ -0,0 +1,33 @@
+/*
+ * 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_CisValid {
+       /* Test that after an error has occurred during a transaction, one can
+        * still test if the connection is valid or not. 
+        * The function Connection.isValid() should only return TRUE or FALSE. 
It
+        * shall never alter the state of this connection */
+       public static void main(String[] args) throws Exception {
+               Class.forName("nl.cwi.monetdb.jdbc.MonetDriver");
+               Connection conn = DriverManager.getConnection(args[0]);
+               Statement stmt = conn.createStatement();
+
+               conn.setAutoCommit(false); // start a transaction
+               try {
+                       stmt.execute("SELECT COUNT(*) FROM doesnotexist;"); // 
let's trigger an error
+               } catch (SQLException e) {
+                       e.printStackTrace();
+                       System.out.println("Validating connection: 
conn.isValid? " + conn.isValid(30)); // Can we rollback on this connection?
+                       conn.rollback();
+               }
+                       
+               stmt.close();
+               conn.close();
+       }
+}
diff --git a/java/tests/build.xml b/java/tests/build.xml
--- a/java/tests/build.xml
+++ b/java/tests/build.xml
@@ -98,6 +98,7 @@ Copyright 1997 - July 2008 CWI, August 2
     <antcall target="Test_Clargequery" />
     <antcall target="Test_Cmanycon" />
     <antcall target="Test_Cforkbomb" />
+    <antcall target="Test_CisValid" />
     <antcall target="Test_Creplysize" />
     <antcall target="Test_Csavepoints" />
     <antcall target="Test_Ctransaction" />
@@ -174,6 +175,12 @@ Copyright 1997 - July 2008 CWI, August 2
     </antcall>
   </target>
 
+  <target name="Test_CisValid">
+    <antcall target="test_class">
+      <param name="test.class" value="Test_CisValid" />
+    </antcall>
+  </target>
+
   <target name="Test_Ctransaction">
     <antcall target="test_class">
       <param name="test.class" value="Test_Ctransaction" />
diff --git a/sql/benchmarks/tpch/Tests/05-explain.stable.out 
b/sql/benchmarks/tpch/Tests/05-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/05-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/05-explain.stable.out
@@ -55,32 +55,32 @@ Ready.
 % clob # type
 % 573 # length
 function user.s2_1(A0:bte,A1:str,A2:date,A3:date,A4:int):void;
-    X_180:void := querylog.define("explain select\n n_name,\n 
sum(l_extendedprice * (1 - l_discount)) as revenue\nfrom\n customer,\n 
orders,\n lineitem,\n supplier,\n nation,\n region\nwhere\n c_custkey = 
o_custkey\n and l_orderkey = o_orderkey\n and l_suppkey = s_suppkey\n and 
c_nationkey = s_nationkey\n and s_nationkey = n_nationkey\n and n_regionkey = 
r_regionkey\n and r_name = \\'ASIA\\'\n and o_orderdate >= date 
\\'1994-01-01\\'\n and o_orderdate < date \\'1994-01-01\\' + interval \\'1\\' 
year\ngroup by\n n_name\norder by\n revenue desc;","sequential_pipe",121);
-    X_154 := bat.new(nil:oid,nil:str);
-    X_162 := bat.append(X_154,"sys.nation");
-    X_170 := bat.append(X_162,"sys.L1");
-    X_157 := bat.new(nil:oid,nil:str);
-    X_164 := bat.append(X_157,"n_name");
-    X_172 := bat.append(X_164,"revenue");
-    X_158 := bat.new(nil:oid,nil:str);
-    X_165 := bat.append(X_158,"char");
-    X_174 := bat.append(X_165,"decimal");
-    X_159 := bat.new(nil:oid,nil:int);
-    X_167 := bat.append(X_159,25);
-    X_176 := bat.append(X_167,19);
+    X_182:void := querylog.define("explain select\n n_name,\n 
sum(l_extendedprice * (1 - l_discount)) as revenue\nfrom\n customer,\n 
orders,\n lineitem,\n supplier,\n nation,\n region\nwhere\n c_custkey = 
o_custkey\n and l_orderkey = o_orderkey\n and l_suppkey = s_suppkey\n and 
c_nationkey = s_nationkey\n and s_nationkey = n_nationkey\n and n_regionkey = 
r_regionkey\n and r_name = \\'ASIA\\'\n and o_orderdate >= date 
\\'1994-01-01\\'\n and o_orderdate < date \\'1994-01-01\\' + interval \\'1\\' 
year\ngroup by\n n_name\norder by\n revenue desc;","sequential_pipe",123);
+    X_156 := bat.new(nil:oid,nil:str);
+    X_164 := bat.append(X_156,"sys.nation");
+    X_172 := bat.append(X_164,"sys.L1");
+    X_159 := bat.new(nil:oid,nil:str);
+    X_166 := bat.append(X_159,"n_name");
+    X_174 := bat.append(X_166,"revenue");
+    X_160 := bat.new(nil:oid,nil:str);
+    X_167 := bat.append(X_160,"char");
+    X_176 := bat.append(X_167,"decimal");
     X_161 := bat.new(nil:oid,nil:int);
-    X_169 := bat.append(X_161,0);
-    X_178 := bat.append(X_169,4);
+    X_169 := bat.append(X_161,25);
+    X_178 := bat.append(X_169,19);
+    X_163 := bat.new(nil:oid,nil:int);
+    X_171 := bat.append(X_163,0);
+    X_180 := bat.append(X_171,4);
     X_6 := sql.mvc();
     X_10:bat[:date] := sql.bind(X_6,"sys","orders","o_orderdate",0);
     C_7:bat[:oid] := sql.tid(X_6,"sys","orders");
     X_18:date := mtime.addmonths(A3,A4);
-    C_189 := algebra.subselect(X_10,C_7,A2,X_18,true,false,false);
+    C_191 := algebra.subselect(X_10,C_7,A2,X_18,true,false,false);
     (C_13,r1_13) := sql.bind(X_6,"sys","orders","o_orderdate",2);
-    C_190 := algebra.subselect(r1_13,nil:bat[:oid],A2,X_18,true,false,false);
+    C_192 := algebra.subselect(r1_13,nil:bat[:oid],A2,X_18,true,false,false);
     X_16:bat[:date] := sql.bind(X_6,"sys","orders","o_orderdate",1);
-    C_192 := algebra.subselect(X_16,C_7,A2,X_18,true,false,false);
-    C_19 := sql.subdelta(C_189,C_7,C_13,C_190,C_192);
+    C_194 := algebra.subselect(X_16,C_7,A2,X_18,true,false,false);
+    C_19 := sql.subdelta(C_191,C_7,C_13,C_192,C_194);
     X_22:bat[:oid] := 
sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",0);
     (X_24,r1_30) := 
sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",2);
     X_26:bat[:oid] := 
sql.bind_idxbat(X_6,"sys","orders","orders_o_custkey_fkey",1);
@@ -170,10 +170,12 @@ function user.s2_1(A0:bte,A1:str,A2:date
     X_143:bat[:str] := algebra.projectionpath(X_116,r1_130,X_142);
     (X_144,r1_201,r2_201) := group.subgroupdone(X_143);
     X_147:bat[:lng] := aggr.subsum(X_136,X_144,r1_201,true,true);
+    X_151 := algebra.projection(r1_201,X_143);
     (X_148,r1_207,r2_207) := algebra.subsort(X_147,true,false);
-    X_151:bat[:str] := algebra.projectionpath(r1_207,r1_201,X_143);
-    X_152 := algebra.projection(r1_207,X_147);
-    sql.resultSet(X_170,X_172,X_174,X_176,X_178,X_151,X_152);
+    X_152 := bat.setKey(X_151,true);
+    X_153 := algebra.projection(r1_207,X_152);
+    X_154 := algebra.projection(r1_207,X_147);
+    sql.resultSet(X_172,X_174,X_176,X_178,X_180,X_153,X_154);
 end user.s2_1;
 
 # 15:45:52 >  
diff --git a/sql/benchmarks/tpch/Tests/08-explain.stable.out 
b/sql/benchmarks/tpch/Tests/08-explain.stable.out
--- a/sql/benchmarks/tpch/Tests/08-explain.stable.out
+++ b/sql/benchmarks/tpch/Tests/08-explain.stable.out
@@ -59,22 +59,22 @@ Ready.
 % clob # type
 % 836 # length
 function user.s2_1(A0:str,A1:bte,A2:bte,A3:str,A4:date,A5:date,A6:str):void;
-    X_198:void := querylog.define("explain select\n o_year,\n sum(case\n when 
nation = \\'BRAZIL\\' then volume\n else 0\n end) / sum(volume) as 
mkt_share\nfrom\n (\n select\n extract(year from o_orderdate) as o_year,\n 
l_extendedprice * (1 - l_discount) as volume,\n n2.n_name as nation\n from\n 
part,\n supplier,\n lineitem,\n orders,\n customer,\n nation n1,\n nation n2,\n 
region\n where\n p_partkey = l_partkey\n and s_suppkey = l_suppkey\n and 
l_orderkey = o_orderkey\n and o_custkey = c_custkey\n and c_nationkey = 
n1.n_nationkey\n and n1.n_regionkey = r_regionkey\n and r_name = 
\\'AMERICA\\'\n and s_nationkey = n2.n_nationkey\n and o_orderdate between date 
\\'1995-01-01\\' and date \\'1996-12-31\\'\n and p_type = \\'ECONOMY ANODIZED 
STEEL\\'\n ) as all_nations\ngroup by\n o_year\norder by\n 
o_year;","sequential_pipe",132);
-    X_173 := bat.new(nil:oid,nil:str);
-    X_181 := bat.append(X_173,"sys.all_nations");
-    X_190 := bat.append(X_181,"sys.L3");
-    X_176 := bat.new(nil:oid,nil:str);
-    X_183 := bat.append(X_176,"o_year");
-    X_192 := bat.append(X_183,"mkt_share");
+    X_199:void := querylog.define("explain select\n o_year,\n sum(case\n when 
nation = \\'BRAZIL\\' then volume\n else 0\n end) / sum(volume) as 
mkt_share\nfrom\n (\n select\n extract(year from o_orderdate) as o_year,\n 
l_extendedprice * (1 - l_discount) as volume,\n n2.n_name as nation\n from\n 
part,\n supplier,\n lineitem,\n orders,\n customer,\n nation n1,\n nation n2,\n 
region\n where\n p_partkey = l_partkey\n and s_suppkey = l_suppkey\n and 
l_orderkey = o_orderkey\n and o_custkey = c_custkey\n and c_nationkey = 
n1.n_nationkey\n and n1.n_regionkey = r_regionkey\n and r_name = 
\\'AMERICA\\'\n and s_nationkey = n2.n_nationkey\n and o_orderdate between date 
\\'1995-01-01\\' and date \\'1996-12-31\\'\n and p_type = \\'ECONOMY ANODIZED 
STEEL\\'\n ) as all_nations\ngroup by\n o_year\norder by\n 
o_year;","sequential_pipe",133);
+    X_174 := bat.new(nil:oid,nil:str);
+    X_182 := bat.append(X_174,"sys.all_nations");
+    X_191 := bat.append(X_182,"sys.L3");
     X_177 := bat.new(nil:oid,nil:str);
-    X_185 := bat.append(X_177,"int");
-    X_194 := bat.append(X_185,"decimal");
-    X_178 := bat.new(nil:oid,nil:int);
-    X_187 := bat.append(X_178,32);
-    X_196 := bat.append(X_187,19);
-    X_180 := bat.new(nil:oid,nil:int);
-    X_189 := bat.append(X_180,0);
-    X_197 := bat.append(X_189,4);
+    X_184 := bat.append(X_177,"o_year");
+    X_193 := bat.append(X_184,"mkt_share");
+    X_178 := bat.new(nil:oid,nil:str);
+    X_186 := bat.append(X_178,"int");
+    X_195 := bat.append(X_186,"decimal");
+    X_179 := bat.new(nil:oid,nil:int);
+    X_188 := bat.append(X_179,32);
+    X_197 := bat.append(X_188,19);
+    X_181 := bat.new(nil:oid,nil:int);
+    X_190 := bat.append(X_181,0);
+    X_198 := bat.append(X_190,4);
     X_8 := sql.mvc();
     C_9:bat[:oid] := sql.tid(X_8,"sys","nation");
     X_12:bat[:oid] := 
sql.bind_idxbat(X_8,"sys","nation","nation_n_regionkey_fkey",0);
@@ -83,12 +83,12 @@ function user.s2_1(A0:str,A1:bte,A2:bte,
     X_20 := sql.projectdelta(C_9,X_12,X_15,r1_15,X_18);
     X_23:bat[:str] := sql.bind(X_8,"sys","region","r_name",0);
     C_21:bat[:oid] := sql.tid(X_8,"sys","region");
-    C_207 := algebra.subselect(X_23,C_21,A3,A3,true,false,false);
+    C_208 := algebra.subselect(X_23,C_21,A3,A3,true,false,false);
     (C_25,r1_26) := sql.bind(X_8,"sys","region","r_name",2);
-    C_208 := algebra.subselect(r1_26,nil:bat[:oid],A3,A3,true,false,false);
+    C_209 := algebra.subselect(r1_26,nil:bat[:oid],A3,A3,true,false,false);
     X_27:bat[:str] := sql.bind(X_8,"sys","region","r_name",1);
-    C_210 := algebra.subselect(X_27,C_21,A3,A3,true,false,false);
-    C_28 := sql.subdelta(C_207,C_21,C_25,C_208,C_210);
+    C_211 := algebra.subselect(X_27,C_21,A3,A3,true,false,false);
+    C_28 := sql.subdelta(C_208,C_21,C_25,C_209,C_211);
     (X_31,r1_37) := algebra.subjoin(X_20,C_28,nil:BAT,nil:BAT,false,nil:lng);
     X_35 := algebra.projection(X_31,C_9);
     C_36:bat[:oid] := sql.tid(X_8,"sys","customer");
@@ -100,12 +100,12 @@ function user.s2_1(A0:str,A1:bte,A2:bte,
     X_46 := algebra.projection(r1_52,C_36);
     X_49:bat[:date] := sql.bind(X_8,"sys","orders","o_orderdate",0);
     C_47:bat[:oid] := sql.tid(X_8,"sys","orders");
-    C_211 := algebra.subselect(X_49,C_47,A4,A5,true,true,false);
+    C_212 := algebra.subselect(X_49,C_47,A4,A5,true,true,false);
     (C_51,r1_59) := sql.bind(X_8,"sys","orders","o_orderdate",2);
-    C_212 := algebra.subselect(r1_59,nil:bat[:oid],A4,A5,true,true,false);
+    C_213 := algebra.subselect(r1_59,nil:bat[:oid],A4,A5,true,true,false);
     X_53:bat[:date] := sql.bind(X_8,"sys","orders","o_orderdate",1);
-    C_213 := algebra.subselect(X_53,C_47,A4,A5,true,true,false);
-    C_54 := sql.subdelta(C_211,C_47,C_51,C_212,C_213);
+    C_214 := algebra.subselect(X_53,C_47,A4,A5,true,true,false);
+    C_54 := sql.subdelta(C_212,C_47,C_51,C_213,C_214);
     X_55:bat[:oid] := 
sql.bind_idxbat(X_8,"sys","orders","orders_o_custkey_fkey",0);
     (X_57,r1_72) := 
sql.bind_idxbat(X_8,"sys","orders","orders_o_custkey_fkey",2);
     X_59:bat[:oid] := 
sql.bind_idxbat(X_8,"sys","orders","orders_o_custkey_fkey",1);
@@ -125,12 +125,12 @@ function user.s2_1(A0:str,A1:bte,A2:bte,
     X_80 := algebra.projection(r1_94,X_79);
     X_83:bat[:str] := sql.bind(X_8,"sys","part","p_type",0);
     C_81:bat[:oid] := sql.tid(X_8,"sys","part");
-    C_214 := algebra.subselect(X_83,C_81,A6,A6,true,false,false);
+    C_215 := algebra.subselect(X_83,C_81,A6,A6,true,false,false);
     (C_85,r1_108) := sql.bind(X_8,"sys","part","p_type",2);
-    C_215 := algebra.subselect(r1_108,nil:bat[:oid],A6,A6,true,false,false);
+    C_216 := algebra.subselect(r1_108,nil:bat[:oid],A6,A6,true,false,false);
     X_87:bat[:str] := sql.bind(X_8,"sys","part","p_type",1);
-    C_216 := algebra.subselect(X_87,C_81,A6,A6,true,false,false);
-    C_88 := sql.subdelta(C_214,C_81,C_85,C_215,C_216);
+    C_217 := algebra.subselect(X_87,C_81,A6,A6,true,false,false);
+    C_88 := sql.subdelta(C_215,C_81,C_85,C_216,C_217);
     X_89:bat[:int] := sql.bind(X_8,"sys","part","p_partkey",0);
     (C_91,r1_120) := sql.bind(X_8,"sys","part","p_partkey",2);
     X_93:bat[:int] := sql.bind(X_8,"sys","part","p_partkey",1);
@@ -158,37 +158,38 @@ function user.s2_1(A0:str,A1:bte,A2:bte,
     X_125:bat[:int] := batmtime.year(X_124);
     (X_126,r1_176,r2_176) := group.subgroupdone(X_125);
     X_129 := algebra.projection(r1_176,X_125);
-    X_134:bat[:str] := sql.bind(X_8,"sys","nation","n_name",0);
-    (C_136,r1_186) := sql.bind(X_8,"sys","nation","n_name",2);
-    X_138:bat[:str] := sql.bind(X_8,"sys","nation","n_name",1);
-    X_139 := sql.projectdelta(C_9,X_134,C_136,r1_186,X_138);
-    X_140 := algebra.projection(r1_162,X_139);
-    X_141:bat[:bit] := batcalc.==(X_140,A0);
-    X_142:bat[:bit] := batcalc.isnil(X_141);
-    X_143:bat[:bit] := batcalc.ifthenelse(X_142,false,X_141);
-    X_144:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_extendedprice",0);
-    (C_146,r1_206) := sql.bind(X_8,"sys","lineitem","l_extendedprice",2);
-    X_148:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_extendedprice",1);
-    X_149 := sql.projectdelta(C_64,X_144,C_146,r1_206,X_148);
-    X_150:bat[:lng] := algebra.projectionpath(X_121,X_112,X_95,r1_94,X_149);
-    X_151 := calc.lng(A2,15,2);
-    X_153:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_discount",0);
-    (C_155,r1_221) := sql.bind(X_8,"sys","lineitem","l_discount",2);
-    X_157:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_discount",1);
-    X_158 := sql.projectdelta(C_64,X_153,C_155,r1_221,X_157);
-    X_159:bat[:lng] := algebra.projectionpath(X_121,X_112,X_95,r1_94,X_158);
-    X_160:bat[:lng] := batcalc.-(X_151,X_159);
-    X_161:bat[:lng] := batcalc.*(X_150,X_160);
-    X_162 := calc.lng(A1,19,4);
-    X_165:bat[:lng] := batcalc.ifthenelse(X_143,X_161,X_162);
-    X_166:bat[:lng] := aggr.subsum(X_165,X_126,r1_176,true,true);
-    X_169:bat[:lng] := aggr.subsum(X_161,X_126,r1_176,true,true);
-    (X_130,r1_180,r2_180) := algebra.subsort(X_129,false,false);
-    X_133 := algebra.projection(r1_180,X_129);
-    X_167:bat[:lng] := batcalc.lng(4,X_166,19,8);
-    X_170:bat[:lng] := batcalc./(X_167,X_169);
-    X_171 := algebra.projection(r1_180,X_170);
-    sql.resultSet(X_190,X_192,X_194,X_196,X_197,X_133,X_171);
+    X_135:bat[:str] := sql.bind(X_8,"sys","nation","n_name",0);
+    (C_137,r1_190) := sql.bind(X_8,"sys","nation","n_name",2);
+    X_139:bat[:str] := sql.bind(X_8,"sys","nation","n_name",1);
+    X_140 := sql.projectdelta(C_9,X_135,C_137,r1_190,X_139);
+    X_141 := algebra.projection(r1_162,X_140);
+    X_142:bat[:bit] := batcalc.==(X_141,A0);
+    X_143:bat[:bit] := batcalc.isnil(X_142);
+    X_144:bat[:bit] := batcalc.ifthenelse(X_143,false,X_142);
+    X_145:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_extendedprice",0);
+    (C_147,r1_209) := sql.bind(X_8,"sys","lineitem","l_extendedprice",2);
+    X_149:bat[:lng] := sql.bind(X_8,"sys","lineitem","l_extendedprice",1);
+    X_150 := sql.projectdelta(C_64,X_145,C_147,r1_209,X_149);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to