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

Reply via email to