Changeset: 0105c150d9d1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0105c150d9d1
Modified Files:
        monetdb5/modules/mal/mat.c
        sql/backends/monet5/sql.c
        sql/storage/bat/bat_storage.c
        sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.out
        
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
Branch: unlock
Log Message:

some more candidate-msk handling


diffs (truncated from 1269 to 300 lines):

diff --git a/monetdb5/modules/mal/mat.c b/monetdb5/modules/mal/mat.c
--- a/monetdb5/modules/mal/mat.c
+++ b/monetdb5/modules/mal/mat.c
@@ -49,8 +49,8 @@ MATpackInternal(Client cntxt, MalBlkPtr 
        BAT *b, *bn;
        BUN cap = 0;
        int tt = TYPE_any;
+       int rt = getArgType(mb, p, 0), unmask = 0;
        (void) cntxt;
-       (void) mb;
 
        for (i = 1; i < p->argc; i++) {
                bat bid = stk->stk[getArg(p,i)].val.bval;
@@ -58,7 +58,7 @@ MATpackInternal(Client cntxt, MalBlkPtr 
                if( b ){
                        if (tt == TYPE_any)
                                tt = b->ttype;
-                       if ((tt != TYPE_void && b->ttype != TYPE_void) && tt != 
b->ttype)
+                       if ((tt != TYPE_void && b->ttype != TYPE_void && 
b->ttype != TYPE_msk) && tt != b->ttype)
                                throw(MAL, "mat.pack", "incompatible 
arguments");
                        cap += BATcount(b);
                }
@@ -68,12 +68,18 @@ MATpackInternal(Client cntxt, MalBlkPtr 
                return MAL_SUCCEED;
        }
 
+       if (tt == TYPE_msk && rt == newBatType(TYPE_oid)) {
+               tt = TYPE_oid;
+               unmask = 1;
+       }
        bn = COLnew(0, tt, cap, TRANSIENT);
        if (bn == NULL)
                throw(MAL, "mat.pack", SQLSTATE(HY013) MAL_MALLOC_FAIL);
 
        for (i = 1; i < p->argc; i++) {
-               b = BATdescriptor(stk->stk[getArg(p,i)].val.ival);
+               BAT *ob = b = BATdescriptor(stk->stk[getArg(p,i)].val.ival);
+               if (unmask && b && b->ttype == TYPE_msk)
+                       b = BATunmask(b);
                if( b ){
                        if (BATcount(bn) == 0) {
                                BAThseqbase(bn, b->hseqbase);
@@ -86,6 +92,8 @@ MATpackInternal(Client cntxt, MalBlkPtr 
                        }
                        BBPunfix(b->batCacheid);
                }
+               if (b != ob)
+                       BBPunfix(ob->batCacheid);
        }
        if( !(!bn->tnil || !bn->tnonil)){
                BBPkeepref(*ret = bn->batCacheid);
@@ -113,9 +121,13 @@ MATpackIncrement(Client cntxt, MalBlkPtr
                throw(MAL, "mat.pack", SQLSTATE(HY002) RUNTIME_OBJECT_MISSING);
 
        if ( getArgType(mb,p,2) == TYPE_int){
+               BAT *ob = b;
                /* first step, estimate with some slack */
                pieces = stk->stk[getArg(p,2)].val.ival;
-               bn = COLnew(b->hseqbase, ATOMtype(b->ttype), (BUN)(1.2 * 
BATcount(b) * pieces), TRANSIENT);
+               int tt = ATOMtype(b->ttype);
+               if (b->ttype == TYPE_msk)
+                       tt = TYPE_oid;
+               bn = COLnew(b->hseqbase, tt, (BUN)(1.2 * BATcount(b) * pieces), 
TRANSIENT);
                if (bn == NULL) {
                        BBPunfix(b->batCacheid);
                        throw(MAL, "mat.pack", SQLSTATE(HY013) MAL_MALLOC_FAIL);
@@ -131,19 +143,26 @@ MATpackIncrement(Client cntxt, MalBlkPtr
                        }
                }
                BATtseqbase(bn, b->tseqbase);
-               if (BATappend(bn, b, NULL, false) != GDK_SUCCEED) {
+               if (b->ttype == TYPE_msk)
+                       b = BATunmask(b);
+               if (b && BATappend(bn, b, NULL, false) != GDK_SUCCEED) {
                        BBPunfix(bn->batCacheid);
                        BBPunfix(b->batCacheid);
                        throw(MAL, "mat.pack", GDK_EXCEPTION);
                }
                bn->unused = (pieces-1); /* misuse "unused" field */
                BBPkeepref(*ret = bn->batCacheid);
-               BBPunfix(b->batCacheid);
+               if (b)
+                       BBPunfix(b->batCacheid);
+               if (b != ob)
+                       BBPunfix(ob->batCacheid);
                if( !(!bn->tnil || !bn->tnonil))
                        throw(MAL, "mat.packIncrement", "INTERNAL ERROR" " 
bn->tnil %d bn->tnonil %d", bn->tnil, bn->tnonil);
        } else {
                /* remaining steps */
-               bb = BATdescriptor(stk->stk[getArg(p,2)].val.ival);
+               BAT *obb = bb = BATdescriptor(stk->stk[getArg(p,2)].val.ival);
+               if (bb && bb->ttype == TYPE_msk)
+                       bb = BATunmask(bb);
                if ( bb ){
                        if (BATcount(b) == 0) {
                                BAThseqbase(b, bb->hseqbase);
@@ -156,6 +175,8 @@ MATpackIncrement(Client cntxt, MalBlkPtr
                        }
                        BBPunfix(bb->batCacheid);
                }
+               if (bb != obb)
+                       BBPunfix(obb->batCacheid);
                b->unused--;
                if(b->unused == 0)
                        if (BATsetaccess(b, BAT_READ) != GDK_SUCCEED) {
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
@@ -1854,7 +1854,7 @@ mvc_delete_wrap(Client cntxt, MalBlkPtr 
                tpe = TYPE_bat;
        if (tpe == TYPE_bat && (b = BATdescriptor(*(bat *) ins)) == NULL)
                throw(SQL, "sql.delete", SQLSTATE(HY005) "Cannot access column 
descriptor");
-       if (tpe != TYPE_bat || (b->ttype != TYPE_oid && b->ttype != TYPE_void)) 
{
+       if (tpe != TYPE_bat || (b->ttype != TYPE_oid && b->ttype != TYPE_void 
&& b->ttype != TYPE_msk)) {
                if (b)
                        BBPunfix(b->batCacheid);
                throw(SQL, "sql.delete", SQLSTATE(HY005) "Cannot access column 
descriptor");
diff --git a/sql/storage/bat/bat_storage.c b/sql/storage/bat/bat_storage.c
--- a/sql/storage/bat/bat_storage.c
+++ b/sql/storage/bat/bat_storage.c
@@ -831,7 +831,11 @@ delta_delete_bat( storage *bat, BAT *i, 
 {
        /* update ids */
        msk T = TRUE;
-       BAT *t = BATconstant(i->hseqbase, TYPE_msk, &T, BATcount(i), TRANSIENT);
+       BAT *t, *oi = i;
+
+       if (i->ttype == TYPE_msk)
+                       i = BATunmask(i);
+       t = BATconstant(i->hseqbase, TYPE_msk, &T, BATcount(i), TRANSIENT);
        int ok = LOG_OK;
 
        assert(i->ttype != TYPE_msk);
@@ -839,6 +843,8 @@ delta_delete_bat( storage *bat, BAT *i, 
                ok = cs_update_bat( &bat->cs, i, t, is_new);
        }
        BBPunfix(t->batCacheid);
+       if (i != oi)
+               BBPunfix(i->batCacheid);
        return ok;
 }
 
diff --git a/sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.out 
b/sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.out
--- a/sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.out
+++ b/sql/test/BugTracker-2015/Tests/readonly.Bug-3709.stable.out
@@ -40,18 +40,18 @@ stdout of test 'readonly.Bug-3709` in di
 % usec,        statement # name
 % bigint,      clob # type
 % 3,   134 # length
-[ 15,  "X_1=0@0:void := querylog.define(\"trace select * from s10;\":str, 
\"default_pipe\":str, 13:int);"      ]
-[ 22,  "X_4=0:int := sql.mvc();"       ]
-[ 92,  "X_16=[1]:bat[:str] := bat.pack(\"int\":str);"  ]
-[ 153, "X_17=[1]:bat[:int] := bat.pack(32:int);"       ]
-[ 119, "X_15=[1]:bat[:str] := bat.pack(\"x\":str);"    ]
-[ 187, "X_14=[1]:bat[:str] := bat.pack(\"sys.s10\":str);"      ]
-[ 208, "X_18=[1]:bat[:int] := bat.pack(0:int);"        ]
-[ 264, "C_5=[1]:bat[:cnd] := sql.tid(X_4=0:int, \"sys\":str, \"s10\":str); # 
select: dense"    ]
-[ 30,  "X_11=[1]:bat[:int] := sql.bind(X_4=0:int, \"sys\":str, \"s10\":str, 
\"x\":str, 0:int);"        ]
-[ 24,  "X_12=[1]:bat[:int] := algebra.projection(C_5=[1]:bat[:cnd], 
X_11=[1]:bat[:int]); # project_int"        ]
-[ 806, "barrier X_70=false:bit := language.dataflow();"        ]
-[ 65,  "sql.resultSet(X_14=[1]:bat[:str], X_15=[1]:bat[:str], 
X_16=[1]:bat[:str], X_17=[1]:bat[:int], X_18=[1]:bat[:int], 
X_12=[1]:bat[:int]);"        ]
+[ 5,   "X_1=0@0:void := querylog.define(\"trace select * from s10;\":str, 
\"default_pipe\":str, 13:int);"      ]
+[ 4,   "X_4=0:int := sql.mvc();"       ]
+[ 20,  "X_14=[1]:bat[:str] := bat.pack(\"sys.s10\":str);"      ]
+[ 22,  "X_18=[1]:bat[:int] := bat.pack(0:int);"        ]
+[ 20,  "X_15=[1]:bat[:str] := bat.pack(\"x\":str);"    ]
+[ 18,  "X_17=[1]:bat[:int] := bat.pack(32:int);"       ]
+[ 22,  "X_16=[1]:bat[:str] := bat.pack(\"int\":str);"  ]
+[ 134, "C_5=[1]:bat[:cnd] := sql.tid(X_4=0:int, \"sys\":str, \"s10\":str); # 
select: dense"    ]
+[ 10,  "X_11=[1]:bat[:int] := sql.bind(X_4=0:int, \"sys\":str, \"s10\":str, 
\"x\":str, 0:int);"        ]
+[ 11,  "X_12=[1]:bat[:int] := algebra.projection(C_5=[1]:bat[:cnd], 
X_11=[1]:bat[:int]); # project_int"        ]
+[ 350, "barrier X_70=false:bit := language.dataflow();"        ]
+[ 24,  "sql.resultSet(X_14=[1]:bat[:str], X_15=[1]:bat[:str], 
X_16=[1]:bat[:str], X_17=[1]:bat[:int], X_18=[1]:bat[:int], 
X_12=[1]:bat[:int]);"        ]
 #rollback;
 #drop table s10; 
 
diff --git 
a/sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
 
b/sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
--- 
a/sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
+++ 
b/sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
@@ -34,660 +34,441 @@ stdout of test 'duplicates-not-eliminate
 % 1023 # length
 function user.main():void;
     X_1:void := querylog.define("explain select sys.timestamp_to_str(case when 
task0.\"sys_created_on\" >= \\'1999-10-31 09:00:00\\' and 
task0.\"sys_created_on\" < \\'2000-04-02 10:00:00\\' then 
task0.\"sys_created_on\" + interval \\'-28800\\' second when 
task0.\"sys_created_on\" >= \\'2000-04-02 10:00:00\\' and 
task0.\"sys_created_on\" < \\'2000-10-29 09:00:00\\' then 
task0.\"sys_created_on\" + interval \\'-25200\\' second when 
task0.\"sys_created_on\" >= \\'2000-10-29 09:00:00\\' and 
task0.\"sys_created_on\" < \\'2001-04-01 10:00:00\\' then 
task0.\"sys_created_on\" + interval \\'-28800\\' second when 
task0.\"sys_created_on\" >= \\'2001-04-01 10:00:00\\' and 
task0.\"sys_created_on\" < \\'2001-10-28 09:00:00\\' then 
task0.\"sys_created_on\" + interval \\'-25200\\' second when 
task0.\"sys_created_on\" >= \\'2001-10-28 09:00:00\\' and 
task0.\"sys_created_on\" < \\'2002-04-07 10:00:00\\' then 
task0.\"sys_created_on\" + interval \\'-28800\\' second when 
task0.\"sys_created_on\" >= \\'20
 02-04-07 10:00:00\\' and t
-barrier X_1298:bit := language.dataflow();
-    X_43:bat[:str] := bat.new(nil:str);
-    X_56:bat[:timestamp] := algebra.project(X_43:bat[:str], nil:timestamp);
-    X_45:bat[:timestamp] := bat.new(nil:timestamp);
-    X_51:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "1999-10-31 
09:00:00.000000":timestamp, "2000-04-02 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    C_58:bat[:oid] := algebra.thetaselect(X_51:bat[:bit], true:bit, "==":str);
-    X_61:bat[:timestamp] := 
batmtime.timestamp_add_msec_interval(X_45:bat[:timestamp], -28800000:lng);
-    X_64:bat[:timestamp] := algebra.projection(C_58:bat[:oid], 
X_61:bat[:timestamp]);
-    X_65:bat[:timestamp] := bat.replace(X_56:bat[:timestamp], C_58:bat[:oid], 
X_64:bat[:timestamp], true:bit);
-    X_66:bat[:bit] := batcalc.not(X_51:bat[:bit]);
-    X_69:bat[:bit] := batcalc.isnil(X_51:bat[:bit]);
-    X_71:bat[:bit] := batcalc.or(X_66:bat[:bit], X_69:bat[:bit]);
-    C_75:bat[:oid] := algebra.thetaselect(X_71:bat[:bit], true:bit, "==":str);
-    X_80:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2000-04-02 
10:00:00.000000":timestamp, "2000-10-29 09:00:00.000000":timestamp, 
C_75:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_82:bat[:oid] := algebra.thetaselect(X_80:bat[:bit], true:bit, "==":str);
-    C_83:bat[:oid] := algebra.projection(C_82:bat[:oid], C_75:bat[:oid]);
-    X_86:bat[:timestamp] := 
batmtime.timestamp_add_msec_interval(X_45:bat[:timestamp], -25200000:lng);
-    X_87:bat[:timestamp] := algebra.projection(C_83:bat[:oid], 
X_86:bat[:timestamp]);
-    X_88:bat[:timestamp] := bat.replace(X_65:bat[:timestamp], C_83:bat[:oid], 
X_87:bat[:timestamp], true:bit);
-    X_89:bat[:bit] := batcalc.not(X_80:bat[:bit]);
-    X_90:bat[:bit] := batcalc.isnil(X_80:bat[:bit]);
-    X_91:bat[:bit] := batcalc.or(X_89:bat[:bit], X_90:bat[:bit]);
-    C_93:bat[:oid] := algebra.thetaselect(X_91:bat[:bit], true:bit, "==":str);
-    C_94:bat[:oid] := algebra.projection(C_93:bat[:oid], C_75:bat[:oid]);
-    X_99:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2000-10-29 
09:00:00.000000":timestamp, "2001-04-01 10:00:00.000000":timestamp, 
C_94:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_103:bat[:oid] := algebra.thetaselect(X_99:bat[:bit], true:bit, "==":str);
-    C_104:bat[:oid] := algebra.projection(C_103:bat[:oid], C_94:bat[:oid]);
-    X_110:bat[:timestamp] := algebra.projection(C_104:bat[:oid], 
X_61:bat[:timestamp]);
-    X_111:bat[:timestamp] := bat.replace(X_88:bat[:timestamp], 
C_104:bat[:oid], X_110:bat[:timestamp], true:bit);
-    X_113:bat[:bit] := batcalc.not(X_99:bat[:bit]);
-    X_116:bat[:bit] := batcalc.isnil(X_99:bat[:bit]);
-    X_118:bat[:bit] := batcalc.or(X_113:bat[:bit], X_116:bat[:bit]);
-    C_121:bat[:oid] := algebra.thetaselect(X_118:bat[:bit], true:bit, 
"==":str);
-    C_123:bat[:oid] := algebra.projection(C_121:bat[:oid], C_94:bat[:oid]);
-    X_127:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2001-04-01 
10:00:00.000000":timestamp, "2001-10-28 09:00:00.000000":timestamp, 
C_123:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_129:bat[:oid] := algebra.thetaselect(X_127:bat[:bit], true:bit, 
"==":str);
-    C_130:bat[:oid] := algebra.projection(C_129:bat[:oid], C_123:bat[:oid]);
-    X_134:bat[:timestamp] := algebra.projection(C_130:bat[:oid], 
X_86:bat[:timestamp]);
-    X_135:bat[:timestamp] := bat.replace(X_111:bat[:timestamp], 
C_130:bat[:oid], X_134:bat[:timestamp], true:bit);
-    X_136:bat[:bit] := batcalc.not(X_127:bat[:bit]);
-    X_137:bat[:bit] := batcalc.isnil(X_127:bat[:bit]);
-    X_138:bat[:bit] := batcalc.or(X_136:bat[:bit], X_137:bat[:bit]);
-    C_140:bat[:oid] := algebra.thetaselect(X_138:bat[:bit], true:bit, 
"==":str);
-    C_141:bat[:oid] := algebra.projection(C_140:bat[:oid], C_123:bat[:oid]);
-    X_146:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2001-10-28 
09:00:00.000000":timestamp, "2002-04-07 10:00:00.000000":timestamp, 
C_141:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_150:bat[:oid] := algebra.thetaselect(X_146:bat[:bit], true:bit, 
"==":str);
-    C_151:bat[:oid] := algebra.projection(C_150:bat[:oid], C_141:bat[:oid]);
-    X_157:bat[:timestamp] := algebra.projection(C_151:bat[:oid], 
X_61:bat[:timestamp]);
-    X_158:bat[:timestamp] := bat.replace(X_135:bat[:timestamp], 
C_151:bat[:oid], X_157:bat[:timestamp], true:bit);
-    X_159:bat[:bit] := batcalc.not(X_146:bat[:bit]);
-    X_162:bat[:bit] := batcalc.isnil(X_146:bat[:bit]);
-    X_164:bat[:bit] := batcalc.or(X_159:bat[:bit], X_162:bat[:bit]);
-    C_167:bat[:oid] := algebra.thetaselect(X_164:bat[:bit], true:bit, 
"==":str);
-    C_169:bat[:oid] := algebra.projection(C_167:bat[:oid], C_141:bat[:oid]);
-    X_173:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2002-04-07 
10:00:00.000000":timestamp, "2002-10-27 09:00:00.000000":timestamp, 
C_169:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_175:bat[:oid] := algebra.thetaselect(X_173:bat[:bit], true:bit, 
"==":str);
-    C_176:bat[:oid] := algebra.projection(C_175:bat[:oid], C_169:bat[:oid]);
-    X_180:bat[:timestamp] := algebra.projection(C_176:bat[:oid], 
X_86:bat[:timestamp]);
-    X_181:bat[:timestamp] := bat.replace(X_158:bat[:timestamp], 
C_176:bat[:oid], X_180:bat[:timestamp], true:bit);
-    X_183:bat[:bit] := batcalc.not(X_173:bat[:bit]);
-    X_184:bat[:bit] := batcalc.isnil(X_173:bat[:bit]);
-    X_185:bat[:bit] := batcalc.or(X_183:bat[:bit], X_184:bat[:bit]);
-    C_187:bat[:oid] := algebra.thetaselect(X_185:bat[:bit], true:bit, 
"==":str);
-    C_188:bat[:oid] := algebra.projection(C_187:bat[:oid], C_169:bat[:oid]);
-    X_193:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2002-10-27 
09:00:00.000000":timestamp, "2003-04-06 10:00:00.000000":timestamp, 
C_188:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_197:bat[:oid] := algebra.thetaselect(X_193:bat[:bit], true:bit, 
"==":str);
-    C_198:bat[:oid] := algebra.projection(C_197:bat[:oid], C_188:bat[:oid]);
-    X_204:bat[:timestamp] := algebra.projection(C_198:bat[:oid], 
X_61:bat[:timestamp]);
-    X_205:bat[:timestamp] := bat.replace(X_181:bat[:timestamp], 
C_198:bat[:oid], X_204:bat[:timestamp], true:bit);
-    X_206:bat[:bit] := batcalc.not(X_193:bat[:bit]);
-    X_209:bat[:bit] := batcalc.isnil(X_193:bat[:bit]);
-    X_211:bat[:bit] := batcalc.or(X_206:bat[:bit], X_209:bat[:bit]);
-    C_214:bat[:oid] := algebra.thetaselect(X_211:bat[:bit], true:bit, 
"==":str);
-    C_216:bat[:oid] := algebra.projection(C_214:bat[:oid], C_188:bat[:oid]);
-    X_220:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2003-04-06 
10:00:00.000000":timestamp, "2003-10-26 09:00:00.000000":timestamp, 
C_216:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_223:bat[:oid] := algebra.thetaselect(X_220:bat[:bit], true:bit, 
"==":str);
-    C_224:bat[:oid] := algebra.projection(C_223:bat[:oid], C_216:bat[:oid]);
-    X_228:bat[:timestamp] := algebra.projection(C_224:bat[:oid], 
X_86:bat[:timestamp]);
-    X_229:bat[:timestamp] := bat.replace(X_205:bat[:timestamp], 
C_224:bat[:oid], X_228:bat[:timestamp], true:bit);
-    X_230:bat[:bit] := batcalc.not(X_220:bat[:bit]);
-    X_231:bat[:bit] := batcalc.isnil(X_220:bat[:bit]);
-    X_232:bat[:bit] := batcalc.or(X_230:bat[:bit], X_231:bat[:bit]);
-    C_234:bat[:oid] := algebra.thetaselect(X_232:bat[:bit], true:bit, 
"==":str);
-    C_235:bat[:oid] := algebra.projection(C_234:bat[:oid], C_216:bat[:oid]);
-    X_240:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2003-10-26 
09:00:00.000000":timestamp, "2004-04-04 10:00:00.000000":timestamp, 
C_235:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_244:bat[:oid] := algebra.thetaselect(X_240:bat[:bit], true:bit, 
"==":str);
-    C_245:bat[:oid] := algebra.projection(C_244:bat[:oid], C_235:bat[:oid]);
-    X_251:bat[:timestamp] := algebra.projection(C_245:bat[:oid], 
X_61:bat[:timestamp]);
-    X_252:bat[:timestamp] := bat.replace(X_229:bat[:timestamp], 
C_245:bat[:oid], X_251:bat[:timestamp], true:bit);
-    X_253:bat[:bit] := batcalc.not(X_240:bat[:bit]);
-    X_256:bat[:bit] := batcalc.isnil(X_240:bat[:bit]);
-    X_258:bat[:bit] := batcalc.or(X_253:bat[:bit], X_256:bat[:bit]);
-    C_262:bat[:oid] := algebra.thetaselect(X_258:bat[:bit], true:bit, 
"==":str);
-    C_264:bat[:oid] := algebra.projection(C_262:bat[:oid], C_235:bat[:oid]);
-    X_268:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2004-04-04 
10:00:00.000000":timestamp, "2004-10-31 09:00:00.000000":timestamp, 
C_264:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_270:bat[:oid] := algebra.thetaselect(X_268:bat[:bit], true:bit, 
"==":str);
-    C_271:bat[:oid] := algebra.projection(C_270:bat[:oid], C_264:bat[:oid]);
-    X_275:bat[:timestamp] := algebra.projection(C_271:bat[:oid], 
X_86:bat[:timestamp]);
-    X_276:bat[:timestamp] := bat.replace(X_252:bat[:timestamp], 
C_271:bat[:oid], X_275:bat[:timestamp], true:bit);
-    X_277:bat[:bit] := batcalc.not(X_268:bat[:bit]);
-    X_278:bat[:bit] := batcalc.isnil(X_268:bat[:bit]);
-    X_279:bat[:bit] := batcalc.or(X_277:bat[:bit], X_278:bat[:bit]);
-    C_281:bat[:oid] := algebra.thetaselect(X_279:bat[:bit], true:bit, 
"==":str);
-    C_282:bat[:oid] := algebra.projection(C_281:bat[:oid], C_264:bat[:oid]);
-    X_287:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2004-10-31 
09:00:00.000000":timestamp, "2005-04-03 10:00:00.000000":timestamp, 
C_282:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_291:bat[:oid] := algebra.thetaselect(X_287:bat[:bit], true:bit, 
"==":str);
-    C_292:bat[:oid] := algebra.projection(C_291:bat[:oid], C_282:bat[:oid]);
-    X_298:bat[:timestamp] := algebra.projection(C_292:bat[:oid], 
X_61:bat[:timestamp]);
-    X_299:bat[:timestamp] := bat.replace(X_276:bat[:timestamp], 
C_292:bat[:oid], X_298:bat[:timestamp], true:bit);
-    X_301:bat[:bit] := batcalc.not(X_287:bat[:bit]);
-    X_304:bat[:bit] := batcalc.isnil(X_287:bat[:bit]);
-    X_306:bat[:bit] := batcalc.or(X_301:bat[:bit], X_304:bat[:bit]);
-    C_309:bat[:oid] := algebra.thetaselect(X_306:bat[:bit], true:bit, 
"==":str);
-    C_311:bat[:oid] := algebra.projection(C_309:bat[:oid], C_282:bat[:oid]);
-    X_315:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2005-04-03 
10:00:00.000000":timestamp, "2005-10-30 09:00:00.000000":timestamp, 
C_311:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit);
-    C_317:bat[:oid] := algebra.thetaselect(X_315:bat[:bit], true:bit, 
"==":str);
-    C_318:bat[:oid] := algebra.projection(C_317:bat[:oid], C_311:bat[:oid]);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to