Changeset: 29b05c22c90c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=29b05c22c90c
Modified Files:
        sql/server/rel_optimizer.c
        sql/server/sql_mvc.h
Branch: DVframework
Log Message:

pmv: fixed bug. Queries fired in the process of pmv internally should not call 
functions of pmv again.


diffs (87 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
@@ -6536,36 +6536,45 @@ static sql_rel *
 sql_rel *
 rel_optimizer(mvc *sql, sql_rel *rel) 
 {
-       node* n = NULL;
-       list* list_PERPAD = NULL;
-       sel_predicate** sps = NULL;
        sql_rel *ret = _rel_optimizer(sql, rel, 0);
-       int num_PERPAD = 0, i;
-       int num_pkeys_to_be_enumerated = 0;
-       int* is_pkey_to_be_enumerated;
-       discovered_table_pkeys = list_create(NULL);
-       list_PERPAD = collect_PERPAD(sql, ret);
        
-       printf("num_discovered_tables: %d\n", 
list_length(discovered_table_pkeys));
-       for (n = discovered_table_pkeys->h; n; n = n->next) 
+       if(!sql->q_in_q)
        {
-               table_pkeys *tp = n->data;
-               printf("num_pkey_columns: %d\n", 
list_length(tp->pkey_column_names));
-       }
-       printf("num_PERPAD: %d\n", num_PERPAD=list_length(list_PERPAD));
-       
-       sps = convert_all_into_in_clause_except_cmp_equal(list_PERPAD);
-       
-       /* enumerate the pkey space into a temp table */
-       is_pkey_to_be_enumerated = enumerate_and_insert_into_temp_table(sql, 
sps, num_PERPAD);
-       
-       for(i = 0; i < num_PERPAD; i++)
-       {
-               if(is_pkey_to_be_enumerated[i])
-                       num_pkeys_to_be_enumerated++;
-       }
-       
-       check_if_required_derived_metadata_is_already_available(sql, 
list_PERPAD, is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
+               node* n = NULL;
+               list* list_PERPAD = NULL;
+               sel_predicate** sps = NULL;
+               int num_PERPAD = 0, i;
+               int num_pkeys_to_be_enumerated = 0;
+               int* is_pkey_to_be_enumerated;
+               discovered_table_pkeys = list_create(NULL);
+               
+               sql->q_in_q = 1;
+               
+               list_PERPAD = collect_PERPAD(sql, ret);
+               
+               printf("num_discovered_tables: %d\n", 
list_length(discovered_table_pkeys));
+               for (n = discovered_table_pkeys->h; n; n = n->next) 
+               {
+                       table_pkeys *tp = n->data;
+                       printf("num_pkey_columns: %d\n", 
list_length(tp->pkey_column_names));
+               }
+               printf("num_PERPAD: %d\n", num_PERPAD=list_length(list_PERPAD));
+               
+               sps = convert_all_into_in_clause_except_cmp_equal(list_PERPAD);
+               
+               /* enumerate the pkey space into a temp table */
+               is_pkey_to_be_enumerated = 
enumerate_and_insert_into_temp_table(sql, sps, num_PERPAD);
+               
+               for(i = 0; i < num_PERPAD; i++)
+               {
+                       if(is_pkey_to_be_enumerated[i])
+                               num_pkeys_to_be_enumerated++;
+               }
+               
+               check_if_required_derived_metadata_is_already_available(sql, 
list_PERPAD, is_pkey_to_be_enumerated, num_pkeys_to_be_enumerated);
+               
+               sql->q_in_q = 0;
+       }
        
        return ret;
 }
diff --git a/sql/server/sql_mvc.h b/sql/server/sql_mvc.h
--- a/sql/server/sql_mvc.h
+++ b/sql/server/sql_mvc.h
@@ -127,6 +127,7 @@ typedef struct mvc {
        struct tms times;
 #endif 
        lng Tparse;
+       sht q_in_q;     /* set if one user query is running another query */
 } mvc;
 
 extern int mvc_init(int debug, store_type store, int ro, int su, backend_stack 
stk);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to