Changeset: 5e28eba402a1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5e28eba402a1
Modified Files:
        sql/backends/monet5/sql.c
        sql/test/mosaic/Tests/compression.sql
        sql/test/mosaic/Tests/compression.stable.err
        sql/test/mosaic/Tests/compression.stable.out
        sql/test/mosaic/Tests/compressionRLE.sql
        sql/test/mosaic/Tests/compressionRLE.stable.out
        sql/test/mosaic/Tests/xqueries.sql
        sql/test/mosaic/Tests/xqueries.stable.out
        sql/test/mosaic/Tests/xqueries_delta.sql
        sql/test/mosaic/Tests/xqueries_delta.stable.out
        sql/test/mosaic/Tests/xqueries_rle.sql
        sql/test/mosaic/Tests/xqueries_rle.stable.out
Branch: mosaic
Log Message:

Fix storage() function


diffs (truncated from 1301 to 300 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -4661,7 +4661,7 @@ SQLoptimizersUpdate(Client cntxt, MalBlk
 str
 sql_storage(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
-       BAT *sch, *tab, *col, *type, *loc, *cnt, *atom, *size, *heap, *indices, 
*phash, *sort, *imprints, *mode;
+       BAT *sch, *tab, *col, *type, *loc, *cnt, *atom, *size, *heap, *indices, 
*phash, *sort, *imprints, *mode, *compressed;
        mvc *m = NULL;
        str msg;
        sql_trans *tr;
@@ -4682,6 +4682,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
        bat *rphash = getArgReference_bat(stk, pci, 11);
        bat *rimprints = getArgReference_bat(stk, pci, 12);
        bat *rsort = getArgReference_bat(stk, pci, 13);
+       bat *rcompressed = getArgReference_bat(stk, pci, 14);
 
        if ((msg = getSQLContext(cntxt, mb, &m, NULL)) != NULL)
                return msg;
@@ -4717,10 +4718,12 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
        BATseqbase(imprints, 0);
        sort = BATnew(TYPE_void, TYPE_bit, 0, TRANSIENT);
        BATseqbase(sort, 0);
+       compressed = BATnew(TYPE_void, TYPE_bit, 0, TRANSIENT);
+       BATseqbase(compressed, 0);
        
 
        if (sch == NULL || tab == NULL || col == NULL || type == NULL || mode 
== NULL || loc == NULL || imprints == NULL || 
-               sort == NULL || cnt == NULL || atom == NULL || size == NULL || 
heap == NULL || indices == NULL || phash == NULL) {
+               sort == NULL || cnt == NULL || atom == NULL || size == NULL || 
heap == NULL || indices == NULL || phash == NULL || compressed == NULL) {
                if (sch)
                        BBPunfix(sch->batCacheid);
                if (tab)
@@ -4749,6 +4752,8 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                        BBPunfix(imprints->batCacheid);
                if (sort)
                        BBPunfix(sort->batCacheid);
+               if (compressed)
+                       BBPunfix(compressed->batCacheid);
                throw(SQL, "sql.storage", MAL_MALLOC_FAIL);
        }
        for (nsch = tr->schemas.set->h; nsch; nsch = nsch->next) {
@@ -4837,6 +4842,10 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
 
                                                                w = 
BATtordered(bn);
                                                                BUNappend(sort, 
&w, FALSE);
+
+                                                               w = 
bn->T->heap.compressed;
+                                                               
BUNappend(compressed, &w, FALSE);
+
                                                                
BBPunfix(bn->batCacheid);
                                                        }
 
@@ -4916,6 +4925,8 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
                                                                        
/*printf("\n"); */
                                                                        w = 
BATtordered(bn);
                                                                        
BUNappend(sort, &w, FALSE);
+                                                                       w = 
bn->T->heap.compressed;
+                                                                       
BUNappend(compressed, &w, FALSE);
                                                                        
BBPunfix(bn->batCacheid);
                                                                }
                                                        }
@@ -4937,6 +4948,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
        BBPkeepref(*rphash = phash->batCacheid);
        BBPkeepref(*rimprints = imprints->batCacheid);
        BBPkeepref(*rsort = sort->batCacheid);
+       BBPkeepref(*rcompressed = compressed->batCacheid);
        return MAL_SUCCEED;
 }
 
diff --git a/sql/test/mosaic/Tests/compression.sql 
b/sql/test/mosaic/Tests/compression.sql
--- a/sql/test/mosaic/Tests/compression.sql
+++ b/sql/test/mosaic/Tests/compression.sql
@@ -1,6 +1,5 @@
 set optimizer='sequential_pipe';
 
