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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list