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