Changeset: 9cfe448baa07 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9cfe448baa07
Modified Files:
sql/server/rel_distribute.c
Branch: new_rmt_opt
Log Message:
Visitor state with REMOTE prop saves rel of origin in case of cleanup
diffs (51 lines):
diff --git a/sql/server/rel_distribute.c b/sql/server/rel_distribute.c
--- a/sql/server/rel_distribute.c
+++ b/sql/server/rel_distribute.c
@@ -18,6 +18,7 @@
typedef struct rmt_prop_state {
int depth;
prop* rmt;
+ sql_rel* orig;
} rps;
static int
@@ -118,9 +119,9 @@ static sql_rel *
replica_rewrite(visitor *v, sql_table *t, list *exps)
{
sql_rel *res = NULL;
- prop *p = ((rps*)v->data)->rmt;
- sqlid tid = p->id;
- list *uris = p->value.pval;
+ prop *rp = ((rps*)v->data)->rmt;
+ sqlid tid = rp->id;
+ list *uris = rp->value.pval;
if (mvc_highwater(v->sql))
return sql_error(v->sql, 10, SQLSTATE(42000) "Query too
complex: running out of stack space");
@@ -156,6 +157,10 @@ replica_rewrite(visitor *v, sql_table *t
if (!isRemote(next) && ((!isReplicaTable(next) &&
!isMergeTable(next)) || !list_empty(next->members))) {
pt = next;
remote = 0;
+ /* if we resolved the replica to a local table
we have to
+ * go and remove the remote property from the
subtree */
+ sql_rel *r = ((rps*)v->data)->orig;
+ r->p = prop_remove(r->p, rp);
break;
}
}
@@ -208,6 +213,7 @@ rel_rewrite_replica_(visitor *v, sql_rel
rps *rp = SA_NEW(v->sql->sa, rps);
rp->depth = v->depth;
rp->rmt = p;
+ rp->orig = rel;
v->data = rp;
}
} else {
@@ -220,6 +226,7 @@ rel_rewrite_replica_(visitor *v, sql_rel
rps *rp = SA_NEW(v->sql->sa, rps);
rp->depth = v->depth;
rp->rmt = p;
+ rp->orig = rel;
v->data = rp;
}
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]