Changeset: cad4b0882496 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=cad4b0882496
Modified Files:
        sql/backends/monet5/sql_cat.c
        sql/storage/store.c
Branch: merge-partitions
Log Message:

Sort partition values BAT


diffs (75 lines):

diff --git a/sql/backends/monet5/sql_cat.c b/sql/backends/monet5/sql_cat.c
--- a/sql/backends/monet5/sql_cat.c
+++ b/sql/backends/monet5/sql_cat.c
@@ -227,7 +227,7 @@ alter_table_add_value_partition(mvc *sql
        sql_column *col = NULL;
        sql_part *err = NULL;
        int tp1 = 0, errcode = 0, i = 0, ninserts = 0;
-       BAT *b = NULL;
+       BAT *b = NULL, *sorted = NULL/*, *cbind = NULL, *diff = NULL*/;
        gdk_return ret = GDK_SUCCEED;
 
        if((msg = validate_alter_table_add_table(sql, 
"sql.alter_table_add_value_partition", msname, mtname, psname, ptname, &mt, 
&pt)))
@@ -270,7 +270,12 @@ alter_table_add_value_partition(mvc *sql
                }
        }
 
-       errcode = sql_trans_add_value_partition(sql->session->tr, mt, pt, tp1, 
b, &err);
+       if (BATsort(&sorted, NULL, NULL, b, NULL, NULL, 0, 0) != GDK_SUCCEED) {
+               msg = 
createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+               goto finish;
+       }
+
+       errcode = sql_trans_add_value_partition(sql->session->tr, mt, pt, tp1, 
sorted, &err);
        switch(errcode) {
                case 0:
                        break;
@@ -280,15 +285,23 @@ alter_table_add_value_partition(mvc *sql
                                                                        
err->t->s->base.name, err->t->base.name);
                        break;
                default:
-                       msg = 
createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(42000) \
+                       msg = 
createException(SQL,"sql.alter_table_add_value_partition",SQLSTATE(42000)
                                                                        "ALTER 
TABLE: value at position %d length is higher than %d",
                                                                        
(errcode * -1) - 1, STORAGE_MAX_VALUE_LENGTH);
                        break;
        }
 
 finish:
-       if(msg && b)
-               BBPreclaim(b);
+       if(b)
+               BBPunfix(b->batCacheid);
+       /*if(cbind)
+               BBPunfix(diff->batCacheid);
+       if(diff)
+               BBPunfix(diff->batCacheid);*/
+       if(sorted && msg)
+               BBPunfix(sorted->batCacheid);
+       else if(sorted)
+               BBPretain(sorted->batCacheid);
        return msg;
 }
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -4733,8 +4733,7 @@ sql_trans_add_value_partition(sql_trans 
                i++;
        }
        _DELETE(v);
-       BATsetcount(b, i);
-       BATsettrivprop(b);
+
        p->part.values = b->batCacheid;
 
        /* add list partition values */
@@ -4742,8 +4741,6 @@ sql_trans_add_value_partition(sql_trans 
        if(*err)
                return -1;
 
-       BBPretain(b->batCacheid);
-
        /* add merge table dependency */
        sql_trans_create_dependency(tr, pt->base.id, mt->base.id, 
TABLE_DEPENDENCY);
        table_funcs.table_insert(tr, sysobj, &mt->base.id, p->base.name, 
&p->base.id);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to