Changeset: 7e8b14ac9c2c for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/7e8b14ac9c2c
Modified Files:
        clients/Tests/exports.stable.out
        gdk/gdk_aggr.c
        gdk/gdk_group.c
        monetdb5/modules/mal/pcre.c
Branch: pushcands
Log Message:

Merged with default


diffs (truncated from 1189 to 300 lines):

diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,6 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Thu Apr 15 2021 svetlin <[email protected]>
+- preserve in query comments
+
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
@@ -122,6 +122,7 @@ gdk_return BATextend(BAT *b, BUN newcap)
 void BATfakeCommit(BAT *b);
 gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, bool asc, bool nilslast, bool distinct) 
__attribute__((__warn_unused_result__));
 restrict_t BATgetaccess(BAT *b);
+ValPtr BATgetprop(BAT *b, enum prop_t idx);
 gdk_return BATgroup(BAT **groups, BAT **extents, BAT **histo, BAT *b, BAT *s, 
BAT *g, BAT *e, BAT *h) __attribute__((__warn_unused_result__));
 const char *BATgroupaggrinit(BAT *b, BAT *g, BAT *e, BAT *s, oid *minp, oid 
*maxp, BUN *ngrpp, struct canditer *ci, BUN *ncand);
 gdk_return BATgroupavg(BAT **bnp, BAT **cntsp, BAT *b, BAT *g, BAT *e, BAT *s, 
int tp, bool skip_nils, bool abort_on_error, int scale);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2124,6 +2124,7 @@ enum prop_t {
        GDK_NUNIQUE,            /* number of unique values */
        GDK_UNIQUE_ESTIMATE,    /* estimate of number of distinct values */
 };
+gdk_export ValPtr BATgetprop(BAT *b, enum prop_t idx);
 
 /*
  * @- BAT relational operators
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -82,13 +82,13 @@ BATgroupaggrinit(BAT *b, BAT *g, BAT *e,
                ngrp = 1;
        } else if (e == NULL) {
                /* we need to find out the min and max of g */
