Changeset: fdb96d0d0069 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fdb96d0d0069
Added Files:
        buildtools/ChangeLog.Jul2012
        clients/ChangeLog.Jul2012
        gdk/ChangeLog.Jul2012
        geom/ChangeLog.Jul2012
        java/ChangeLog.Jul2012
        monetdb5/ChangeLog.Jul2012
        sql/ChangeLog.Jul2012
        testing/ChangeLog.Jul2012
        tools/merovingian/ChangeLog.Jul2012
Removed Files:
        buildtools/ChangeLog.Jun2012
        clients/ChangeLog.Jun2012
        gdk/ChangeLog.Jun2012
        geom/ChangeLog.Jun2012
        java/ChangeLog.Jun2012
        monetdb5/ChangeLog.Jun2012
        sql/ChangeLog.Jun2012
        testing/ChangeLog.Jun2012
        tools/merovingian/ChangeLog.Jun2012
Modified Files:
        gdk/gdk_atoms.c
        gdk/gdk_calc.c
        gdk/gdk_qsort.c
        monetdb5/mal/mal_parser.c
        monetdb5/modules/kernel/calc.mal
        monetdb5/modules/kernel/calc.mal.sh
        monetdb5/modules/kernel/group.mx
        sql/test/BugTracker-2012/Tests/bart-crash.Bug-3057.sql
        sql/test/zones.sql
Branch: default
Log Message:

Merge with Jul2012 branch.


diffs (truncated from 353 to 300 lines):

