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

pmv: reordered PERPAD according to pkey order.


diffs (50 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
@@ -66,6 +66,7 @@ int is_column_of_table_in_list_table_pke
 list* extract_column_names_from_list_of_columns(list* list_of_columns);
 list* collect_PERPAD(mvc *sql, sql_rel *rel);
 lng get_enum_step_length(sql_column* c);
+list* reorder_PERPAD(list* list_PERPAD, list* pkey_column_names);
 sel_predicate** convert_all_into_in_clause_except_cmp_equal(list 
*list_of_PERPAD);
 int enumerate_pkey_space(str** ret, sel_predicate** sps, int sps_enum_start, 
int num_PERPAD, int* is_pkey_to_be_enumerated);
 int* enumerate_and_insert_into_temp_table(mvc *sql, sel_predicate** sps, int 
num_PERPAD);
@@ -981,6 +982,29 @@ lng get_enum_step_length(sql_column* c)
        else return 0;
 }
 
+list* reorder_PERPAD(list* list_PERPAD, list* pkey_column_names)
+{
+       node *n = NULL, *o = NULL;
+       list* res = list_create(NULL);
+       
+       for (n = pkey_column_names->h; n; n = n->next) 
+       {
+               str cn = n->data;
+               for (o = list_PERPAD->h; o; o = o->next) 
+               {
+                       sel_predicate *sp = o->data;
+                       
+                       if(strcmp(cn, sp->column->base.name) == 0)
+                       {
+                               res = list_append(res, sp);
+                               break;
+                       }
+               }
+       }
+       
+       return res;
+}
+
 sel_predicate** convert_all_into_in_clause_except_cmp_equal(list 
*list_of_PERPAD)
 {
        int i;
@@ -7178,6 +7202,8 @@ void prepare_pmv(mvc* sql, sql_rel* ret)
        {
                table_pkeys *tp = n->data;
                printf("num_pkey_columns: %d\n", 
list_length(tp->pkey_column_names));
+               /* TODO: Assumed to have one pmv refered in a query */
+               list_PERPAD = reorder_PERPAD(list_PERPAD, 
tp->pkey_column_names);
        }
        printf("num_PERPAD: %d\n", num_PERPAD=list_length(list_PERPAD));
        
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to