-drop table tmp3;
 create table tmp3( i integer, b boolean, f real,t timestamp);
 insert into tmp3 values
 (1, true, 0.314,'2014-08-23 11:34:54.000000'),
@@ -101,7 +100,7 @@ alter table tmp3 alter column f set stor
 explain select * from tmp3;
 select * from tmp3;
 
-select * from storage where "table" = 'tmp3';
+--select * from storage where "table" = 'tmp3';
 select count(*) from tmp3;
 
 alter table tmp3 alter column i set storage NULL;
@@ -113,4 +112,4 @@ select * from tmp3;
 alter table tmp3 set read write;
 select * from tmp3;
 
---drop table tmp3;
+drop table tmp3;
diff --git a/sql/test/mosaic/Tests/compression.stable.err 
b/sql/test/mosaic/Tests/compression.stable.err
--- a/sql/test/mosaic/Tests/compression.stable.err
+++ b/sql/test/mosaic/Tests/compression.stable.err
@@ -30,9 +30,6 @@ stderr of test 'compression` in director
 # 14:00:27 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-19726" "--port=38313"
 # 14:00:27 >  
 
-MAPI  = (monetdb) /var/tmp/mtest-11985/.s.monetdb.37250
-QUERY = drop table tmp3;
-ERROR = !DROP TABLE: no such table 'tmp3'
 
 
 # 14:00:27 >  
diff --git a/sql/test/mosaic/Tests/compression.stable.out 
b/sql/test/mosaic/Tests/compression.stable.out
--- a/sql/test/mosaic/Tests/compression.stable.out
+++ b/sql/test/mosaic/Tests/compression.stable.out
@@ -45,26 +45,45 @@ Ready.
 % mal # name
 % clob # type
 % 85 # length
-function user.s6_1{autoCommit=true}():void;
-    X_36:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",20);
+function user.s5_1{autoCommit=true}():void;
+    X_57:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",39);
+    X_20 := bat.new(nil:oid,nil:str);
+    X_28 := bat.append(X_20,"sys.tmp3");
+    X_36 := bat.append(X_28,"sys.tmp3");
+    X_43 := bat.append(X_36,"sys.tmp3");
+    X_50 := bat.append(X_43,"sys.tmp3");
+    X_23 := bat.new(nil:oid,nil:str);
+    X_30 := bat.append(X_23,"i");
+    X_37 := bat.append(X_30,"b");
+    X_44 := bat.append(X_37,"f");
+    X_51 := bat.append(X_44,"t");
+    X_24 := bat.new(nil:oid,nil:str);
+    X_31 := bat.append(X_24,"int");
+    X_38 := bat.append(X_31,"boolean");
+    X_45 := bat.append(X_38,"real");
+    X_52 := bat.append(X_45,"timestamp");
+    X_25 := bat.new(nil:oid,nil:int);
+    X_33 := bat.append(X_25,32);
+    X_40 := bat.append(X_33,1);
+    X_47 := bat.append(X_40,24);
+    X_54 := bat.append(X_47,7);
+    X_27 := bat.new(nil:oid,nil:int);
+    X_35 := bat.append(X_27,0);
+    X_42 := bat.append(X_35,0);
+    X_49 := bat.append(X_42,0);
+    X_56 := bat.append(X_49,0);
     X_2 := sql.mvc();
     X_3:bat[:oid,:oid]  := sql.tid(X_2,"sys","tmp3");
     X_6:bat[:oid,:int]  := sql.bind(X_2,"sys","tmp3","i",0);
     X_9 := mosaic.leftfetchjoin(X_3,X_6);
-    X_16:bat[:oid,:timestamp]  := sql.bind(X_2,"sys","tmp3","t",0);
-    X_18 := mosaic.leftfetchjoin(X_3,X_16);
-    X_13:bat[:oid,:flt]  := sql.bind(X_2,"sys","tmp3","f",0);
-    X_15 := mosaic.leftfetchjoin(X_3,X_13);
     X_10:bat[:oid,:bit]  := sql.bind(X_2,"sys","tmp3","b",0);
     X_12 := mosaic.leftfetchjoin(X_3,X_10);
