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