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

Reply via email to