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]