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

Reply via email to