Changeset: 895831b42b98 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/895831b42b98
Modified Files:
        clients/Tests/exports.stable.out
        clients/mapiclient/dump.c
        gdk/gdk.h
        gdk/gdk_join.c
        monetdb5/modules/atoms/str.c
        sql/server/rel_schema.c
Branch: ustr
Log Message:

Merge with default branch.


diffs (truncated from 2528 to 300 lines):

diff --git a/clients/Tests/MAL-signatures-hge.test 
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -3464,6 +3464,16 @@ pattern algebra.firstn(X_0:bat[:any], X_
 ALGfirstn
 Calculate first N values of B with candidate list S
 algebra
+firstn
+pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, 
X_4:lng, X_5:bit, X_6:bit, X_7:bit, X_8:bit) (X_9:bat[:oid], X_10:bat[:oid])
+ALGfirstn
+Calculate first N values of B with candidate list S
+algebra
+firstn
+pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, 
X_4:lng, X_5:bit, X_6:bit, X_7:bit, X_8:bit):bat[:oid]
+ALGfirstn
+Calculate first N values of B with candidate list S
+algebra
 groupby
 command algebra.groupby(X_0:bat[:oid], X_1:bat[:lng]):bat[:oid]
 ALGgroupby
@@ -3474,6 +3484,11 @@ pattern algebra.groupedfirstn(X_0:lng, X
 ALGgroupedfirstn
 Grouped firstn
 algebra
+groupedfirstn
+pattern algebra.groupedfirstn(X_0:lng, X_1:lng, X_2:bit, X_3:bat[:oid], 
X_4:bat[:oid], X_5:any...):bat[:oid]
+ALGgroupedfirstn
+Grouped firstn
+algebra
 intersect
 command algebra.intersect(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid]
 ALGintersect
diff --git a/clients/Tests/MAL-signatures.test 
b/clients/Tests/MAL-signatures.test
--- a/clients/Tests/MAL-signatures.test
+++ b/clients/Tests/MAL-signatures.test
@@ -2899,6 +2899,16 @@ pattern algebra.firstn(X_0:bat[:any], X_
 ALGfirstn
 Calculate first N values of B with candidate list S
 algebra
+firstn
+pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, 
X_4:lng, X_5:bit, X_6:bit, X_7:bit, X_8:bit) (X_9:bat[:oid], X_10:bat[:oid])
+ALGfirstn
+Calculate first N values of B with candidate list S
+algebra
+firstn
+pattern algebra.firstn(X_0:bat[:any], X_1:bat[:oid], X_2:bat[:oid], X_3:lng, 
X_4:lng, X_5:bit, X_6:bit, X_7:bit, X_8:bit):bat[:oid]
+ALGfirstn
+Calculate first N values of B with candidate list S
+algebra
 groupby
 command algebra.groupby(X_0:bat[:oid], X_1:bat[:lng]):bat[:oid]
 ALGgroupby
@@ -2909,6 +2919,11 @@ pattern algebra.groupedfirstn(X_0:lng, X
 ALGgroupedfirstn
 Grouped firstn
 algebra
+groupedfirstn
+pattern algebra.groupedfirstn(X_0:lng, X_1:lng, X_2:bit, X_3:bat[:oid], 
X_4:bat[:oid], X_5:any...):bat[:oid]
+ALGgroupedfirstn
+Grouped firstn
+algebra
 intersect
 command algebra.intersect(X_0:bat[:any_1], X_1:bat[:any_1], X_2:bat[:oid], 
X_3:bat[:oid], X_4:bit, X_5:bit, X_6:lng):bat[:oid]
 ALGintersect
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 @@ BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BA
 BAT *BATdiffcand(BAT *a, BAT *b);
 gdk_return BATextend(BAT *b, BUN newcap) 
__attribute__((__warn_unused_result__));
 gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, bool asc, bool nilslast, bool distinct) 
__attribute__((__access__(write_only, 1))) 
__attribute__((__access__(write_only, 2))) 
__attribute__((__warn_unused_result__));
+BAT *BATfirstn_offset(BAT *b, BAT *s, BAT *g, BUN n, BUN o, bool asc, bool 
nilslast, bool distinct) __attribute__((__warn_unused_result__));
 restrict_t BATgetaccess(BAT *b);
 ValPtr BATgetprop(BAT *b, enum prop_t idx);
 ValPtr BATgetprop_nolock(BAT *b, enum prop_t idx);
@@ -135,6 +136,7 @@ BAT *BATgroupcount(BAT *b, BAT *g, BAT *
 BAT *BATgroupcovariance_population(BAT *b1, BAT *b2, BAT *g, BAT *e, BAT *s, 
int tp, bool skip_nils);
 BAT *BATgroupcovariance_sample(BAT *b1, BAT *b2, BAT *g, BAT *e, BAT *s, int 
tp, bool skip_nils);
 BAT *BATgroupedfirstn(BUN n, BAT *s, BAT *g, int nbats, BAT **bats, bool *asc, 
bool *nilslast) __attribute__((__warn_unused_result__));
+BAT *BATgroupedfirstn_offset(BUN n, BUN o, BAT *s, BAT *g, int nbats, BAT 
**bats, bool *asc, bool *nilslast) __attribute__((__warn_unused_result__));
 BAT *BATgroupmax(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils);
 BAT *BATgroupmedian(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool skip_nils);
 BAT *BATgroupmedian_avg(BAT *b, BAT *g, BAT *e, BAT *s, int tp, bool 
skip_nils);
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -2845,12 +2845,13 @@ dump_database(Mapi mid, stream *sqlf, co
                        "AND d.id = t2.id "
                        "AND t2.schema_id = s2.id "
                      "ORDER BY t1.id, t2.id) subq "
-                       "LEFT OUTER JOIN sys.table_partitions "
-                               "ON subq.id = table_partitions.table_id";
+               "LEFT OUTER JOIN sys.table_partitions "
+                       "ON subq.id = table_partitions.table_id "
+               "ORDER BY subq.s1name, subq.t1name, subq.s2name, subq.t2name";
        /* we must dump views, functions/procedures and triggers in order
         * of creation since they can refer to each other */
        static const char views_functions_triggers[] =
-               "with vft (sname, name, id, query, remark) AS ("
+               "WITH vft (sname, name, id, query, remark) AS ("
                        "SELECT s.name AS sname, " /* views */
                               "t.name AS name, "
                               "t.id AS id, "
@@ -2885,7 +2886,8 @@ dump_database(Mapi mid, stream *sqlf, co
                          "AND t.id = tr.table_id "
                          "AND t.system = FALSE"
                ") "
-               "SELECT id, sname, name, query, remark FROM vft ORDER BY id";
+               "SELECT id, sname, name, query, remark FROM vft "
+               "ORDER BY id";
        char *sname = NULL;
        char *curschema = NULL;
        MapiHdl hdl = NULL;
@@ -3318,7 +3320,8 @@ dump_database(Mapi mid, stream *sqlf, co
                                         "WHERE s.name = '%s' "
                                           "AND t.name = '%s' "
                                           "AND s.id = t.schema_id "
-                                          "AND t.id = vp.table_id",
+                                          "AND t.id = vp.table_id "
+                                        "ORDER BY vp.value",
                                         s2, t2);
                                shdl = mapi_query(mid, query);
                                free(query);
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1627,9 +1627,12 @@ gdk_export gdk_return BATfirstn(BAT **to
        __attribute__((__access__(write_only, 1)))
        __attribute__((__access__(write_only, 2)))
        __attribute__((__warn_unused_result__));
+gdk_export BAT *BATfirstn_offset(BAT *b, BAT *s, BAT *g, BUN n, BUN o, bool 
asc, bool nilslast, bool distinct)
+       __attribute__((__warn_unused_result__));
 gdk_export BAT *BATgroupedfirstn(BUN n, BAT *s, BAT *g, int nbats, BAT **bats, 
bool *asc, bool *nilslast)
        __attribute__((__warn_unused_result__));
-
+gdk_export BAT *BATgroupedfirstn_offset(BUN n, BUN o, BAT *s, BAT *g, int 
nbats, BAT **bats, bool *asc, bool *nilslast)
+       __attribute__((__warn_unused_result__));
 
 gdk_export gdk_return GDKtoupper(allocator *ma, char **restrict buf, size_t 
*restrict buflen, const char *restrict s)
        __attribute__((__access__(read_write, 2)))
diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c
--- a/gdk/gdk_aggr.c
+++ b/gdk/gdk_aggr.c
@@ -2006,9 +2006,12 @@ BATgroupavg3(BAT **avgp, BAT **remp, BAT
        BAT *bn, *rn, *cn;
        BUN i;
        oid o;
+       lng t0 = 0;
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
 
+       TRC_DEBUG_IF(ALGO) t0 = GDKusec();
+
        if ((err = BATgroupaggrinit(b, g, e, s, &min, &max, &ngrp, &ci)) != 
NULL) {
                GDKerror("%s\n", err);
                return GDK_FAIL;
@@ -2311,6 +2314,12 @@ BATgroupavg3(BAT **avgp, BAT **remp, BAT
        *avgp = bn;
        *remp = rn;
        *cntp = cn;
+       TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",g=" ALGOOPTBATFMT ",e=" ALGOOPTBATFMT
+                 ",s=" ALGOOPTBATFMT " -> avgs=" ALGOBATFMT
+                 ",rems=" ALGOBATFMT ",cnts=" ALGOBATFMT " (" LLFMT " usec)\n",
+                 ALGOBATPAR(b), ALGOOPTBATPAR(g), ALGOOPTBATPAR(e),
+                 ALGOOPTBATPAR(s), ALGOBATPAR(bn), ALGOBATPAR(rn),
+                 ALGOBATPAR(cn), GDKusec() - t0);
        return GDK_SUCCEED;
 
   bailout:
@@ -2646,9 +2655,12 @@ BATgroupavg3combine(BAT *avg, BAT *rem, 
        struct canditer ci;
        BUN i;
        BAT *bn, *rn, *cn;
+       lng t0 = 0;
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
 
+       TRC_DEBUG_IF(ALGO) t0 = GDKusec();
+
        if ((err = BATgroupaggrinit(avg, g, e, NULL, &min, &max, &ngrp, &ci)) 
!= NULL) {
                GDKerror("%s\n", err);
                return NULL;
@@ -2906,6 +2918,10 @@ BATgroupavg3combine(BAT *avg, BAT *rem, 
        bn->tkey = ngrp == 1;
        bn->tsorted = ngrp == 1;
        bn->trevsorted = ngrp == 1;
+       TRC_DEBUG(ALGO, "avgs=" ALGOBATFMT ",rems=" ALGOBATFMT ",cnts=" 
ALGOBATFMT ",g=" ALGOOPTBATFMT ",e=" ALGOOPTBATFMT " -> " ALGOBATFMT " (" LLFMT 
" usec)\n",
+                 ALGOBATPAR(avg), ALGOBATPAR(rem), ALGOBATPAR(cnt),
+                 ALGOOPTBATPAR(g), ALGOOPTBATPAR(e), ALGOBATPAR(bn),
+                 GDKusec() - t0);
        return bn;
 
   bailout:
@@ -3006,9 +3022,12 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN
 #endif
        struct canditer ci;
        const void *restrict src;
+       lng t0 = 0;
 
        QryCtx *qry_ctx = MT_thread_get_qry_ctx();
 
+       TRC_DEBUG_IF(ALGO) t0 = GDKusec();
+
        canditer_init(&ci, b, s);
 
        BATiter bi = bat_iterator(b);
@@ -3048,6 +3067,10 @@ BATcalcavg(BAT *b, BAT *s, dbl *avg, BUN
                *avg /= pow(10.0, (double) scale);
        if (vals)
                *vals = (BUN) n;
+       TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",s=" ALGOOPTBATFMT
+                 ",scale=%d -> avg=%g,#=" LLFMT " (" LLFMT " usec)\n",
+                 ALGOBATPAR(b), ALGOOPTBATPAR(s),
+                 scale, *avg, n, GDKusec() - t0);
        return GDK_SUCCEED;
 bailout:
        bat_iterator_end(&bi);
diff --git a/gdk/gdk_analytic_bounds.c b/gdk/gdk_analytic_bounds.c
--- a/gdk/gdk_analytic_bounds.c
+++ b/gdk/gdk_analytic_bounds.c
@@ -13,6 +13,7 @@
 #include "gdk_analytic.h"
 #include "gdk_time.h"
 #include "gdk_calc_private.h"
+#include "gdk_private.h"
 
 #define ANALYTICAL_DIFF_IMP(TPE)                       \
        do {                                            \
@@ -92,6 +93,8 @@
 BAT *
 GDKanalyticaldiff(BAT *b, BAT *p, const bit *restrict npbit, int tpe)
 {
+       lng t0 = 0;
+       TRC_DEBUG_IF(ALGO) t0 = GDKusec();
        BUN i = 0, cnt = BATcount(b);
        BATiter pi = bat_iterator(p);
        BATiter bi = bat_iterator(b);
@@ -100,7 +103,6 @@ GDKanalyticaldiff(BAT *b, BAT *p, const 
                return NULL;
        bit *restrict rb = (bit *) Tloc(r, 0), npb = npbit ? *npbit : 0;
        const bit *restrict np = (bit *) pi.base;
-
        switch (ATOMbasetype(tpe)) {
        case TYPE_bte:
                ANALYTICAL_DIFF_IMP(bte);
@@ -172,6 +174,10 @@ GDKanalyticaldiff(BAT *b, BAT *p, const 
        BATsetcount(r, cnt);
        r->tnonil = true;
        r->tnil = false;
+       TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",p=" ALGOOPTBATFMT
+                 " -> " ALGOBATFMT "(" LLFMT " usec)\n",
+                 ALGOBATPAR(b), ALGOOPTBATPAR(p),
+                 ALGOBATPAR(r), GDKusec() - t0);
        return r;
 }
 
@@ -612,7 +618,7 @@ GDKanalyticaldiff(BAT *b, BAT *p, const 
        } while(0)
 
 static BAT *
-GDKanalyticalallbounds(BAT *b, BAT *p, bool preceding)
+GDKanalyticalallbounds(BAT *b, BAT *p, bool preceding, lng t0)
 {
        BAT *r = COLnew(b->hseqbase, TYPE_oid, BATcount(b), TRANSIENT);
        if (r == NULL)
@@ -653,6 +659,10 @@ GDKanalyticalallbounds(BAT *b, BAT *p, b
        BATsetcount(r, cnt);
        r->tnonil = false;
        r->tnil = false;
+       TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",p=" ALGOOPTBATFMT
+                 " -> " ALGOBATFMT "(" LLFMT " usec)\n",
+                 ALGOBATPAR(b), ALGOOPTBATPAR(p),
+                 ALGOBATPAR(r), GDKusec() - t0);
        return r;
 }
 
@@ -711,7 +721,7 @@ GDKanalyticalallbounds(BAT *b, BAT *p, b
 #define NO_NAN_CHECK /* nulls match on this operator */
 
 static BAT *
-GDKanalyticalpeers(BAT *b, BAT *p, bool preceding) /* used in range when the 
limit is 0, ie match peer rows */
+GDKanalyticalpeers(BAT *b, BAT *p, bool preceding, lng t0) /* used in range 
when the limit is 0, ie match peer rows */
 {
        BAT *r = COLnew(b->hseqbase, TYPE_oid, BATcount(b), TRANSIENT);
        if (r == NULL)
@@ -855,6 +865,10 @@ GDKanalyticalpeers(BAT *b, BAT *p, bool 
        BATsetcount(r, cnt);
        r->tnonil = false;
        r->tnil = false;
+       TRC_DEBUG(ALGO, "b=" ALGOBATFMT ",p=" ALGOOPTBATFMT
+                 " -> " ALGOBATFMT "(" LLFMT " usec)\n",
+                 ALGOBATPAR(b), ALGOOPTBATPAR(p),
+                 ALGOBATPAR(r), GDKusec() - t0);
        return r;
 }
 
@@ -868,7 +882,9 @@ GDKanalyticalrowbounds(BAT *b, BAT *p, B
        const bit *restrict np = pi.base;
        bool last = false;
        BAT *r = NULL;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to