Changeset: 55010c43ca2b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=55010c43ca2b
Modified Files:
bootstrap
gdk/gdk_group.c
sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128
sql/test/emptydb-upgrade-chain/Tests/check.stable.out
sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128
sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128
sql/test/emptydb-upgrade/Tests/check.stable.out
sql/test/emptydb-upgrade/Tests/check.stable.out.32bit
sql/test/emptydb-upgrade/Tests/check.stable.out.int128
sql/test/emptydb/Tests/check.stable.out
sql/test/emptydb/Tests/check.stable.out.32bit
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/leaks/Tests/check1.stable.out
sql/test/leaks/Tests/check1.stable.out.int128
sql/test/leaks/Tests/check2.stable.out
sql/test/leaks/Tests/check2.stable.out.int128
sql/test/leaks/Tests/check3.stable.out
sql/test/leaks/Tests/check3.stable.out.int128
sql/test/leaks/Tests/check4.stable.out
sql/test/leaks/Tests/check4.stable.out.int128
sql/test/leaks/Tests/check5.stable.out
sql/test/leaks/Tests/check5.stable.out.int128
tools/merovingian/daemon/forkmserver.c
tools/merovingian/utils/properties.c
tools/merovingian/utils/utils.c
tools/merovingian/utils/utils.h
Branch: default
Log Message:
Merge with Jul2017 branch.
diffs (truncated from 2296 to 300 lines):
diff --git a/bootstrap b/bootstrap
--- a/bootstrap
+++ b/bootstrap
@@ -14,9 +14,11 @@ PYTHONPATH=${PWD:-$(pwd)}/buildtools/aut
export PYTHONPATH
# cope with systems where libtool is not GNU libtool, e.g. Darwin
-type -P glibtoolize > /dev/null \
- && libtoolize=glibtoolize \
- || libtoolize=libtoolize
+if type -P glibtoolize > /dev/null; then
+ libtoolize=glibtoolize
+else
+ libtoolize=libtoolize
+fi
# cope with systems where aclocal is known as aclocal-1.10 (and
# automake as automake-1.10), e.g. OpenIndiana
@@ -40,22 +42,26 @@ if [[ -n ${M4DIRS} ]] ; then
done
fi
-python buildtools/autogen/autogen.py &&
+python buildtools/autogen/autogen.py || exit $?
(
# replace the line starting with AC_CONFIG_FILES in configure.ag with
# the command to substitute the configure results into the .in files,
# making sure executable files remain executable.
-sed -n '/^AC_CONFIG_FILES/s/.*/AC_CONFIG_FILES([/;1,/^AC_CONFIG_FILES/p'
configure.ag
-while read f; do [ -x $f.in ] || echo $f; done < acout.in
+sed -n '/^AC_CONFIG_FILES/s/.*/AC_CONFIG_FILES([/;1,/^AC_CONFIG_FILES/p'
configure.ag || exit $?
+while read f; do
+ [ -x $f.in ] || echo $f
+done < acout.in
echo '])'
-while read f; do [ -x $f.in ] && echo "AC_CONFIG_FILES([$f], [chmod +x $f])";
done < acout.in
+while read f; do
+ [ -x $f.in ] && echo "AC_CONFIG_FILES([$f], [chmod +x $f])"
+done < acout.in
sed '1,/^AC_CONFIG_FILES/d' configure.ag
-) > configure.ac &&
-$libtoolize -c -f &&
-aclocal$amv ${_m4_extra_dirs} &&
-autoheader &&
-automake$amv --add-missing --copy --foreign &&
-autoconf
+) > configure.ac || exit $?
+$libtoolize -c -f || exit $?
+aclocal$amv ${_m4_extra_dirs} || exit $?
+autoheader || exit $?
+automake$amv --add-missing --copy --foreign || exit $?
+autoconf || exit $?
if [ -f buildtools/conf/install-sh -a ! -x buildtools/conf/install-sh ]; then
chmod +x buildtools/conf/install-sh
fi
diff --git a/gdk/gdk_group.c b/gdk/gdk_group.c
--- a/gdk/gdk_group.c
+++ b/gdk/gdk_group.c
@@ -223,20 +223,21 @@
#define GRP_use_existing_hash_table(INIT_0,INIT_1,COMP)
\
do { \
INIT_0; \
- for (r = 0; r < cnt; r++) { \
- if (cand) { \
- p = cand[r] - hseqb + lo; \
- } else { \
- p = start + r; \
- } \
- assert(p < end); \
- INIT_1; \
- /* this loop is similar, but not equal, to */ \
- /* HASHloop: the difference is that we only */ \
- /* consider BUNs smaller than the one we're */ \
- /* looking up (p), and that we also consider */ \
- /* the input groups */ \
- if (grps) { \
+ if (grps) { \
+ for (r = 0; r < cnt; r++) { \
+ if (cand) { \
+ p = cand[r] - hseqb + lo; \
+ } else { \
+ p = start + r; \
+ } \
+ assert(p < end); \
+ INIT_1; \
+ /* this loop is similar, but not */ \
+ /* equal, to HASHloop: the difference */ \
+ /* is that we only consider BUNs */ \
+ /* smaller than the one we're looking */ \
+ /* up (p), and that we also consider */ \
+ /* the input groups */ \
for (hb = HASHgetlink(hs, p); \
hb != HASHnil(hs) && hb >= start; \
hb = HASHgetlink(hs, hb)) { \
@@ -266,7 +267,24 @@
break; \
} \
} \
- } else { \
+ if (hb == HASHnil(hs) || hb < lo) { \
+ GRPnotfound(); \
+ } \
+ } \
+ } else { \
+ for (r = 0; r < cnt; r++) { \
+ if (cand) { \
+ p = cand[r] - hseqb + lo; \
+ } else { \
+ p = start + r; \
+ } \
+ assert(p < end); \
+ INIT_1; \
+ /* this loop is similar, but not */ \
+ /* equal, to HASHloop: the difference */ \
+ /* is that we only consider BUNs */ \
+ /* smaller than the one we're looking */ \
+ /* up (p) */ \
for (hb = HASHgetlink(hs, p); \
hb != HASHnil(hs) && hb >= start; \
hb = HASHgetlink(hs, hb)) { \
@@ -318,16 +336,16 @@
do { \
oid grp; \
INIT_0; \
- for (r = 0; r < cnt; r++) { \
- if (cand) { \
- p = cand[r] - b->hseqbase; \
- } else { \
- p = start + r; \
- } \
- assert(p < end); \
- INIT_1; \
- prb = HASH; \
- if (gc) { \
+ if (gc) { \
+ for (r = 0; r < cnt; r++) { \
+ if (cand) { \
+ p = cand[r] - b->hseqbase; \
+ } else { \
+ p = start + r; \
+ } \
+ assert(p < end); \
+ INIT_1; \
+ prb = HASH; \
for (hb = HASHget(hs, prb); \
hb != HASHnil(hs) && hb >= start; \
hb = HASHgetlink(hs, hb)) { \
@@ -352,7 +370,7 @@
grp = ngrps[hb]; \
} \
if (COMP) { \
- ngrps[r] = grp; \
+ ngrps[r] = grp; \
if (histo) \
cnts[grp]++; \
if (gn->tsorted && \
@@ -361,8 +379,24 @@
break; \
} \
} \
- } else if (grps) { \
- prb = (prb ^ (BUN) grps[r] << bits) & hs->mask;
\
+ if (hb == HASHnil(hs) || hb < start) { \
+ GRPnotfound(); \
+ /* enter new group into hash table */ \
+ HASHputlink(hs, p, HASHget(hs, prb)); \
+ HASHput(hs, prb, p); \
+ } \
+ } \
+ } else if (grps) { \
+ for (r = 0; r < cnt; r++) { \
+ if (cand) { \
+ p = cand[r] - b->hseqbase; \
+ } else { \
+ p = start + r; \
+ } \
+ assert(p < end); \
+ INIT_1; \
+ prb = HASH; \
+ prb = (prb ^ (BUN) grps[r] << bits) & hs->mask;
\
for (hb = HASHget(hs, prb); \
hb != HASHnil(hs) && hb >= start; \
hb = HASHgetlink(hs, hb)) { \
@@ -390,7 +424,23 @@
break; \
} \
} \
- } else { \
+ if (hb == HASHnil(hs) || hb < start) { \
+ GRPnotfound(); \
+ /* enter new group into hash table */ \
+ HASHputlink(hs, p, HASHget(hs, prb)); \
+ HASHput(hs, prb, p); \
+ } \
+ } \
+ } else { \
+ for (r = 0; r < cnt; r++) { \
+ if (cand) { \
+ p = cand[r] - b->hseqbase; \
+ } else { \
+ p = start + r; \
+ } \
+ assert(p < end); \
+ INIT_1; \
+ prb = HASH; \
for (hb = HASHget(hs, prb); \
hb != HASHnil(hs) && hb >= start; \
hb = HASHgetlink(hs, hb)) { \
@@ -405,7 +455,7 @@
grp = ngrps[hb]; \
} \
if (COMP) { \
- ngrps[r] = grp; \
+ ngrps[r] = grp; \
if (histo) \
cnts[grp]++; \
if (gn->tsorted && \
@@ -419,7 +469,7 @@
GRPnotfound(); \
/* enter new group into hash table */ \
HASHputlink(hs, p, HASHget(hs, prb)); \
- HASHput(hs, prb, p); \
+ HASHput(hs, prb, p); \
} \
} \
} while (0)
@@ -954,22 +1004,15 @@ BATgroup_internal(BAT **groups, BAT **ex
break;
}
} else {
- bit gc = g && (g->tsorted || g->trevsorted);
+ bit gc = g && (BATordered(g) || BATordered_rev(g));
const char *nme;
size_t nmelen;
Heap *hp = NULL;
BUN prb;
- BUN mask = HASHmask(cnt) >> 3;
- int bits = 3;
+ BUN mask;
+ int bits;
GDKclrerr(); /* not interested in BAThash errors */
- /* when combining value and group-id hashes,
- * we left-shift one of them by half the hash-mask width
- * to better spread bits and use the entire hash-mask,
- * and thus reduce collisions */
- while (mask >>= 1)
- bits++;
- bits /= 2;
/* not sorted, and no pre-existing hash table: we'll
* build an incomplete hash table on the fly--also see
@@ -996,8 +1039,17 @@ BATgroup_internal(BAT **groups, BAT **ex
mask = 1 << 16;
bits = 8;
} else {
+ /* when combining value and group-id hashes,
+ * we left-shift one of them by half the
+ * hash-mask width to better spread bits and
+ * use the entire hash-mask, and thus reduce
+ * collisions */
+ mask = HASHmask(cnt) >> 3;
+ bits = 3;
+ while (mask >>= 1)
+ bits++;
+ bits /= 2;
mask = HASHmask(cnt);
- bits = 0;
}
if ((hp = GDKzalloc(sizeof(Heap))) == NULL ||
(hp->farmid = BBPselectfarm(TRANSIENT, b->ttype, hashheap))
< 0 ||
diff --git a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
--- a/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
+++ b/sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit
@@ -345,7 +345,7 @@ Ready.
\dSf sys."var_samp"
SYSTEM SCHEMA bam
SYSTEM SCHEMA json
-SYSTEM SCHEMA profiler
+SYSTEM SCHEMA profiler
SYSTEM SCHEMA sys
SYSTEM SCHEMA tmp
SYSTEM TABLE sys._columns
@@ -373,7 +373,7 @@ SYSTEM TABLE sys.privilege_codes
SYSTEM TABLE sys.privileges
SYSTEM TABLE sys.schemas
SYSTEM TABLE sys.sequences
-SYSTEM TABLE sys.spatial_ref_sys
+SYSTEM TABLE sys.spatial_ref_sys
SYSTEM TABLE sys.statistics
SYSTEM TABLE sys.storagemodelinput
SYSTEM TABLE sys.systemfunctions
@@ -383,7 +383,7 @@ SYSTEM TABLE sys.types
SYSTEM TABLE sys.user_role
SYSTEM VIEW sys.columns
SYSTEM VIEW sys.environment
-SYSTEM VIEW sys.geometry_columns
+SYSTEM VIEW sys.geometry_columns
SYSTEM VIEW sys.optimizers
SYSTEM VIEW sys.querylog_calls
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list