Changeset: fe9181f33f93 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fe9181f33f93
Modified Files:
sql/server/rel_optimizer.c
Branch: DVframework
Log Message:
pmv: clean up temp tables before original query continues to execute.
diffs (76 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
@@ -78,6 +78,7 @@ str form_pkey_select_str(sel_predicate**
str get_non_pkey_select_str(str schema_name, str dmdt_name);
void prepare_pmv(mvc* sql, sql_rel* ret);
bit is_pmv_query(sql_rel *rel);
+void clean_up_temps(mvc* sql);
list *discovered_table_pkeys;
@@ -1762,6 +1763,54 @@ void compute_and_insert_unavailable_requ
}
+void clean_up_temps(mvc* sql)
+{
+ str temp_table_name = "tt";
+ str temp_table_name_res = "tt_res";
+ str s, q, s2, q2, msg;
+ Client cntxt;
+
+ /* DROP temp tables */
+ s = "DROP TABLE %s;";
+ q = "DROP TABLE %s;";
+
+ s2 = (str)GDKmalloc(BUFSIZ*sizeof(char));
+ sprintf(s2, s, temp_table_name);
+ s = GDKstrdup(s2);
+ GDKfree(s2);
+
+ q2 = (str)GDKmalloc(BUFSIZ*sizeof(char));
+ sprintf(q2, q, temp_table_name_res);
+ q = GDKstrdup(q2);
+ GDKfree(q2);
+
+ cntxt = MCgetClient(sql->clientid);
+
+ if((msg = SQLstatementIntern(cntxt,&s,"pmv.drop_temp",TRUE,FALSE)) !=
MAL_SUCCEED)
+ {/* drop temp table not succeeded. What to do? */
+ printf("***query didnt work, %s: %s\n", msg, s);
+ return;
+ }
+
+ if((msg = SQLstatementIntern(cntxt,&q,"pmv.drop_temp_res",TRUE,FALSE))
!= MAL_SUCCEED)
+ {/* drop temp table not succeeded. What to do? */
+ printf("***query didnt work, %s: %s\n", msg, q);
+ return;
+ }
+
+ if(mvc_commit(sql, 0, NULL) < 0)
+ {/* committing failed */
+ // throw(MAL,"pmv.create_temp_table", "committing
failed\n");
+ printf("***commit didnt work: %s OR %s\n", s, q);
+ return;
+ }
+
+ GDKfree(s);
+ GDKfree(q);
+
+}
+
+
bit is_pmv_query(sql_rel *rel)
{
if(rel == NULL)
@@ -6925,6 +6974,9 @@ void prepare_pmv(mvc* sql, sql_rel* ret)
find_out_pkey_space_for_unavailable_required_derived_metadata(sql,
list_PERPAD, is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
compute_and_insert_unavailable_required_derived_metadata(sql, sps,
num_PERPAD, is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
+
+ clean_up_temps(sql);
+
}
sql_rel *
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list