Changeset: 71cfb9713288 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/71cfb9713288 Modified Files: sql/server/rel_dump.c Branch: properties Log Message:
Set count property if sent to the remote side. Cleanup diffs (65 lines): diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c --- a/sql/server/rel_dump.c +++ b/sql/server/rel_dump.c @@ -17,6 +17,7 @@ #include "rel_updates.h" #include "rel_select.h" #include "rel_remote.h" +#include "rel_rewriter.h" #include "rel_optimizer.h" #include "sql_privileges.h" @@ -323,7 +324,7 @@ exp_print(mvc *sql, stream *fout, sql_ex mnstr_printf(fout, " NOT NULL"); if (e->type != e_atom && e->type != e_cmp && is_unique(e)) mnstr_printf(fout, " UNIQUE"); - if (e->p && !exp_is_atom(e)) { + if (e->p && e->type != e_atom && !exp_is_atom(e)) { /* don't show properties on value lists */ for (prop *p = e->p; p; p = p->p) { /* Don't show min/max/unique est on atoms, or when running tests with forcemito */ if ((GDKdebug & FORCEMITOMASK) == 0 || (p->kind != PROP_MIN && p->kind != PROP_MAX && p->kind != PROP_NUNIQUES)) { @@ -954,6 +955,8 @@ read_exp_properties(mvc *sql, sql_exp *e if (strncmp(r+*pos, "COUNT", strlen("COUNT")) == 0) { (*pos)+= (int) strlen("COUNT"); + if (!find_prop(exp->p, PROP_COUNT)) + exp->p = prop_create(sql->sa, PROP_COUNT, exp->p); skipWS(r,pos); found = true; } else if (strncmp(r+*pos, "HASHIDX", strlen("HASHIDX")) == 0) { @@ -1634,6 +1637,25 @@ rel_set_types(mvc *sql, sql_rel *rel) return 0; } +static void +rel_read_count(mvc *sql, sql_rel *rel, char *r, int *pos) +{ + void *ptr = NULL; + size_t nbytes = 0; + sql_subtype *tpe = sql_bind_localtype("oid"); + + (*pos)+= (int) strlen("COUNT"); + skipWS(r, pos); + + if (ATOMfromstr(tpe->type->localtype, &ptr, &nbytes, r + *pos, true) < 0) + return; + + set_count_prop(sql->sa, rel, *(BUN*)ptr); + (*pos) += nbytes; + GDKfree(ptr); + skipWS(r, pos); +} + static sql_rel* read_rel_properties(mvc *sql, sql_rel *rel, char *r, int *pos) { @@ -1642,8 +1664,7 @@ read_rel_properties(mvc *sql, sql_rel *r found = false; if (strncmp(r+*pos, "COUNT", strlen("COUNT")) == 0) { - (*pos)+= (int) strlen("COUNT"); - skipWS(r,pos); + rel_read_count(sql, rel, r, pos); found = true; } else if (strncmp(r+*pos, "REMOTE", strlen("REMOTE")) == 0) { /* Remote tables under remote tables not supported, so remove REMOTE property */ (*pos)+= (int) strlen("REMOTE"); _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org