Changeset: d753988bb0c8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d753988bb0c8 Modified Files: monetdb5/modules/mal/batExtensions.c sql/test/orderidx/Tests/simpletable.stable.out sql/test/orderidx/Tests/simpletable.stable.out.32bit sql/test/orderidx/Tests/smalltable.stable.out sql/test/orderidx/Tests/smalltable.stable.out.32bit Branch: oscar Log Message:
Use BUNappend to insert on the heap, so other properties can be set diffs (123 lines): diff --git a/monetdb5/modules/mal/batExtensions.c b/monetdb5/modules/mal/batExtensions.c --- a/monetdb5/modules/mal/batExtensions.c +++ b/monetdb5/modules/mal/batExtensions.c @@ -198,18 +198,19 @@ CMDBATimprintsize(lng *ret, bat *bid) do { \ ValRecord *stack = stk->stk; \ int *argv = pci->argv; \ - TPE *restrict heap; \ total = number_existing + inputs; \ if (BATextend(b, total) != GDK_SUCCEED) { \ BBPunfix(b->batCacheid); \ throw(MAL,"bat.append_bulk", SQLSTATE(HY013) MAL_MALLOC_FAIL); \ } \ - heap = (TPE*) Tloc(b, number_existing); \ if (!b->tsorted && !b->trevsorted) { \ for (int i = 3, args = pci->argc; i < args; i++) { \ TPE next = stack[argv[i]].val.UNION_VAL; \ new_nil |= is_##TPE##_nil(next); \ - heap[j++] = next; \ + if (BUNappend(b, &next, force) != GDK_SUCCEED) { \ + BBPunfix(b->batCacheid); \ + throw(MAL,"bat.append_bulk", SQLSTATE(HY013) MAL_MALLOC_FAIL); \ + } \ } \ } else { \ bool sorted = b->tsorted, revsorted = b->trevsorted; \ @@ -220,13 +221,19 @@ CMDBATimprintsize(lng *ret, bat *bid) sorted &= prev >= last; \ revsorted &= prev <= last; \ } \ - heap[j++] = prev; \ + if (BUNappend(b, &prev, force) != GDK_SUCCEED) { \ + BBPunfix(b->batCacheid); \ + throw(MAL,"bat.append_bulk", SQLSTATE(HY013) MAL_MALLOC_FAIL); \ + } \ for (int i = 4, args = pci->argc; i < args; i++) { \ TPE next = stack[argv[i]].val.UNION_VAL; \ new_nil |= is_##TPE##_nil(next); \ sorted &= next >= prev; \ revsorted &= next <= prev; \ - heap[j++] = prev = next; \ + if (BUNappend(b, &next, force) != GDK_SUCCEED) { \ + BBPunfix(b->batCacheid); \ + throw(MAL,"bat.append_bulk", SQLSTATE(HY013) MAL_MALLOC_FAIL); \ + } \ } \ b->tsorted &= sorted; \ b->trevsorted &= revsorted; \ @@ -239,7 +246,7 @@ CMDBATappend_bulk(Client cntxt, MalBlkPt bat *r = getArgReference_bat(stk, pci, 0), *bid = getArgReference_bat(stk, pci, 1); bit force = *getArgReference_bit(stk, pci, 2), new_nil = 0; BAT *b; - BUN inputs = (BUN)(pci->argc - 3), number_existing = 0, total = 0, j = 0; + BUN inputs = (BUN)(pci->argc - 3), number_existing = 0, total = 0; (void) cntxt; if ((b = BATdescriptor(*bid)) == NULL) diff --git a/sql/test/orderidx/Tests/simpletable.stable.out b/sql/test/orderidx/Tests/simpletable.stable.out --- a/sql/test/orderidx/Tests/simpletable.stable.out +++ b/sql/test/orderidx/Tests/simpletable.stable.out @@ -86,7 +86,7 @@ stdout of test 'simpletable` in director % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 2, 1, 5, 1, 5, 1 # length -[ "sys", "xtmp1", "i", "int", "writable", 12, 0, false, 0, NULL, 0 ] +[ "sys", "xtmp1", "i", "int", "writable", 12, 0, false, 0, false, 0 ] #ALTER TABLE xtmp1 SET READ ONLY; #CREATE ORDERED INDEX sys_xtmp1_i_oidx ON xtmp1(i); #SELECT schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx FROM storage(current_schema, 'xtmp1'); @@ -94,7 +94,7 @@ stdout of test 'simpletable` in director % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 2, 1, 5, 1, 5, 3 # length -[ "sys", "xtmp1", "i", "int", "readonly", 12, 0, false, 0, NULL, 120 ] +[ "sys", "xtmp1", "i", "int", "readonly", 12, 0, false, 0, false, 120 ] #SELECT * FROM xtmp1 WHERE i<0; % sys.xtmp1 # table_name % i # name diff --git a/sql/test/orderidx/Tests/simpletable.stable.out.32bit b/sql/test/orderidx/Tests/simpletable.stable.out.32bit --- a/sql/test/orderidx/Tests/simpletable.stable.out.32bit +++ b/sql/test/orderidx/Tests/simpletable.stable.out.32bit @@ -86,7 +86,7 @@ stdout of test 'simpletable` in director % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 2, 1, 5, 1, 5, 1 # length -[ "sys", "xtmp1", "i", "int", "writable", 12, 0, false, 0, NULL, 0 ] +[ "sys", "xtmp1", "i", "int", "writable", 12, 0, false, 0, false, 0 ] #ALTER TABLE xtmp1 SET READ ONLY; #CREATE ORDERED INDEX sys_xtmp1_i_oidx ON xtmp1(i); #SELECT schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx FROM storage(current_schema, 'xtmp1'); diff --git a/sql/test/orderidx/Tests/smalltable.stable.out b/sql/test/orderidx/Tests/smalltable.stable.out --- a/sql/test/orderidx/Tests/smalltable.stable.out +++ b/sql/test/orderidx/Tests/smalltable.stable.out @@ -79,7 +79,7 @@ stdout of test 'smalltable` in directory % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 1, 1, 5, 1, 5, 1 # length -[ "sys", "xtmp4", "i", "int", "writable", 3, 0, false, 0, NULL, 0 ] +[ "sys", "xtmp4", "i", "int", "writable", 3, 0, false, 0, false, 0 ] #ALTER TABLE xtmp4 SET read only; #CREATE ORDERED INDEX sys_xtmp4_i_oidx ON xtmp4(i); #SELECT schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx from storage(current_schema, 'xtmp4'); @@ -87,7 +87,7 @@ stdout of test 'smalltable` in directory % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 1, 1, 5, 1, 5, 2 # length -[ "sys", "xtmp4", "i", "int", "readonly", 3, 0, false, 0, NULL, 48 ] +[ "sys", "xtmp4", "i", "int", "readonly", 3, 0, false, 0, false, 48 ] #SELECT * FROM xtmp4 WHERE i>=0 AND i<8; % sys.xtmp4 # table_name % i # name diff --git a/sql/test/orderidx/Tests/smalltable.stable.out.32bit b/sql/test/orderidx/Tests/smalltable.stable.out.32bit --- a/sql/test/orderidx/Tests/smalltable.stable.out.32bit +++ b/sql/test/orderidx/Tests/smalltable.stable.out.32bit @@ -79,7 +79,7 @@ stdout of test 'smalltable` in directory % schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx # name % varchar, varchar, varchar, varchar, varchar, bigint, bigint, boolean, bigint, boolean, bigint # type % 3, 5, 1, 3, 8, 1, 1, 5, 1, 5, 1 # length -[ "sys", "xtmp4", "i", "int", "writable", 3, 0, false, 0, NULL, 0 ] +[ "sys", "xtmp4", "i", "int", "writable", 3, 0, false, 0, false, 0 ] #ALTER TABLE xtmp4 SET read only; #CREATE ORDERED INDEX sys_xtmp4_i_oidx ON xtmp4(i); #SELECT schema, table, column, type, mode, count, hashes, phash, imprints, sorted, orderidx from storage(current_schema, 'xtmp4'); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list