Changeset: d8b4df3757a2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d8b4df3757a2
Added Files:
clients/python2/test/run.cmd
clients/python3/test/run.cmd
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.csv
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql.in
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.err
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.stable.out
Removed Files:
sql/Changelog.Feb2013
Modified Files:
.hgtags
MonetDB.spec
NT/installer32/MonetDB-ODBC-Installer.vdproj
NT/installer32/MonetDB5-Geom-Module.vdproj
NT/installer32/MonetDB5-SQL-Installer.vdproj
NT/installer64/MonetDB-ODBC-Installer.vdproj
NT/installer64/MonetDB5-Geom-Module.vdproj
NT/installer64/MonetDB5-SQL-Installer.vdproj
NT/monetdb_config.h.in
NT/rules.msc
clients/Tests/exports.stable.out
clients/mapilib/mapi.rc
clients/odbc/driver/driver.rc
clients/odbc/winsetup/setup.rc
clients/python2/setup.py
clients/python3/setup.py
configure.ag
debian/changelog
debian/rules
gdk/gdk_bat.c
gdk/gdk_join.c
gdk/libbat.rc
libversions
monetdb5/mal/mal_client.h
monetdb5/mal/mal_instruction.h
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_profiler.c
monetdb5/mal/mal_profiler.h
monetdb5/mal/mal_recycle.c
monetdb5/mal/mal_runtime.c
monetdb5/mal/mal_stack.h
monetdb5/modules/mal/batExtensions.c
monetdb5/modules/mal/profiler.c
monetdb5/modules/mal/profiler.mal
monetdb5/modules/mal/recycle.c
monetdb5/optimizer/Tests/cst01.mal
monetdb5/optimizer/Tests/cst01.stable.out
monetdb5/optimizer/opt_centipede.c
monetdb5/optimizer/opt_evaluate.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_pushselect.c
monetdb5/tools/libmonetdb5.rc
sql/ChangeLog-Archive
sql/ChangeLog.Feb2013
sql/backends/monet5/sql.mx
sql/backends/monet5/sql_gencode.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_utils.c
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
sql/test/BugTracker-2013/Tests/All
sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
sql/test/mserver5-sql-readonly/Tests/mserver5-sql-readonly-table.stable.err
testing/Mtest.py.in
vertoo.data
Branch: default
Log Message:
merge
diffs (truncated from 3105 to 300 lines):
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -520,3 +520,6 @@ fc0c9b319d2275215c283a7ece1d389e55b43217
0ee398b5025f7bc3c0320d70eb5c0a3707b69c67 mutation_root
7daa66a6db1c0404dbf7ed935437b59b7bf54d4b Feb2013_5
df2cbb7845660d94dc484bab860b6893344be92a Feb2013_SP2_release
+cb55e859a50e0d06a50cc9e4f6e377ddea7cc3aa Feb2013_7
+df2cbb7845660d94dc484bab860b6893344be92a Feb2013_SP2_release
+e0139450d66e4fc02c7f5d1d9e6f92fc22d862df Feb2013_SP2_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -722,6 +722,13 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libmonet
rm -fr $RPM_BUILD_ROOT
%changelog
+* Fri Apr 26 2013 Sjoerd Mullender <[email protected]> - 11.15.7-20130426
+- Rebuilt.
+
+* Sat Apr 13 2013 Niels Nes <[email protected]> - 11.15.7-20130426
+- sql: Added TEMPORARY to the non-reserved keywords, ie no need for double
+ quotes when used as identifier.
+
* Fri Apr 12 2013 Sjoerd Mullender <[email protected]> - 11.15.5-20130412
- Rebuilt.
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
@@ -2592,6 +2592,7 @@ str getName(str nme, size_t len);
int getPC(MalBlkPtr mb, InstrPtr p);
str getPipeCatalog(int *nme, int *def, int *stat);
str getPipeDefinition(str name);
+int getProfileCounter(int idx);
stream *getProfilerStream(void);
str getRef;
str getRefName(MalBlkPtr mb, int i);
@@ -2789,6 +2790,7 @@ str mergecandRef;
aggrFun minAggr;
str minRef;
str min_no_nilRef;
+str minusRef;
str mirrorRef;
str mitosisRef;
str mkeyRef;
@@ -3079,7 +3081,6 @@ str sqlRef;
int sqlblob_fromstr(char *instr, int *l, blob **val);
int sqlblob_tostr(str *tostr, int *l, blob *p);
int sqlfunctionProp;
-str sqlplusRef;
str srvpoolRef;
int stableProp;
str startProfiling(void);
diff --git a/clients/python2/test/run.cmd b/clients/python2/test/run.cmd
new file mode 100644
--- /dev/null
+++ b/clients/python2/test/run.cmd
@@ -0,0 +1,8 @@
+set TSTDB=demo
+set TSTHOSTNAME=localhost
+set TSTUSERNAME=monetdb
+set TSTPASSWORD=monetdb
+set TSTDEBUG=no
+
+nosetests ./runtests.py
+nosetests ./test_control.py
diff --git a/clients/python3/test/run.cmd b/clients/python3/test/run.cmd
new file mode 100644
--- /dev/null
+++ b/clients/python3/test/run.cmd
@@ -0,0 +1,8 @@
+set TSTDB=demo
+set TSTHOSTNAME=localhost
+set TSTUSERNAME=monetdb
+set TSTPASSWORD=monetdb
+set TSTDEBUG=no
+
+nosetests ./runtests.py
+nosetests ./test_control.py
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,16 @@
+monetdb (11.15.7-20130426) unstable; urgency=low
+
+ * Rebuilt.
+
+ -- Sjoerd Mullender <[email protected]> Fri, 26 Apr 2013 13:09:55 +0200
+
+monetdb (11.15.7-20130426) unstable; urgency=low
+
+ * sql: Added TEMPORARY to the non-reserved keywords, ie no need for double
+ quotes when used as identifier.
+
+ -- Niels Nes <[email protected]> Sat, 13 Apr 2013 13:09:54 +0200
+
monetdb (11.15.5-20130412) unstable; urgency=low
* Rebuilt.
diff --git a/debian/rules b/debian/rules
--- a/debian/rules
+++ b/debian/rules
@@ -48,13 +48,13 @@ override_dh_auto_configure:
# currently the test suite fails
override_dh_auto_test:
-override_dh_auto_install:
- dh_auto_install
- cd clients/python2 && python setup.py install
--root=$(CURDIR)/debian/tmp --install-layout=deb
- cd clients/python3 && python3 setup.py install
--root=$(CURDIR)/debian/tmp --install-layout=deb
-
override_dh_clean:
dh_clean
cd clients/python2 && python setup.py clean
cd clients/python3 && python3 setup.py clean
+override_dh_python2:
+ dh_python2 clients/python2
+
+override_dh_python3:
+ dh_python3 clients/python3
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -2812,6 +2812,7 @@ BATassertHeadProps(BAT *b)
q = BUNlast(b);
assert(b->H->heap.size <= b->H->heap.maxsize);
+ assert(b->H->heap.free >= headsize(b, BUNlast(b)));
if (b->htype != TYPE_void) {
assert(b->batCount <= b->batCapacity);
assert(b->H->heap.size >= b->H->heap.free);
diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -84,11 +84,13 @@ joininitresults(BAT **r1p, BAT **r2p, BU
r1->tkey = 1;
r1->tsorted = 1;
r1->trevsorted = 1;
+ r1->tdense = 1;
r2->T->nil = 0;
r2->T->nonil = 1;
r2->tkey = 1;
r2->tsorted = 1;
r2->trevsorted = 1;
+ r2->tdense = 1;
*r1p = r1;
*r2p = r2;
return GDK_SUCCEED;
@@ -102,38 +104,64 @@ joininitresults(BAT **r1p, BAT **r2p, BU
* (lo inclusive, hi not inclusive) in rvals/rvars.
* If last is set, return the index of the first value > v; if last is
* not set, return the index of the first value >= v.
- * If reverse is -1, the values are sorted in reverse order and hence
+ * If ordering is -1, the values are sorted in reverse order and hence
* all comparisons are reversed.
*/
static BUN
binsearch(const oid *rcand, oid offset,
const char *rvals, const char *rvars,
int rwidth, BUN lo, BUN hi, const char *v,
- int (*cmp)(const void *, const void *), int reverse, int last)
+ int (*cmp)(const void *, const void *), int ordering, int last)
{
BUN mid;
int c;
- assert(reverse == 1 || reverse == -1);
+ assert(ordering == 1 || ordering == -1);
assert(lo < hi);
--hi; /* now hi is inclusive */
- if ((c = reverse * cmp(VALUE(r, rcand ? rcand[lo] - offset : lo), v)) >
0 ||
+ if ((c = ordering * cmp(VALUE(r, rcand ? rcand[lo] - offset : lo), v))
> 0 ||
(!last && c == 0))
return lo;
- if ((c = reverse * cmp(VALUE(r, rcand ? rcand[hi] - offset : hi), v)) <
0 ||
+ if ((c = ordering * cmp(VALUE(r, rcand ? rcand[hi] - offset : hi), v))
< 0 ||
(last && c == 0))
return hi + 1;
+/* the two versions here are equivalent, the first is disabled because
+ * it does more work in the inner loop */
+#if 0
/* loop invariant:
* last ? value@lo <= v < value@hi : value@lo < v <= value@hi */
while (hi - lo > 1) {
mid = (hi + lo) / 2;
- if ((c = reverse * cmp(VALUE(r, rcand ? rcand[mid] - offset :
mid), v)) > 0 ||
+ if ((c = ordering * cmp(VALUE(r, rcand ? rcand[mid] - offset :
mid), v)) > 0 ||
(!last && c == 0))
hi = mid;
else
lo = mid;
}
+#else
+ if (last) {
+ /* loop invariant:
+ * value@lo <= v < value@hi */
+ while (hi - lo > 1) {
+ mid = (hi + lo) / 2;
+ if (ordering * cmp(VALUE(r, rcand ? rcand[mid] - offset
: mid), v) > 0)
+ hi = mid;
+ else
+ lo = mid;
+ }
+ } else {
+ /* loop invariant:
+ * value@lo < v <= value@hi */
+ while (hi - lo > 1) {
+ mid = (hi + lo) / 2;
+ if (ordering * cmp(VALUE(r, rcand ? rcand[mid] - offset
: mid), v) >= 0)
+ hi = mid;
+ else
+ lo = mid;
+ }
+ }
+#endif
return hi;
}
@@ -160,10 +188,18 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT
const char *v, *prev = NULL;
BUN nl, nr;
int insert_nil;
+ /* equal_order is set if we can scan both BATs in the same
+ * order, so when both are sorted or both are reverse sorted
+ * -- important to know in order to skip over values; if l is
+ * not sorted, this must be set to 1 and we will always do a
+ * binary search on all of r */
int equal_order;
- int lreverse, rreverse;
+ /* [lr]ordering is either 1 or -1 depending on the order of
+ * l/r: it determines the comparison function used */
+ int lordering, rordering;
oid lv;
BUN i;
+ int lskipped = 0; /* whether we skipped values in l */
ALGODEBUG fprintf(stderr, "#mergejoin(l=%s#" BUNFMT "[%s]%s%s,"
"r=%s#" BUNFMT "[%s]%s%s,sl=%s#" BUNFMT "%s%s,"
@@ -219,30 +255,26 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT
if (l->tsorted || l->trevsorted) {
/* determine opportunistic scan window for l */
- for (nl = lcand ? (BUN) (lcandend - lcand) : lend - lstart,
lscan = 4;
+ for (nl = lcand ? (BUN) (lcandend - lcand) : lend - lstart,
+ lscan = 4;
nl > 0;
lscan++)
nl >>= 1;
-
- /* equal_order is set if we can scan both BATs in the
- * same order, so when both are sorted or both are
- * reverse sorted */
- equal_order = l->tsorted == r->tsorted || l->trevsorted ==
r->trevsorted;
- /* [lr]reverse is either 1 or -1 depending on the
- * order of l/r: it determines the comparison function
- * used */
- lreverse = l->tsorted ? 1 : -1;
+ equal_order = l->tsorted == r->tsorted ||
+ l->trevsorted == r->trevsorted;
+ lordering = l->tsorted && (r->tsorted|| !equal_order) ? 1 : -1;
+ rordering = equal_order ? lordering : -lordering;
} else {
/* if l not sorted, we will always use binary search
* on r */
lscan = 0;
equal_order = 1;
- lreverse = 1;
+ lordering = 1;
+ rordering = r->tsorted ? 1 : -1;
/* if l not sorted, we only know for sure that r2 is
* key if l is, and that r1 is key if r is */
r2->tkey = l->tkey != 0;
r1->tkey = r->tkey != 0;
-
}
/* determine opportunistic scan window for r; if l is not
* sorted this is only used to find range of equal values */
@@ -250,7 +282,6 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT
nl > 0;
rscan++)
nl >>= 1;
- rreverse = r->tsorted ? 1 : -1;
while (lcand ? lcand < lcandend : lstart < lend) {
if (!nil_on_miss && lscan > 0) {
@@ -258,16 +289,40 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT
* lscan from current position in l), use
* binary search on l to skip over
* non-matching values */
+ if (equal_order) {
+ /* next value to match is first in r */
+ v = VALUE(r, rcand ? rcand[0] - r->hseqbase :
rstart);
+ } else {
+ /* next value to match is last in r */
+ v = VALUE(r, rcand ? rcandend[-1] - r->hseqbase
: rend - 1);
+ }
if (lcand) {
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list