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 <sjo...@acm.org> - 11.15.7-20130426
+- Rebuilt.
+
+* Sat Apr 13 2013 Niels Nes <ni...@cwi.nl> - 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 <sjo...@acm.org> - 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 <sjo...@acm.org>  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 <ni...@cwi.nl>  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
checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to