diff --git a/buildtools/ChangeLog.Jun2012 b/buildtools/ChangeLog.Jul2012
rename from buildtools/ChangeLog.Jun2012
rename to buildtools/ChangeLog.Jul2012
diff --git a/clients/ChangeLog.Jun2012 b/clients/ChangeLog.Jul2012
rename from clients/ChangeLog.Jun2012
rename to clients/ChangeLog.Jul2012
diff --git a/gdk/ChangeLog.Jun2012 b/gdk/ChangeLog.Jul2012
rename from gdk/ChangeLog.Jun2012
rename to gdk/ChangeLog.Jul2012
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -1774,13 +1774,13 @@ OIDtoStr(char **dst, int *len, const oid
 atomDesc BATatoms[MAXATOMS] = {
        {"void",
 #if SIZEOF_OID == SIZEOF_INT
-        TYPE_void, 1, 0, /* sizeof(void) */ 0, 0, 1, (ptr) &int_nil,
+        TYPE_void, 1, 0, /* sizeof(void) */ 0, 0, 1, (ptr) &oid_nil,
         (int (*)(const char *, int *, ptr *)) OIDfromStr, (int (*)(str *, int 
*, const void *)) OIDtoStr,
         (void *(*)(void *, stream *, size_t)) voidRead, (int (*)(const void *, 
stream *, size_t)) voidWrite,
         (int (*)(const void *, const void *)) intCmp,
         (BUN (*)(const void *)) intHash, 0,
 #else
-        TYPE_void, 1, 0, /* sizeof(void) */ 0, 0, 1, (ptr) &lng_nil,
+        TYPE_void, 1, 0, /* sizeof(void) */ 0, 0, 1, (ptr) &oid_nil,
         (int (*)(const char *, int *, ptr *)) OIDfromStr, (int (*)(str *, int 
*, const void *)) OIDtoStr,
         (void *(*)(void *, stream *, size_t)) voidRead, (int (*)(const void *, 
stream *, size_t)) voidWrite,
         (int (*)(const void *, const void *)) lngCmp,
@@ -1837,13 +1837,13 @@ atomDesc BATatoms[MAXATOMS] = {
         0, 0},
        {"oid",
 #if SIZEOF_OID == SIZEOF_INT
-        TYPE_int, 1, sizeof(oid), sizeof(oid), 0, 0, (ptr) &int_nil,
+        TYPE_int, 1, sizeof(oid), sizeof(oid), 0, 0, (ptr) &oid_nil,
         (int (*)(const char *, int *, ptr *)) OIDfromStr, (int (*)(str *, int 
*, const void *)) OIDtoStr,
         (void *(*)(void *, stream *, size_t)) intRead, (int (*)(const void *, 
stream *, size_t)) intWrite,
         (int (*)(const void *, const void *)) intCmp,
         (BUN (*)(const void *)) intHash, (void (*)(ptr, int)) intConvert,
 #else
-        TYPE_lng, 1, sizeof(oid), sizeof(oid), 0, 0, (ptr) &lng_nil,
+        TYPE_lng, 1, sizeof(oid), sizeof(oid), 0, 0, (ptr) &oid_nil,
         (int (*)(const char *, int *, ptr *)) OIDfromStr, (int (*)(str *, int 
*, const void *)) OIDtoStr,
         (void *(*)(void *, stream *, size_t)) lngRead, (int (*)(const void *, 
stream *, size_t)) lngWrite,
         (int (*)(const void *, const void *)) lngCmp,
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -12816,6 +12816,11 @@ VARconvert(ValPtr ret, const ValRecord *
                                                        &ret->len,
                                                        VALptr((ValPtr) v));
                }
+       } else if (ret->vtype == TYPE_void) {
+               if (abort_on_error &&
+                   ATOMcmp(v->vtype, VALptr((ValPtr) v), ATOMnilptr(v->vtype)) 
!= 0)
+                       nils = BUN_NONE;
+               ret->val.oval = oid_nil;
        } else if (v->vtype == TYPE_void) {
                nils = convert_typeswitchloop(&oid_nil, TYPE_oid,
                                              VALptr(ret), ret->vtype,
diff --git a/gdk/gdk_qsort.c b/gdk/gdk_qsort.c
--- a/gdk/gdk_qsort.c
+++ b/gdk/gdk_qsort.c
@@ -28,19 +28,6 @@ struct qsort_t {
        char *base;
 };
 
-#if SIZEOF_VAR_T == 8
-#define OFF(b, i)      (buf->base +                                    \
-       (buf->hs == 1 ? ((unsigned char *) b)[i] + GDK_VAROFFSET :      \
-        (buf->hs == 2 ? ((unsigned short *) b)[i] + GDK_VAROFFSET :    \
-         (buf->hs == 4 ? ((unsigned int *) b)[i] :                     \
-          ((var_t *) b)[i]))))
-#else
-#define OFF(b, i)      (buf->base +                                    \
-       (buf->hs == 1 ? ((unsigned char *) b)[i] + GDK_VAROFFSET :      \
-        (buf->hs == 2 ? ((unsigned short *) b)[i] + GDK_VAROFFSET :    \
-         ((var_t *) b)[i])))
-#endif
-
 /* return index of middle value at indexes a, b, and c */
 #define MED3(a, b, c) (LT(a, b) ?                                      \
                       (LT(b, c) ? (b) : (LT(a, c) ? (c) : (a))) :      \
@@ -241,13 +228,48 @@ struct qsort_t {
                if (t && buf->ts)                                       \
                        SWAP1((i) * buf->ts, (j) * buf->ts, t, buf->ts); \
        } while (0)
+
+#define GDKqsort_impl GDKqsort_impl_var
+#define INITIALIZER    int z
+#define OFF(i)         (buf->base + VarHeapVal(h, i, buf->hs))
+#define CMP(i, j)      (*buf->cmp)(OFF(i), OFF(j))
+/* EQ is only ever called directly after LE with the same arguments */
+#define EQ(i, j)       (z == 0)
+#define LE(i, j)       ((z = CMP(i, j)) <= 0)
+#define LT(i, j)       (CMP(i, j) < 0)
+#include "gdk_qsort_impl.h"
+#undef GDKqsort_impl
+#undef LE
+#undef LT
+
+#define GDKqsort_impl GDKqsort_impl_var_rev
+#define LE(i, j)       ((z = CMP(i, j)) >= 0)
+#define LT(i, j)       (CMP(i, j) > 0)
+#include "gdk_qsort_impl.h"
+#undef GDKqsort_impl
+#undef OFF
+#undef CMP
+#undef EQ
+#undef LE
+#undef LT
+
 #define GDKqsort_impl GDKqsort_impl_any
 #define INITIALIZER    int z
+#if SIZEOF_VAR_T == 8
+#define OFF(i)         (buf->base +                                    \
+                        (buf->hs == 1 ? ((unsigned char *) h)[i] :     \
+                         buf->hs == 2 ? ((unsigned short *) h)[i] :    \
+                         buf->hs == 4 ? ((unsigned int *) h)[i] :      \
+                         ((var_t *) h)[i]))
+#else
+#define OFF(i)         (buf->base +                                    \
+                        (buf->hs == 1 ? ((unsigned char *) h)[i] :     \
+                         buf->hs == 2 ? ((unsigned short *) h)[i] :    \
+                         ((var_t *) h)[i]))
+#endif
 #define CMP(i, j)      (buf->base ?                                    \
-                        (*buf->cmp)(OFF(h, i),                         \
-                                    OFF(h, j)) :                       \
-                        (*buf->cmp)(h + (i) * buf->hs,                 \
-                                    h + (j) * buf->hs))
+                        (*buf->cmp)(OFF(i), OFF(j)) :                  \
+                        (*buf->cmp)(h + (i) * buf->hs, h + (j) * buf->hs))
 /* EQ is only ever called directly after LE with the same arguments */
 #define EQ(i, j)       (z == 0)
 #define LE(i, j)       ((z = CMP(i, j)) <= 0)