-               PROPrec *prop;
+               const ValRecord *prop;
 
                prop = BATgetprop(g, GDK_MAX_VALUE);
                if (prop) {
-                       assert(prop->v.vtype == TYPE_oid);
+                       assert(prop->vtype == TYPE_oid);
                        min = 0; /* just assume it starts at 0 */
-                       max = prop->v.val.oval;
+                       max = prop->val.oval;
                } else {
                        min = oid_nil;  /* note that oid_nil > 0! (unsigned) */
                        max = 0;
@@ -3517,7 +3517,7 @@ BATgroupmin(BAT *b, BAT *g, BAT *e, BAT 
 void *
 BATmin_skipnil(BAT *b, void *aggr, bit skipnil)
 {
-       PROPrec *prop;
+       const ValRecord *prop;
        const void *res;
        size_t s;
        BATiter bi;
@@ -3534,7 +3534,7 @@ BATmin_skipnil(BAT *b, void *aggr, bit s
        if (BATcount(b) == 0) {
                res = ATOMnilptr(b->ttype);
        } else if ((prop = BATgetprop(b, GDK_MIN_VALUE)) != NULL) {
-               res = VALptr(&prop->v);
+               res = VALptr(prop);
        } else {
                oid pos;
                BAT *pb = NULL;
@@ -3631,7 +3631,7 @@ BATgroupmax(BAT *b, BAT *g, BAT *e, BAT 
 void *
 BATmax_skipnil(BAT *b, void *aggr, bit skipnil)
 {
-       PROPrec *prop;
+       const ValRecord *prop;
        const void *res;
        size_t s;
        BATiter bi;
@@ -3646,7 +3646,7 @@ BATmax_skipnil(BAT *b, void *aggr, bit s
        if (BATcount(b) == 0) {
                res = ATOMnilptr(b->ttype);
        } else if ((prop = BATgetprop(b, GDK_MAX_VALUE)) != NULL) {
-               res = VALptr(&prop->v);
+               res = VALptr(prop);
        } else {
                oid pos;
                BAT *pb = NULL;
diff --git a/gdk/gdk_analytic_func.c b/gdk/gdk_analytic_func.c
--- a/gdk/gdk_analytic_func.c
+++ b/gdk/gdk_analytic_func.c
@@ -44,8 +44,7 @@ GDKrebuild_segment_tree(oid ncount, oid 
 
 #define NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION)       \
        do {                                    \
-               TPE j = 0; \
-               UPCAST ncnt = (UPCAST) (i - k); \
+               UPCAST j = 0, ncnt = (UPCAST) (i - k); \
                for (; k < i; k++, j++) {       \
                        TPE val = NEXT_VALUE; \
                        if (is_##TPE##_nil(val)) {      \
@@ -55,7 +54,7 @@ GDKrebuild_segment_tree(oid ncount, oid 
                                UPCAST nval = (UPCAST) LNG_HGE; \
                                VALIDATION /* validation must come after null 
check */  \
                                if (nval >= ncnt) { \
-                                       rb[k] = j + 1;  \
+                                       rb[k] = (TPE)(j + 1);  \
                                } else { \
                                        UPCAST bsize = ncnt / nval; \
                                        UPCAST top = ncnt - nval * bsize; \
@@ -69,30 +68,35 @@ GDKrebuild_segment_tree(oid ncount, oid 
                } \
        } while (0)
 
-#define ANALYTICAL_NTILE_IMP(TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION)     
\
+#define ANALYTICAL_NTILE(IMP, TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION)    
\
        do {                                                    \
                TPE *restrict rb = (TPE*)Tloc(r, 0);            \
                if (p) {                                                \
                        for (; i < cnt; i++) {                  \
-                               if (np[i])                      \
-                                       NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, 
UPCAST, VALIDATION);\
-                       }                                               \
-               }                                       \
-               i = cnt;                                        \
-               NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, UPCAST, VALIDATION);       
\
+                               if (np[i])      {               \
+ntile##IMP##TPE: \
+                                       NTILE_CALC(TPE, NEXT_VALUE, LNG_HGE, 
UPCAST, VALIDATION); \
+                               } \
+                       }                               \
+               }                               \
+               if (!last) { \
+                       last = true; \
+                       i = cnt; \
+                       goto ntile##IMP##TPE; \
+               } \
        } while (0)
 
 #define ANALYTICAL_NTILE_SINGLE_IMP(TPE, LNG_HGE, UPCAST) \
        do {    \
                TPE ntl = *(TPE*) ntile; \
                if (!is_##TPE##_nil(ntl) && ntl < 0) goto invalidntile; \
-               ANALYTICAL_NTILE_IMP(TPE, ntl, LNG_HGE, UPCAST, ;); \
+               ANALYTICAL_NTILE(SINGLE, TPE, ntl, LNG_HGE, UPCAST, ;); \
        } while (0)
 
 #define ANALYTICAL_NTILE_MULTI_IMP(TPE, LNG_HGE, UPCAST) \
        do {    \
                TPE *restrict nn = (TPE*)Tloc(n, 0);    \
-               ANALYTICAL_NTILE_IMP(TPE, nn[k], LNG_HGE, UPCAST, if (val < 0) 
goto invalidntile;); \
+               ANALYTICAL_NTILE(MULTI, TPE, nn[k], LNG_HGE, UPCAST, if (val < 
0) goto invalidntile;); \
        } while (0)
 
 gdk_return
@@ -100,7 +104,7 @@ GDKanalyticalntile(BAT *r, BAT *b, BAT *
 {
        lng i = 0, k = 0, cnt = (lng) BATcount(b);
        bit *restrict np = p ? Tloc(p, 0) : NULL;
-       bool has_nils = false;
+       bool has_nils = false, last = false;
 
        assert((n && !ntile) || (!n && ntile));
 
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1101,7 +1101,7 @@ setcolprops(BAT *b, const void *x)
                }
                return;
        } else if (ATOMlinear(b->ttype)) {
-               PROPrec *prop;
+               const ValRecord *prop;
 
                bi = bat_iterator(b);
                pos = BUNlast(b);
@@ -1132,7 +1132,7 @@ setcolprops(BAT *b, const void *x)
                        }
                } else if (!isnil &&
                           (prop = BATgetprop(b, GDK_MAX_VALUE)) != NULL &&
-                          ATOMcmp(b->ttype, VALptr(&prop->v), x) < 0) {
+                          ATOMcmp(b->ttype, VALptr(prop), x) < 0) {
                        BATsetprop(b, GDK_MAX_VALUE, b->ttype, x);
                        BATsetprop(b, GDK_MAX_POS, TYPE_oid, 
&(oid){BATcount(b)});
                }
@@ -1148,7 +1148,7 @@ setcolprops(BAT *b, const void *x)
                                 * smallest non-nil so far */
                                if (!b->tnonil && !isnil &&
                                    (prop = BATgetprop(b, GDK_MIN_VALUE)) != 
NULL &&
-                                   ATOMcmp(b->ttype, VALptr(&prop->v), x) > 0) 
{
+                                   ATOMcmp(b->ttype, VALptr(prop), x) > 0) {
                                        BATsetprop(b, GDK_MIN_VALUE, b->ttype, 
x);
                                        BATsetprop(b, GDK_MIN_POS, TYPE_oid, 
&(oid){BATcount(b)});
                                }
@@ -1159,7 +1159,7 @@ setcolprops(BAT *b, const void *x)
                        }
                } else if (!isnil &&
                           (prop = BATgetprop(b, GDK_MIN_VALUE)) != NULL &&
-                          ATOMcmp(b->ttype, VALptr(&prop->v), x) > 0) {
+                          ATOMcmp(b->ttype, VALptr(prop), x) > 0) {
                        BATsetprop(b, GDK_MIN_VALUE, b->ttype, x);
                        BATsetprop(b, GDK_MIN_POS, TYPE_oid, 
&(oid){BATcount(b)});
                }
@@ -1274,7 +1274,7 @@ BUNdelete(BAT *b, oid o)
        BUN p;
        BATiter bi = bat_iterator(b);
        const void *val;
-       PROPrec *prop;
+       const ValRecord *prop;
 
        assert(!is_oid_nil(b->hseqbase) || BATcount(b) == 0);
        if (o < b->hseqbase || o >= b->hseqbase + BATcount(b)) {
@@ -1292,12 +1292,12 @@ BUNdelete(BAT *b, oid o)
        if (ATOMlinear(b->ttype) &&
            ATOMcmp(b->ttype, ATOMnilptr(b->ttype), val) != 0) {
                if ((prop = BATgetprop(b, GDK_MAX_VALUE)) != NULL
-                   && ATOMcmp(b->ttype, VALptr(&prop->v), val) >= 0) {
+                   && ATOMcmp(b->ttype, VALptr(prop), val) >= 0) {
                        BATrmprop(b, GDK_MAX_VALUE);
                        BATrmprop(b, GDK_MAX_POS);
                }
                if ((prop = BATgetprop(b, GDK_MIN_VALUE)) != NULL
-                   && ATOMcmp(b->ttype, VALptr(&prop->v), val) <= 0) {
+                   && ATOMcmp(b->ttype, VALptr(prop), val) <= 0) {
                        BATrmprop(b, GDK_MIN_VALUE);
                        BATrmprop(b, GDK_MIN_POS);
                }
@@ -1397,17 +1397,17 @@ BUNinplacemulti(BAT *b, const oid *posit
                }
                HASHdelete(b, p, val);  /* first delete old value from hash */
                if (b->ttype != TYPE_void && ATOMlinear(b->ttype)) {
-                       PROPrec *prop;
+                       const ValRecord *prop;
 
                        if ((prop = BATgetprop(b, GDK_MAX_VALUE)) != NULL) {
                                if (ATOMcmp(b->ttype, t, ATOMnilptr(b->ttype)) 
!= 0 &&
-                                   ATOMcmp(b->ttype, VALptr(&prop->v), t) < 0) 
{
+                                   ATOMcmp(b->ttype, VALptr(prop), t) < 0) {
                                        /* new value is larger than previous
                                         * largest */
                                        BATsetprop(b, GDK_MAX_VALUE, b->ttype, 
t);
                                        BATsetprop(b, GDK_MAX_POS, TYPE_oid, 
&(oid){p});
                                } else if (ATOMcmp(b->ttype, t, val) != 0 &&
-                                          ATOMcmp(b->ttype, VALptr(&prop->v), 
val) == 0) {
+                                          ATOMcmp(b->ttype, VALptr(prop), val) 
== 0) {
                                        /* old value is equal to largest and
                                         * new value is smaller (see above),
                                         * so we don't know anymore which is
@@ -1418,13 +1418,13 @@ BUNinplacemulti(BAT *b, const oid *posit
                        }
                        if ((prop = BATgetprop(b, GDK_MIN_VALUE)) != NULL) {
                                if (ATOMcmp(b->ttype, t, ATOMnilptr(b->ttype)) 
!= 0 &&
-                                   ATOMcmp(b->ttype, VALptr(&prop->v), t) > 0) 
{
+                                   ATOMcmp(b->ttype, VALptr(prop), t) > 0) {
                                        /* new value is smaller than previous
                                         * smallest */
                                        BATsetprop(b, GDK_MIN_VALUE, b->ttype, 
t);
                                        BATsetprop(b, GDK_MIN_POS, TYPE_oid, 
&(oid){p});
                                } else if (ATOMcmp(b->ttype, t, val) != 0 &&
-                                          ATOMcmp(b->ttype, VALptr(&prop->v), 
val) <= 0) {
+                                          ATOMcmp(b->ttype, VALptr(prop), val) 
<= 0) {
                                        /* old value is equal to smallest and
                                         * new value is larger (see above), so
                                         * we don't know anymore which is the
@@ -2516,29 +2516,29 @@ BATassertProps(BAT *b)
        }
 
        PROPDEBUG { /* only do a scan if property checking is requested */
-               PROPrec *prop;
+               const ValRecord *prop;
                const void *maxval = NULL;
                const void *minval = NULL;
                bool seenmax = false, seenmin = false;
                bool seennil = false;
 
                if ((prop = BATgetprop(b, GDK_MAX_VALUE)) != NULL)
-                       maxval = VALptr(&prop->v);
+                       maxval = VALptr(prop);
                if ((prop = BATgetprop(b, GDK_MIN_VALUE)) != NULL)
-                       minval = VALptr(&prop->v);
+                       minval = VALptr(prop);
                if ((prop = BATgetprop(b, GDK_MAX_POS)) != NULL) {
                        if (maxval) {
-                               assert(prop->v.vtype == TYPE_oid);
-                               assert(prop->v.val.oval < b->batCount);
-                               valp = BUNtail(bi, prop->v.val.oval);
+                               assert(prop->vtype == TYPE_oid);
+                               assert(prop->val.oval < b->batCount);
+                               valp = BUNtail(bi, prop->val.oval);
                                assert(cmpf(maxval, valp) == 0);
                        }
                }
                if ((prop = BATgetprop(b, GDK_MIN_POS)) != NULL) {
                        if (minval) {
-                               assert(prop->v.vtype == TYPE_oid);
-                               assert(prop->v.val.oval < b->batCount);
-                               valp = BUNtail(bi, prop->v.val.oval);
+                               assert(prop->vtype == TYPE_oid);
+                               assert(prop->val.oval < b->batCount);
+                               valp = BUNtail(bi, prop->val.oval);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to