Changeset: 385c734bf137 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=385c734bf137
Modified Files:
sql/include/sql_catalog.h
sql/server/rel_prop.h
sql/server/rel_select.c
Branch: DVframework
Log Message:
plan reordering: setting a new rel property for actual data tables.
diffs (58 lines):
diff --git a/sql/include/sql_catalog.h b/sql/include/sql_catalog.h
--- a/sql/include/sql_catalog.h
+++ b/sql/include/sql_catalog.h
@@ -434,7 +434,8 @@ typedef enum table_types {
tt_merge_table = 3, /* multiple tables form one table */
tt_stream = 4, /* stream */
tt_remote = 5, /* stored on a remote server */
- tt_replica_table = 6 /* multiple replica of the same table */
+ tt_replica_table = 6, /* multiple replica of the same table */
+ tt_actual_data_table = 7 /* dvf: a table that is never filled in
*/
} table_types;
#define isTable(x) (x->type==tt_table)
@@ -444,7 +445,8 @@ typedef enum table_types {
#define isStream(x) (x->type==tt_stream)
#define isRemote(x) (x->type==tt_remote)
#define isReplicaTable(x) (x->type==tt_replica_table)
-#define isKindOfTable(x) (isTable(x) || isMergeTable(x) || isRemote(x) ||
isReplicaTable(x))
+#define isActualDataTable(x) (x->type==tt_actual_data_table)
+#define isKindOfTable(x) (isTable(x) || isMergeTable(x) || isRemote(x) ||
isReplicaTable(x) || isActualDataTable(x))
typedef struct sql_table {
sql_base base;
diff --git a/sql/server/rel_prop.h b/sql/server/rel_prop.h
--- a/sql/server/rel_prop.h
+++ b/sql/server/rel_prop.h
@@ -34,6 +34,7 @@ typedef struct prop {
#define PROP_HASHCOL 4 /* could use hash idx */
#define PROP_FETCH 5 /* fetchjoin */
#define PROP_REMOTE 6 /* uri for remote execution */
+#define PROP_ACTUAL_DATA_NEEDED 7 /* should be joined last */
#define PROP_USED 10 /* number of times exp is used */
extern prop * prop_create( sql_allocator *sa, int kind, prop *pre );
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -443,6 +443,7 @@ rel_basetable(mvc *sql, sql_table *t, ch
sql_allocator *sa = sql->sa;
sql_rel *rel = rel_create(sa);
char *tname = t->base.name;
+ str actual_data_str = "data";
assert(atname);
rel->l = t;
@@ -450,6 +451,12 @@ rel_basetable(mvc *sql, sql_table *t, ch
rel->op = op_basetable;
rel->exps = new_exp_list(sa);
+ if(strstr(tname, actual_data_str) != NULL)
+ {
+ rel->p = prop_create(sa, PROP_ACTUAL_DATA_NEEDED, rel->p);
+ }
+
+
for (cn = t->columns.set->h; cn; cn = cn->next) {
sql_column *c = cn->data;
sql_exp *e = exp_alias(sa, atname, c->base.name, tname,
c->base.name, &c->type, CARD_MULTI, c->null, 0);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list