Changeset: 01135c25d71f for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=01135c25d71f Added Files: sql/test/BugTracker-2015/Tests/NOT_x_LIKE-triggers-too_many_nested_operators-error.Bug-3871.sql sql/test/BugTracker-2015/Tests/NOT_x_LIKE-triggers-too_many_nested_operators-error.Bug-3871.stable.err sql/test/BugTracker-2015/Tests/NOT_x_LIKE-triggers-too_many_nested_operators-error.Bug-3871.stable.out sql/test/BugTracker-2015/Tests/foreignkey_over_schemas.Bug-3855.sql sql/test/BugTracker-2015/Tests/foreignkey_over_schemas.Bug-3855.stable.err sql/test/BugTracker-2015/Tests/foreignkey_over_schemas.Bug-3855.stable.out sql/test/BugTracker-2015/Tests/mserver-crashes-under-specific-combination-of-JOIN-and-WHERE-conditions.Bug-3872.sql sql/test/BugTracker-2015/Tests/mserver-crashes-under-specific-combination-of-JOIN-and-WHERE-conditions.Bug-3872.stable.err sql/test/BugTracker-2015/Tests/mserver-crashes-under-specific-combination-of-JOIN-and-WHERE-conditions.Bug-3872.stable.out sql/test/BugTracker-2015/Tests/mserver-creates-but-not-accept-column-types-decimal19-decimal39.Bug-3863.sql sql/test/BugTracker-2015/Tests/mserver-creates-but-not-accept-column-types-decimal19-decimal39.Bug-3863.stable.err sql/test/BugTracker-2015/Tests/mserver-creates-but-not-accept-column-types-decimal19-decimal39.Bug-3863.stable.out sql/test/BugTracker-2015/Tests/mserver-creates-but-not-accept-column-types-decimal19-decimal39.Bug-3863.stable.out.int128 Modified Files: clients/Tests/exports.stable.out configure.ag gdk/gdk_aggr.c gdk/gdk_calc.c gdk/gdk_calc_private.h gdk/gdk_join.c monetdb5/modules/kernel/logger.c sql/backends/monet5/sql.c sql/backends/monet5/sql_cast_impl_down_from_flt.h sql/backends/monet5/sql_cast_impl_down_from_int.h sql/backends/monet5/sql_cast_impl_up_to_flt.h sql/backends/monet5/sql_cast_impl_up_to_int.h sql/server/rel_schema.c sql/storage/store.c sql/test/BugTracker-2015/Tests/All sql/test/SQLite_regress/sqllogictest/Tests/select3.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select4.test.sql sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out sql/test/SQLite_regress/sqllogictest/Tests/select4.test.stable.out.int128 sql/test/SQLite_regress/sqllogictest/Tests/select4.test.timeout sql/test/SQLite_regress/sqllogictest/Tests/select5.test.timeout Branch: leftmart Log Message:
Merge with default branch.
diffs (truncated from 2934601 to 300 lines):
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
@@ -2258,23 +2258,8 @@ str listRef;
str loadLibrary(str modulename, int flag);
char *locate_file(const char *basename, const char *ext, bit recurse);
str lockRef;
-gdk_return log_abort_wrap(logger *L);
-gdk_return log_bat_clear_wrap(logger *L, str nme);
-gdk_return log_bat_persists_wrap(logger *L, BAT *b, str nme);
-gdk_return log_bat_transient_wrap(logger *L, str nme);
-gdk_return log_bat_wrap(logger *L, BAT *b, str nme);
-gdk_return log_delta_wrap(logger *L, BAT *uid, BAT *b, str nme);
-gdk_return log_tend_wrap(logger *L);
-gdk_return log_tstart_wrap(logger *L);
-gdk_return logger_add_bat_wrap(int *bid, logger *L, BAT *b, str nme);
-gdk_return logger_changes_wrap(int *r, logger *L);
-gdk_return logger_cleanup_wrap(logger *L);
str logger_create_wrap(logger *L, int *debug, str *fn, str *dirname, int
*version);
-gdk_return logger_del_bat_wrap(logger *L, int *bid);
str logger_destroy_wrap(void *ret, logger *L);
-gdk_return logger_exit_wrap(logger *L);
-gdk_return logger_find_bat_wrap(int *bid, logger *L, str nme);
-gdk_return logger_restart_wrap(logger *L);
str lookupRef;
str mal2str(MalBlkPtr mb, int first, int last);
malType malAnyBatType(malType t1, malType t2);
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -3351,6 +3351,14 @@ typedef lng ptrdiff_t;
# define __declspec(x)
#endif
+/* work around problem compiling batxml.c with clang
+ * clang 3.5.0 claims to be GnuC 4.3, but doesn't accept
+ * __attribute__((alloc_size(N))), as libml2 2.9.2 expects
+ */
+#if defined(__GNUC__) && defined(__clang__)
+#define LIBXML_ATTR_ALLOC_SIZE(x)
+#endif
+
#endif /* _SEEN_MONETDB_CONFIG_H */
])
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -162,6 +162,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
ADD_WITH_CHECK(TYPE1, x, \
TYPE2, sum, \
TYPE2, sum, \
+ GDK_##TYPE2##_max, \
goto overflow); \
} \
} else { \
@@ -177,6 +178,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
ADD_WITH_CHECK(TYPE1, x, \
TYPE2, sum, \
TYPE2, sum, \
+
GDK_##TYPE2##_max, \
goto overflow); \
seenval = 1; \
} \
@@ -209,6 +211,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
ADD_WITH_CHECK(TYPE1, x, \
TYPE2, sum, \
TYPE2, sum, \
+ GDK_##TYPE2##_max, \
goto overflow); \
seenval = 1; \
} \
@@ -246,6 +249,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
sums[gid], \
TYPE2, \
sums[gid], \
+
GDK_##TYPE2##_max, \
goto overflow);
\
} \
} \
@@ -285,6 +289,7 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
sums[gid], \
TYPE2, \
sums[gid], \
+
GDK_##TYPE2##_max, \
goto overflow);
\
} \
} \
@@ -710,6 +715,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
TYPE1, vals[i], \
TYPE2, prods[gid], \
TYPE2, prods[gid], \
+ GDK_##TYPE2##_max, \
TYPE3, \
goto overflow); \
} \
@@ -758,6 +764,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
HGEMUL_CHECK(TYPE, vals[i], \
hge, prods[gid], \
prods[gid], \
+ GDK_hge_max, \
goto overflow); \
} \
} \
@@ -805,6 +812,7 @@ BATsum(void *res, int tp, BAT *b, BAT *s
TYPE, vals[i], \
lng, prods[gid], \
prods[gid], \
+ GDK_lng_max, \
goto overflow); \
} \
} \
@@ -1618,6 +1626,7 @@ BATgroupavg(BAT **bnp, BAT **cntsp, BAT
ADD_WITH_CHECK(TYPE, x, \
lng_hge, sum, \
lng_hge, sum, \
+ GDK_hge_max, \
goto overflow##TYPE); \
/* don't count value until after overflow check */ \
n++; \
@@ -2598,7 +2607,7 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e,
BATseqbase(bn, min);
} else { /* quantiles for entire BAT b, EZ */
- BUN index, r = 0, p = BUNlast(b);
+ BUN index, r = 0, p = BATcount(b);
if (skip_nils) {
while (r < p && (*atomcmp)(BUNtail(bi, BUNfirst(b) +
r), nil) == 0)
diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c
--- a/gdk/gdk_calc.c
+++ b/gdk/gdk_calc.c
@@ -1312,7 +1312,8 @@ BATcalcmax_no_nil(BAT *b1, BAT *b2, BAT
static BUN \
add_##TYPE1##_##TYPE2##_##TYPE3(const TYPE1 *lft, int incr1, \
const TYPE2 *rgt, int incr2, \
- TYPE3 *restrict dst, BUN cnt, BUN start, \
+ TYPE3 *restrict dst, TYPE3 max, \
+ BUN cnt, BUN start, \
BUN end, const oid *restrict cand, \
const oid *candend, oid candoff, \
int abort_on_error) \
@@ -1331,6 +1332,7 @@ add_##TYPE1##_##TYPE2##_##TYPE3(const TY
ADD_WITH_CHECK(TYPE1, lft[i], \
TYPE2, rgt[j], \
TYPE3, dst[k], \
+ max, \
ON_OVERFLOW(TYPE1, TYPE2, "+")); \
} \
} \
@@ -1342,22 +1344,41 @@ add_##TYPE1##_##TYPE2##_##TYPE3(const TY
static BUN \
add_##TYPE1##_##TYPE2##_##TYPE3(const TYPE1 *lft, int incr1, \
const TYPE2 *rgt, int incr2, \
- TYPE3 *restrict dst, BUN cnt, BUN start, \
+ TYPE3 *restrict dst, TYPE3 max, \
+ BUN cnt, BUN start, \
BUN end, const oid *restrict cand, \
- const oid *candend, oid candoff) \
+ const oid *candend, oid candoff, \
+ int abort_on_error) \
{ \
BUN i, j, k; \
BUN nils = 0; \
\
CANDLOOP(dst, k, TYPE3##_nil, 0, start); \
- for (i = start * incr1, j = start * incr2, k = start; \
- k < end; i += incr1, j += incr2, k++) { \
- CHECKCAND(dst, k, candoff, TYPE3##_nil); \
- if (lft[i] == TYPE1##_nil || rgt[j] == TYPE2##_nil) { \
- dst[k] = TYPE3##_nil; \
- nils++; \
- } else { \
- dst[k] = (TYPE3) lft[i] + rgt[j]; \
+ if (max < (TYPE3) GDK_##TYPE1##_max + (TYPE3) GDK_##TYPE2##_max) { \
+ for (i = start * incr1, j = start * incr2, k = start; \
+ k < end; i += incr1, j += incr2, k++) { \
+ CHECKCAND(dst, k, candoff, TYPE3##_nil); \
+ if (lft[i] == TYPE1##_nil || rgt[j] == TYPE2##_nil) { \
+ dst[k] = TYPE3##_nil; \
+ nils++; \
+ } else { \
+ ADD_WITH_CHECK(TYPE1, lft[i], \
+ TYPE2, rgt[j], \
+ TYPE3, dst[k], \
+ max, \
+ ON_OVERFLOW(TYPE1, TYPE2, "+"));
\
+ } \
+ } \
+ } else { \
+ for (i = start * incr1, j = start * incr2, k = start; \
+ k < end; i += incr1, j += incr2, k++) { \
+ CHECKCAND(dst, k, candoff, TYPE3##_nil); \
+ if (lft[i] == TYPE1##_nil || rgt[j] == TYPE2##_nil) { \
+ dst[k] = TYPE3##_nil; \
+ nils++; \
+ } else { \
+ dst[k] = (TYPE3) lft[i] + rgt[j]; \
+ } \
} \
} \
CANDLOOP(dst, k, TYPE3##_nil, end, cnt); \
@@ -1621,42 +1642,55 @@ add_typeswitchloop(const void *lft, int
switch (tp) {
case TYPE_bte:
nils = add_bte_bte_bte(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
+ dst, GDK_bte_max, cnt,
+ start, end,
cand, candend, candoff,
abort_on_error);
break;
case TYPE_sht:
nils = add_bte_bte_sht(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_sht_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
#ifdef FULL_IMPLEMENTATION
case TYPE_int:
nils = add_bte_bte_int(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_int_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
case TYPE_lng:
nils = add_bte_bte_lng(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_lng_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
#ifdef HAVE_HGE
case TYPE_hge:
nils = add_bte_bte_hge(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_hge_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
#endif
case TYPE_flt:
nils = add_bte_bte_flt(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_flt_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
case TYPE_dbl:
nils = add_bte_bte_dbl(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_dbl_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
#endif
default:
@@ -1667,37 +1701,48 @@ add_typeswitchloop(const void *lft, int
switch (tp) {
case TYPE_sht:
nils = add_bte_sht_sht(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
+ dst, GDK_sht_max, cnt,
+ start, end,
cand, candend, candoff,
abort_on_error);
break;
case TYPE_int:
nils = add_bte_sht_int(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_int_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
#ifdef FULL_IMPLEMENTATION
case TYPE_lng:
nils = add_bte_sht_lng(lft, incr1, rgt, incr2,
- dst, cnt, start, end,
- cand, candend, candoff);
+ dst, GDK_lng_max, cnt,
+ start, end,
+ cand, candend, candoff,
+ abort_on_error);
break;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list
