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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list