-    X_19 := sql.resultSet(4,1,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","i","int",32,0,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","b","boolean",1,0,X_12);
-    sql.rsColumn(X_19,"sys.tmp3","f","real",24,0,X_15);
-    sql.rsColumn(X_19,"sys.tmp3","t","timestamp",7,0,X_18);
-    X_34 := io.stdout();
-    sql.exportResult(X_34,X_19);
-end user.s6_1;
+    X_13:bat[:oid,:flt] := sql.bind(X_2,"sys","tmp3","f",0);
+    X_15 := mosaic.leftfetchjoin(X_3,X_13);
+    X_16:bat[:oid,:timestamp] := sql.bind(X_2,"sys","tmp3","t",0);
+    X_18 := mosaic.leftfetchjoin(X_3,X_16);
+    sql.resultSet(X_50,X_51,X_52,X_54,X_56,X_9,X_12,X_15,X_18);
+end user.s5_1;
 #select * from tmp3;
 % sys.tmp3,    sys.tmp3,       sys.tmp3,       sys.tmp3 # table_name
 % i,   b,      f,      t # name
@@ -164,26 +183,45 @@ end user.s6_1;
 % mal # name
 % clob # type
 % 85 # length
-function user.s10_1{autoCommit=true}():void;
-    X_36:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",20);
+function user.s9_1{autoCommit=true}():void;
+    X_57:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",39);
+    X_20 := bat.new(nil:oid,nil:str);
+    X_28 := bat.append(X_20,"sys.tmp3");
+    X_36 := bat.append(X_28,"sys.tmp3");
+    X_43 := bat.append(X_36,"sys.tmp3");
+    X_50 := bat.append(X_43,"sys.tmp3");
+    X_23 := bat.new(nil:oid,nil:str);
+    X_30 := bat.append(X_23,"i");
+    X_37 := bat.append(X_30,"b");
+    X_44 := bat.append(X_37,"f");
+    X_51 := bat.append(X_44,"t");
+    X_24 := bat.new(nil:oid,nil:str);
+    X_31 := bat.append(X_24,"int");
+    X_38 := bat.append(X_31,"boolean");
+    X_45 := bat.append(X_38,"real");
+    X_52 := bat.append(X_45,"timestamp");
+    X_25 := bat.new(nil:oid,nil:int);
+    X_33 := bat.append(X_25,32);
+    X_40 := bat.append(X_33,1);
+    X_47 := bat.append(X_40,24);
+    X_54 := bat.append(X_47,7);
+    X_27 := bat.new(nil:oid,nil:int);
+    X_35 := bat.append(X_27,0);
+    X_42 := bat.append(X_35,0);
+    X_49 := bat.append(X_42,0);
+    X_56 := bat.append(X_49,0);
     X_2 := sql.mvc();
     X_3:bat[:oid,:oid]  := sql.tid(X_2,"sys","tmp3");
     X_6:bat[:oid,:int]  := sql.bind(X_2,"sys","tmp3","i",0);
     X_9 := mosaic.leftfetchjoin(X_3,X_6);
-    X_16:bat[:oid,:timestamp]  := sql.bind(X_2,"sys","tmp3","t",0);
-    X_18 := mosaic.leftfetchjoin(X_3,X_16);
-    X_13:bat[:oid,:flt]  := sql.bind(X_2,"sys","tmp3","f",0);
-    X_15 := mosaic.leftfetchjoin(X_3,X_13);
     X_10:bat[:oid,:bit]  := sql.bind(X_2,"sys","tmp3","b",0);
     X_12 := mosaic.leftfetchjoin(X_3,X_10);
-    X_19 := sql.resultSet(4,1,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","i","int",32,0,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","b","boolean",1,0,X_12);
-    sql.rsColumn(X_19,"sys.tmp3","f","real",24,0,X_15);
-    sql.rsColumn(X_19,"sys.tmp3","t","timestamp",7,0,X_18);
-    X_34 := io.stdout();
-    sql.exportResult(X_34,X_19);
-end user.s10_1;
+    X_13:bat[:oid,:flt] := sql.bind(X_2,"sys","tmp3","f",0);
+    X_15 := mosaic.leftfetchjoin(X_3,X_13);
+    X_16:bat[:oid,:timestamp] := sql.bind(X_2,"sys","tmp3","t",0);
+    X_18 := mosaic.leftfetchjoin(X_3,X_16);
+    sql.resultSet(X_50,X_51,X_52,X_54,X_56,X_9,X_12,X_15,X_18);
+end user.s9_1;
 #select * from tmp3;
 % sys.tmp3,    sys.tmp3,       sys.tmp3,       sys.tmp3 # table_name
 % i,   b,      f,      t # name
@@ -275,15 +313,6 @@ end user.s10_1;
 [ 8,   false,  0.317,  2014-08-23 11:34:54.000000      ]
 [ 9,   false,  0.317,  2014-08-23 11:34:54.000000      ]
 [ 10,  false,  0.317,  2014-08-23 11:34:54.000000      ]
