Changeset: 19e3f6529efa for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=19e3f6529efa
Modified Files:
sql/server/rel_optimizer.c
Branch: DVframework
Log Message:
pmv: early recognition of the existence of unavailables.
diffs (58 lines):
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -1744,6 +1744,45 @@ int find_out_pkey_space_for_unavailable_
GDKfree(s);
GDKfree(q);
+
+ /* Now check if tt_res is empty. If yes, then no further derivation is
needed. So, return 1; */
+ {
+ ValRecord *v;
+ v = stack_get_var(sql, "tt_res_count");
+ buf2 = (str)GDKmalloc(BUFSIZ*sizeof(char));
+
+ sprintf(buf2, "SELECT COUNT(*) INTO tt_res_count FROM %s;\n",
temp_table_name_res);
+ s = GDKstrdup(buf2);
+ GDKfree(buf2);
+
+ if(v == NULL)
+ {
+ dq = "DECLARE tt_res_count INTEGER;\n";
+
+
if(SQLstatementIntern(cntxt,&dq,"pmv.declare_tt_res_count_var",TRUE,FALSE)!=
MAL_SUCCEED)
+ {/* insert into query not succeeded, what to do */
+ printf("***query didnt work: %s\n", dq);
+ return 1;
+ }
+ }
+
+
if(SQLstatementIntern(cntxt,&s,"pmv.tt_res_emptiness_check",TRUE,FALSE)!=
MAL_SUCCEED)
+ {/* insert into query not succeeded, what to do */
+ printf("***query didnt work: %s\n", s);
+ return 1;
+ }
+
+ v = stack_get_var(sql, "tt_res_count");
+
+ if(v->val.ival > 0)
+ return 1;
+ else if(v->val.ival == 0)
+ return 0;
+
+ printf("*** tt_res_emptiness_check went wrong!!\n");
+ return 1;
+ }
+
return 1;
}
@@ -7285,6 +7324,8 @@ void prepare_pmv(mvc* sql, sql_rel* ret)
/* find out the required mEtadata to be Derived -- the unavailables */
is_further_derivation_needed =
find_out_pkey_space_for_unavailable_required_derived_metadata(sql, list_PERPAD,
is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
+
+
/* derive the unavailables and insert into DMdT */
if(is_further_derivation_needed)
compute_and_insert_unavailable_required_derived_metadata(sql,
sps, num_PERPAD, is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list