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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to