@@ -266,6 +288,7 @@ struct qsort_t {
 #undef EQ
 #undef LE
 #undef LT
+
 #undef SWAP
 
 /* the interface functions */
@@ -276,11 +299,18 @@ GDKqsort(void *h, void *t, void *base, s
 
        assert(hs > 0);
        assert(ts >= 0);
+       assert(tpe != TYPE_void);
+
        buf.hs = (unsigned int) hs;
        buf.ts = (unsigned int) ts;
        buf.cmp = BATatoms[tpe].atomCmp;
        buf.base = base;
 
+       if (ATOMvarsized(tpe)) {
+               assert(base != NULL);
+               GDKqsort_impl_var(&buf, h, t, n);
+               return;
+       }
        if (base)
                tpe = TYPE_str; /* we need the default case */
 
@@ -316,11 +346,18 @@ GDKqsort_rev(void *h, void *t, void *bas
 
        assert(hs > 0);
        assert(ts >= 0);
+       assert(tpe != TYPE_void);
+
        buf.hs = (unsigned int) hs;
        buf.ts = (unsigned int) ts;
        buf.cmp = BATatoms[tpe].atomCmp;
        buf.base = base;
 
+       if (ATOMvarsized(tpe)) {
+               assert(base != NULL);
+               GDKqsort_impl_var_rev(&buf, h, t, n);
+               return;
+       }
        if (base)
                tpe = TYPE_str; /* we need the default case */
 
diff --git a/geom/ChangeLog.Jun2012 b/geom/ChangeLog.Jul2012
rename from geom/ChangeLog.Jun2012
rename to geom/ChangeLog.Jul2012
diff --git a/java/ChangeLog.Jun2012 b/java/ChangeLog.Jul2012
rename from java/ChangeLog.Jun2012
rename to java/ChangeLog.Jul2012
diff --git a/monetdb5/ChangeLog.Jun2012 b/monetdb5/ChangeLog.Jul2012
rename from monetdb5/ChangeLog.Jun2012
rename to monetdb5/ChangeLog.Jul2012
diff --git a/monetdb5/mal/mal_parser.c b/monetdb5/mal/mal_parser.c
--- a/monetdb5/mal/mal_parser.c
+++ b/monetdb5/mal/mal_parser.c
@@ -1693,8 +1693,6 @@ parseAssign(Client cntxt, int cntrl)
                        }
                }
 
-               if (currChar(cntxt) != ';')
-                       parseError(cntxt, "';' expected\n");
                goto part3;
        }
        if (currChar(cntxt) == '(') {
diff --git a/monetdb5/modules/kernel/calc.mal b/monetdb5/modules/kernel/calc.mal
--- a/monetdb5/modules/kernel/calc.mal
+++ b/monetdb5/modules/kernel/calc.mal
@@ -4183,6 +4183,51 @@ address CMDvarCMP
 comment "Return -1/0/1 if V1 </==/> V2";
 
 
+pattern void(v:void) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:bit) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:bte) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:sht) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:int) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:wrd) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:lng) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:flt) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:dbl) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:oid) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+pattern void(v:str) :void
+address CMDvarCONVERT
+comment "Cast VALUE to void";
+
+
 pattern bit(v:void) :bit
 address CMDvarCONVERT
 comment "Cast VALUE to bit";
diff --git a/monetdb5/modules/kernel/calc.mal.sh 
b/monetdb5/modules/kernel/calc.mal.sh
--- a/monetdb5/modules/kernel/calc.mal.sh
+++ b/monetdb5/modules/kernel/calc.mal.sh
@@ -314,7 +314,7 @@ echo
 # EOF
 # done
 
-for tp1 in $alltypes; do
+for tp1 in void $alltypes; do
     for tp2 in void $alltypes; do
        cat <<EOF
 pattern $tp1(v:$tp2) :$tp1
@@ -327,7 +327,7 @@ EOF
 done
 
 for func in min min_no_nil max max_no_nil; do
-    if [[ $func = *_no_nil ]]; then
+    if [[ $func == *_no_nil ]]; then
        com=", ignoring nil values"
     else
        com=
diff --git a/monetdb5/modules/kernel/group.mx b/monetdb5/modules/kernel/group.mx
--- a/monetdb5/modules/kernel/group.mx
+++ b/monetdb5/modules/kernel/group.mx
@@ -1511,7 +1511,7 @@ sort_flush(var_t *off, oid *o, BUN size,
                if (ATOMvarsized(tpe)) shift = GDK_VARSHIFT;
        }
 
-       cur = base + off[0];
+       cur = base + (off[0] << shift);
        for (i=0; i < size; i++) {
                val = base + (off[i] << shift);
                if ((*cmp) (cur, val)) {
diff --git a/sql/ChangeLog.Jun2012 b/sql/ChangeLog.Jul2012
rename from sql/ChangeLog.Jun2012
rename to sql/ChangeLog.Jul2012
diff --git a/sql/test/BugTracker-2012/Tests/bart-crash.Bug-3057.sql 
b/sql/test/BugTracker-2012/Tests/bart-crash.Bug-3057.sql
--- a/sql/test/BugTracker-2012/Tests/bart-crash.Bug-3057.sql
+++ b/sql/test/BugTracker-2012/Tests/bart-crash.Bug-3057.sql
@@ -24,17 +24,6 @@ create table xtr
   )
 ;
 
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to