Changeset: 6afa928d1499 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6afa928d1499
Added Files:
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.sql
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.stable.err
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_ALTER_TABLE_crash.Bug-4010.stable.out
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.sql
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.stable.err
sql/test/BugTracker-2016/Tests/RELEASE_SAVEPOINT_after_UPDATE_crash.Bug-4010.stable.out
sql/test/BugTracker-2016/Tests/string-length.Bug-3999.sql
sql/test/BugTracker-2016/Tests/string-length.Bug-3999.stable.err
sql/test/BugTracker-2016/Tests/string-length.Bug-3999.stable.out
Modified Files:
clients/Tests/exports.stable.out
gdk/gdk_select.c
java/ChangeLog.Jul2015
java/ChangeLog.Jun2016
java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
java/src/main/java/nl/cwi/monetdb/util/SQLExporter.java
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/extras/mal_optimizer_template/opt_sql_append.c
monetdb5/mal/mal.h
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_listing.c
monetdb5/mal/mal_namespace.c
monetdb5/modules/mal/Tests/inspect00.stable.out
monetdb5/modules/mal/remote.c
monetdb5/optimizer/Tests/dataflow3.stable.out
monetdb5/optimizer/Tests/inline02.stable.out
monetdb5/optimizer/Tests/inline03.stable.out
monetdb5/optimizer/Tests/inline04.stable.out
monetdb5/optimizer/Tests/inline06.stable.out
monetdb5/optimizer/Tests/inline07.stable.out
monetdb5/optimizer/Tests/inline09.stable.out
monetdb5/optimizer/Tests/inline10.stable.out
monetdb5/optimizer/Tests/inline12.stable.out
monetdb5/optimizer/Tests/inlineCst.stable.out
monetdb5/optimizer/Tests/inlineFunction2.stable.out
monetdb5/optimizer/Tests/manifold2.stable.out
monetdb5/optimizer/opt_support.c
monetdb5/optimizer/opt_wrapper.c
monetdb5/optimizer/optimizer.c
monetdb5/scheduler/run_isolate.c
sql/backends/monet5/sql_decimal.mal
sql/backends/monet5/sql_decimal.mal.sh
sql/backends/monet5/sql_decimal_hge.mal
sql/backends/monet5/sql_decimal_hge.mal.sh
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_optimizer.c
sql/benchmarks/ssbm/Tests/01-explain.stable.out
sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/02-explain.stable.out
sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/03-explain.stable.out
sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/04-explain.stable.out
sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/05-explain.stable.out
sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/06-explain.stable.out
sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/07-explain.stable.out
sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/08-explain.stable.out
sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/09-explain.stable.out
sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
sql/benchmarks/ssbm/Tests/10-explain.stable.out
sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
sql/benchmarks/tpch/Tests/01-explain.stable.out
sql/benchmarks/tpch/Tests/01-explain.stable.out.32bit
sql/benchmarks/tpch/Tests/01-explain.stable.out.int128
sql/benchmarks/tpch/Tests/02-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out
sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
sql/benchmarks/tpch/Tests/05-explain.stable.out
sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit
sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
sql/benchmarks/tpch/Tests/06-explain.stable.out
sql/benchmarks/tpch/Tests/06-explain.stable.out.int128
sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
sql/benchmarks/tpch/Tests/09-explain.stable.out
sql/benchmarks/tpch/Tests/09-explain.stable.out.int128
sql/benchmarks/tpch/Tests/10-explain.stable.out
sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
sql/benchmarks/tpch/Tests/12-explain.stable.out
sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
sql/benchmarks/tpch/Tests/14-explain.stable.out.int128
sql/benchmarks/tpch/Tests/17-explain.stable.out
sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
sql/jdbc/tests/Tests/Test_JdbcClient.stable.out
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_table.c
sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out
sql/test/BugTracker-2009/Tests/segfault_when_quitting_debugger.SF-2538837.stable.out
sql/test/BugTracker-2011/Tests/func_iter_vs_bulk.Bug-2826.stable.out
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128
sql/test/BugTracker-2013/Tests/between.Bug-3259.stable.out.int128.single
sql/test/BugTracker-2014/Tests/querylog.Bug-3607.stable.out
sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
sql/test/BugTracker-2016/Tests/All
sql/test/BugTracker-2016/Tests/storagemodel.stable.out
sql/test/BugTracker/Tests/authorization.SF-1430616.stable.out
sql/test/BugTracker/Tests/bug_in_selection.SF-1892413.stable.out
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
sql/test/Users/Tests/copyinto.SQL.py
sql/test/Users/Tests/copyinto.stable.err
sql/test/Users/Tests/dropManyUsers.Bug-3764.SQL.py
sql/test/Users/Tests/dropManyUsers.Bug-3764.stable.out
sql/test/Users/Tests/test_privs2_p1.stable.out
sql/test/bugs/Tests/except-union-intersect-bug-sf-1146079.stable.out
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
sql/test/mergetables/Tests/mergequery.stable.out
sql/test/remote/Tests/partition_elim.stable.out
testing/Mfilter.py
testing/Mtest.py.in
Branch: pythonudf
Log Message:
Merge with default.
diffs (truncated from 8507 to 300 lines):
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1939,7 +1939,7 @@ str ZORDslice_int(bat *r, int *xb, int *
str abortRef;
str addOptimizerPipe(Client cntxt, MalBlkPtr mb, str name);
str addPipeDefinition(Client cntxt, str name, str pipe);
-void addtoMalBlkHistory(MalBlkPtr mb, str marker);
+void addtoMalBlkHistory(MalBlkPtr mb);
str affectedRowsRef;
str aggrRef;
str alarmRef;
@@ -2117,7 +2117,6 @@ int getHgeConstant(MalBlkPtr mb, hge val
int getIntConstant(MalBlkPtr mb, int val);
int getLngConstant(MalBlkPtr mb, lng val);
MalBlkPtr getMalBlkHistory(MalBlkPtr mb, int idx);
-MalBlkPtr getMalBlkMarker(MalBlkPtr mb, str marker);
lng getMemoryClaim(MalBlkPtr mb, MalStkPtr stk, InstrPtr pci, int i, int flag);
str getName(const char *nme);
str getNameLen(const char *nme, size_t len);
@@ -2139,7 +2138,6 @@ lng getUserTime(void);
str getVarName(MalBlkPtr mb, int i);
lng getVolume(MalStkPtr stk, InstrPtr pci, int rd);
int getWrdConstant(MalBlkPtr mb, wrd val);
-MalBlkPtr gotoMalBlkMarker(MalBlkPtr mb, str marker);
str grabRef;
str groupRef;
str groupbyRef;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1955,6 +1955,8 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
oid rlval = oid_nil, rhval = oid_nil;
int sorted = 0; /* which column is sorted */
BAT *tmp;
+ int use_orderidx = 0;
+ oid ll, lh;
assert(BAThdense(l));
assert(BAThdense(rl));
@@ -1971,12 +1973,13 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
assert(r2->htype == TYPE_void);
assert(r2->ttype == TYPE_oid);
- ALGODEBUG fprintf(stderr, "#rangejoin(l=%s#" BUNFMT "[%s]%s%s,"
+ ALGODEBUG fprintf(stderr, "#rangejoin(l=%s#" BUNFMT "[%s]%s%s%s,"
"rl=%s#" BUNFMT "[%s]%s%s,rh=%s#" BUNFMT "[%s]%s%s,"
"sl=%s#" BUNFMT "%s%s,sr=%s#" BUNFMT "%s%s)\n",
BATgetId(l), BATcount(l), ATOMname(l->ttype),
l->tsorted ? "-sorted" : "",
l->trevsorted ? "-revsorted" : "",
+ BATcheckorderidx(l) ? "-orderedidx" : "",
BATgetId(rl), BATcount(rl), ATOMname(rl->ttype),
rl->tsorted ? "-sorted" : "",
rl->trevsorted ? "-revsorted" : "",
@@ -2033,7 +2036,17 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
lvars = rlvars = rhvars = NULL;
}
- if (BATordered(l) || BATordered_rev(l)) {
+ ll = l->hseqbase;
+ lh = ll + l->batCount;
+ if ((!sl || (sl && BATtdense(sl))) &&
+ (BATcheckorderidx(l) || (VIEWtparent(l) &&
BATcheckorderidx(BBPquickdesc(abs(VIEWtparent(l)), 0))))) {
+ use_orderidx = 1;
+ if (VIEWtparent(l) && !BATcheckorderidx(l)) {
+ l = BBPdescriptor(abs(VIEWtparent(l)));
+ }
+ }
+
+ if (BATordered(l) || BATordered_rev(l) || use_orderidx) {
/* left column is sorted, use binary search */
const oid *sval = sl ? (const oid *) Tloc(sl, BUNfirst(sl)) :
NULL;
@@ -2080,18 +2093,19 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
}
if (cmp(vrl, nil) == 0 || cmp(vrh, nil) == 0)
continue;
- if (l->tsorted) {
+ if (l->tsorted || use_orderidx) {
if (li)
- low = SORTfndfirst(l, vrl);
+ low = use_orderidx? ORDERfndfirst(l,
vrl): SORTfndfirst(l, vrl);
else
- low = SORTfndlast(l, vrl);
+ low = use_orderidx? ORDERfndlast(l,
vrl): SORTfndlast(l, vrl);
low -= BUNfirst(l);
if (hi)
- high = SORTfndlast(l, vrh);
+ high = use_orderidx? ORDERfndlast(l,
vrh): SORTfndlast(l, vrh);
else
- high = SORTfndfirst(l, vrh);
+ high = use_orderidx? ORDERfndfirst(l,
vrh): SORTfndfirst(l, vrh);
high -= BUNfirst(l);
} else {
+ assert(l->trevsorted);
if (li)
low = SORTfndlast(l, vrh);
else
@@ -2107,14 +2121,20 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
continue;
low += l->hseqbase;
high += l->hseqbase;
- if (sl) {
+ if (use_orderidx) {
+ const oid *ord;
oid o;
+ ord = (const oid *) l->torderidx->base +
ORDERIDXOFF;
- o = (oid) low;
- low = SORTfndfirst(sl, &o) - BUNfirst(sl);
- o = (oid) high;
- high = SORTfndfirst(sl, &o) - BUNfirst(sl);
- assert(high >= low);
+ if (sl) {
+ assert(BATtdense(sl));
+ o = (oid) ((*(ord+low))&BUN_UNMSK);
+ ll = SORTfndfirst(sl, &o) -
BUNfirst(sl);
+ o = (oid) ((*(ord+high))&BUN_UNMSK);
+ lh = SORTfndfirst(sl, &o) -
BUNfirst(sl);
+ }
+ assert(lh >= ll);
+
if (BATcapacity(r1) < BUNlast(r1) + high - low)
{
cnt = BUNlast(r1) + high - low + 1024;
if (cnt > maxsize)
@@ -2128,30 +2148,64 @@ rangejoin(BAT *r1, BAT *r2, BAT *l, BAT
dst1 = (oid *) Tloc(r1, BUNfirst(r1));
dst2 = (oid *) Tloc(r2, BUNfirst(r2));
}
+
+ ord += low;
while (low < high) {
- dst1[r1->batCount++] = sval[low];
- dst2[r2->batCount++] = ro;
- low++;
+ if (ll <= ((*ord)&BUN_UNMSK) &&
((*ord)&BUN_UNMSK) < lh) {
+ dst1[r1->batCount++] =
((*ord)&BUN_UNMSK);
+ dst2[r2->batCount++] = ro;
+ low++;
+ ord++;
+ }
}
} else {
- /* [low..high) */
- if (BATcapacity(r1) < BUNlast(r1) + high - low)
{
- cnt = BUNlast(r1) + high - low + 1024;
- if (cnt > maxsize)
- cnt = maxsize;
- BATsetcount(r1, BATcount(r1));
- BATsetcount(r2, BATcount(r2));
- if (BATextend(r1, cnt) != GDK_SUCCEED ||
- BATextend(r2, cnt) != GDK_SUCCEED)
- goto bailout;
- assert(BATcapacity(r1) ==
BATcapacity(r2));
- dst1 = (oid *) Tloc(r1, BUNfirst(r1));
- dst2 = (oid *) Tloc(r2, BUNfirst(r2));
- }
- while (low < high) {
- dst1[r1->batCount++] = low;
- dst2[r2->batCount++] = ro;
- low++;
+ if (sl) {
+ oid o;
+
+ o = (oid) low;
+ low = SORTfndfirst(sl, &o) -
BUNfirst(sl);
+ o = (oid) high;
+ high = SORTfndfirst(sl, &o) -
BUNfirst(sl);
+ assert(high >= low);
+
+ if (BATcapacity(r1) < BUNlast(r1) +
high - low) {
+ cnt = BUNlast(r1) + high - low
+ 1024;
+ if (cnt > maxsize)
+ cnt = maxsize;
+ BATsetcount(r1, BATcount(r1));
+ BATsetcount(r2, BATcount(r2));
+ if (BATextend(r1, cnt) !=
GDK_SUCCEED ||
+ BATextend(r2, cnt) !=
GDK_SUCCEED)
+ goto bailout;
+ assert(BATcapacity(r1) ==
BATcapacity(r2));
+ dst1 = (oid *) Tloc(r1,
BUNfirst(r1));
+ dst2 = (oid *) Tloc(r2,
BUNfirst(r2));
+ }
+ while (low < high) {
+ dst1[r1->batCount++] =
sval[low];
+ dst2[r2->batCount++] = ro;
+ low++;
+ }
+ } else {
+ /* [low..high) */
+ if (BATcapacity(r1) < BUNlast(r1) +
high - low) {
+ cnt = BUNlast(r1) + high - low
+ 1024;
+ if (cnt > maxsize)
+ cnt = maxsize;
+ BATsetcount(r1, BATcount(r1));
+ BATsetcount(r2, BATcount(r2));
+ if (BATextend(r1, cnt) !=
GDK_SUCCEED ||
+ BATextend(r2, cnt) !=
GDK_SUCCEED)
+ goto bailout;
+ assert(BATcapacity(r1) ==
BATcapacity(r2));
+ dst1 = (oid *) Tloc(r1,
BUNfirst(r1));
+ dst2 = (oid *) Tloc(r2,
BUNfirst(r2));
+ }
+ while (low < high) {
+ dst1[r1->batCount++] = low;
+ dst2[r2->batCount++] = ro;
+ low++;
+ }
}
}
}
diff --git a/java/ChangeLog.Jul2015 b/java/ChangeLog.Jul2015
--- a/java/ChangeLog.Jul2015
+++ b/java/ChangeLog.Jul2015
@@ -1,7 +1,18 @@
# ChangeLog file for java
# This file is updated with Maddlog
+* Thu May 12 2016 Martin van Dinther <[email protected]>
+- Improved JdbcClient program when presenting query data to console.
+ It used to send an SQL catalog query for each query result column
+ which slowed down the interactive response considerably.
+ These additional SQL catalog queries have been eliminated.
+
+* Thu May 12 2016 Martin van Dinther <[email protected]>
+- Corrected MonetResultSet.getObject(String columnName). It no longer
+ throws a NullPointerException in cases where internally a
+ MonetVirtualResultSet is used.
+
* Sun May 8 2016 Jennie Zhang <[email protected]>
- Fixed Connection.isValid(): this method should never attempt to
- close the connection, even an error has occurred
+ close the connection, even if an error has occurred.
diff --git a/java/ChangeLog.Jun2016 b/java/ChangeLog.Jun2016
--- a/java/ChangeLog.Jun2016
+++ b/java/ChangeLog.Jun2016
@@ -1,6 +1,12 @@
# ChangeLog file for java
# This file is updated with Maddlog
+* Thu May 19 2016 Martin van Dinther <[email protected]>
+- Implemented MonetDatabaseMetaData.supportsConvert() and
+ MonetDatabaseMetaData.supportsConvert(int fromType, int toType) methods.
+ It used to always return false. Now it returns true for the supported
conversions.
+ This fixes Bug 3460.
+
* Sun May 8 2016 Jennie Zhang <[email protected]>
- ResultSet.setFetchSize(): added a dummy implementation to get rid
of the SQLFeatureNotSupportedException. In MonetDB, it does not
diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -396,48 +396,16 @@ public class MonetDatabaseMetaData exten
/**
* Get a comma separated list of all a database's SQL keywords that
* are NOT also SQL:2003 keywords.
- *
*
* @return a comma separated list of MonetDB keywords
*/
@Override
public String getSQLKeywords() {
- StringBuilder sb = new StringBuilder(1000);
- Statement st = null;
- ResultSet rs = null;
- try {
- st = con.createStatement();
- rs = st.executeQuery("SELECT \"keyword\" FROM
\"sys\".\"keywords\" ORDER BY 1");
- // Fetch the keywords and concatenate them into a
StringBuffer separated by comma's
- boolean isfirst = true;
- while (rs.next()) {
- String keyword = rs.getString(1);
- if (keyword != null) {
- if (isfirst) {
- isfirst = false;
- } else {
- sb.append(",");
- }
- sb.append(keyword);
- }
- }
- } catch (SQLException e) {
- /* This may occur for old (before Jul2015 release)
MonetDB servers which do not have the sys.keywords table. */
- } finally {
- if (rs != null) {
- try {
- rs.close();
- } catch (SQLException e) { /* ignore */ }
- }
- if (st != null) {
- try {
- st.close();
- } catch (SQLException e) { /* ignore */ }
- }
- }
-
- return (sb.length() > 0) ? sb.toString() :
- /* else fallback and return old static list (as
returned in clients/odbc/driver/SQLGetInfo.c case SQL_KEYWORDS:) */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list