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

Reply via email to