-#select * from storage where "table" = 'tmp3';
-% .storage,    .storage,       .storage,       .storage,       .storage,       
.storage,       .storage,       .storage,       .storage,       .storage,       
.storage,       .storage,       .storage,       .storage # table_name
-% schema,      table,  column, type,   mode,   location,       count,  
typewidth,      columnsize,     heapsize,       hashes, imprints,       sorted, 
compress # name
-% clob,        clob,   clob,   clob,   clob,   clob,   bigint, int,    bigint, 
bigint, bigint, bigint, boolean,        boolean # type
-% 3,   4,      1,      9,      8,      6,      2,      1,      3,      1,      
1,      1,      5,      5 # length
-[ "sys",       "tmp3", "i",    "int",  "readonly",     "04/407",       86,     
4,      344,    0,      0,      0,      false,  false   ]
-[ "sys",       "tmp3", "b",    "boolean",      "readonly",     "04/471",       
86,     1,      86,     0,      0,      0,      false,  false   ]
-[ "sys",       "tmp3", "f",    "real", "readonly",     "05/511",       86,     
4,      344,    0,      0,      0,      false,  false   ]
-[ "sys",       "tmp3", "t",    "timestamp",    "readonly",     "05/510",       
86,     8,      688,    0,      0,      0,      true,   false   ]
 #select count(*) from tmp3;
 % sys.L1 # table_name
 % L1 # name
@@ -298,26 +327,45 @@ end user.s10_1;
 % mal # name
 % clob # type
 % 85 # length
-function user.s16_1{autoCommit=true}():void;
-    X_36:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",20);
+function user.s14_1{autoCommit=true}():void;
+    X_57:void := querylog.define("explain select * from 
tmp3;","sequential_pipe",39);
+    X_20 := bat.new(nil:oid,nil:str);
+    X_28 := bat.append(X_20,"sys.tmp3");
+    X_36 := bat.append(X_28,"sys.tmp3");
+    X_43 := bat.append(X_36,"sys.tmp3");
+    X_50 := bat.append(X_43,"sys.tmp3");
+    X_23 := bat.new(nil:oid,nil:str);
+    X_30 := bat.append(X_23,"i");
+    X_37 := bat.append(X_30,"b");
+    X_44 := bat.append(X_37,"f");
+    X_51 := bat.append(X_44,"t");
+    X_24 := bat.new(nil:oid,nil:str);
+    X_31 := bat.append(X_24,"int");
+    X_38 := bat.append(X_31,"boolean");
+    X_45 := bat.append(X_38,"real");
+    X_52 := bat.append(X_45,"timestamp");
+    X_25 := bat.new(nil:oid,nil:int);
+    X_33 := bat.append(X_25,32);
+    X_40 := bat.append(X_33,1);
+    X_47 := bat.append(X_40,24);
+    X_54 := bat.append(X_47,7);
+    X_27 := bat.new(nil:oid,nil:int);
+    X_35 := bat.append(X_27,0);
+    X_42 := bat.append(X_35,0);
+    X_49 := bat.append(X_42,0);
+    X_56 := bat.append(X_49,0);
     X_2 := sql.mvc();
     X_3:bat[:oid,:oid]  := sql.tid(X_2,"sys","tmp3");
     X_6:bat[:oid,:int]  := sql.bind(X_2,"sys","tmp3","i",0);
     X_9 := mosaic.leftfetchjoin(X_3,X_6);
-    X_16:bat[:oid,:timestamp]  := sql.bind(X_2,"sys","tmp3","t",0);
-    X_18 := mosaic.leftfetchjoin(X_3,X_16);
-    X_13:bat[:oid,:flt]  := sql.bind(X_2,"sys","tmp3","f",0);
-    X_15 := mosaic.leftfetchjoin(X_3,X_13);
     X_10:bat[:oid,:bit]  := sql.bind(X_2,"sys","tmp3","b",0);
     X_12 := mosaic.leftfetchjoin(X_3,X_10);
-    X_19 := sql.resultSet(4,1,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","i","int",32,0,X_9);
-    sql.rsColumn(X_19,"sys.tmp3","b","boolean",1,0,X_12);
-    sql.rsColumn(X_19,"sys.tmp3","f","real",24,0,X_15);
-    sql.rsColumn(X_19,"sys.tmp3","t","timestamp",7,0,X_18);
-    X_34 := io.stdout();
-    sql.exportResult(X_34,X_19);
-end user.s16_1;
+    X_13:bat[:oid,:flt] := sql.bind(X_2,"sys","tmp3","f",0);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to