Changeset: c227444dae5e for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c227444dae5e Modified Files: sql/backends/monet5/rel_bin.c sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out Branch: Oct2020 Log Message:
use candidate difference in case statements, simplifies handling of 'else'/'elseif'. diffs (truncated from 1078 to 300 lines): diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c --- a/sql/backends/monet5/rel_bin.c +++ b/sql/backends/monet5/rel_bin.c @@ -683,15 +683,11 @@ exp2bin_case(backend *be, sql_exp *fe, s assert(cond); if (en->next) { - cond = stmt_unop(be, cond, not); - sql_subfunc *isnull = sql_bind_func(be->mvc->sa, be->mvc->session->schema, "isnull", bt, NULL, F_FUNC); - cond = stmt_binop(be, cond, stmt_unop(be, ncond, isnull), or); - stmt *s = stmt_uselect(be, cond, stmt_bool(be, 1), cmp_equal, NULL, 0/*anti*/, 0); - if (osel) - rsel = stmt_project(be, s, osel); - else - rsel = s; - osel = rsel; + /* osel - rsel */ + if (!osel) + osel = stmt_mirror(be, res); + stmt *d = stmt_tdiff(be, osel, rsel, NULL); + osel = rsel = stmt_project(be, d, osel); } } if (next_cond) { @@ -704,8 +700,10 @@ exp2bin_case(backend *be, sql_exp *fe, s else ncond = stmt_const(be, bin_first_column(be, left), ncond); } - stmt *s = stmt_uselect(be, ncond, stmt_bool(be, 1), cmp_equal, NULL, 0/*anti*/, 0); - if (rsel) + // else if (!ncond->cand && rsel) + // ncond = stmt_project(be, rsel, ncond); + stmt *s = stmt_uselect(be, ncond, stmt_bool(be, 1), cmp_equal, !ncond->cand?rsel:NULL, 0/*anti*/, 0); + if (rsel && ncond->cand) rsel = stmt_project(be, s, rsel); else rsel = s; 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,7 +34,7 @@ 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(); +barrier X_1093: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); @@ -43,612 +43,428 @@ barrier X_1298:bit := language.dataflow( 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]); - X_322:bat[:timestamp] := algebra.projection(C_318:bat[:oid], X_86:bat[:timestamp]); - X_323:bat[:timestamp] := bat.replace(X_299:bat[:timestamp], C_318:bat[:oid], X_322:bat[:timestamp], true:bit); - X_324:bat[:bit] := batcalc.not(X_315:bat[:bit]); - X_325:bat[:bit] := batcalc.isnil(X_315:bat[:bit]); - X_326:bat[:bit] := batcalc.or(X_324:bat[:bit], X_325:bat[:bit]); - C_328:bat[:oid] := algebra.thetaselect(X_326:bat[:bit], true:bit, "==":str); - C_329:bat[:oid] := algebra.projection(C_328:bat[:oid], C_311:bat[:oid]); - X_334:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2005-10-30 09:00:00.000000":timestamp, "2006-04-02 10:00:00.000000":timestamp, C_329:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_338:bat[:oid] := algebra.thetaselect(X_334:bat[:bit], true:bit, "==":str); - C_339:bat[:oid] := algebra.projection(C_338:bat[:oid], C_329:bat[:oid]); - X_345:bat[:timestamp] := algebra.projection(C_339:bat[:oid], X_61:bat[:timestamp]); - X_346:bat[:timestamp] := bat.replace(X_323:bat[:timestamp], C_339:bat[:oid], X_345:bat[:timestamp], true:bit); - X_347:bat[:bit] := batcalc.not(X_334:bat[:bit]); - X_350:bat[:bit] := batcalc.isnil(X_334:bat[:bit]); - X_352:bat[:bit] := batcalc.or(X_347:bat[:bit], X_350:bat[:bit]); - C_355:bat[:oid] := algebra.thetaselect(X_352:bat[:bit], true:bit, "==":str); - C_357:bat[:oid] := algebra.projection(C_355:bat[:oid], C_329:bat[:oid]); - X_361:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2006-04-02 10:00:00.000000":timestamp, "2006-10-29 09:00:00.000000":timestamp, C_357:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_363:bat[:oid] := algebra.thetaselect(X_361:bat[:bit], true:bit, "==":str); - C_364:bat[:oid] := algebra.projection(C_363:bat[:oid], C_357:bat[:oid]); - X_368:bat[:timestamp] := algebra.projection(C_364:bat[:oid], X_86:bat[:timestamp]); - X_369:bat[:timestamp] := bat.replace(X_346:bat[:timestamp], C_364:bat[:oid], X_368:bat[:timestamp], true:bit); - X_371:bat[:bit] := batcalc.not(X_361:bat[:bit]); - X_372:bat[:bit] := batcalc.isnil(X_361:bat[:bit]); - X_373:bat[:bit] := batcalc.or(X_371:bat[:bit], X_372:bat[:bit]); - C_375:bat[:oid] := algebra.thetaselect(X_373:bat[:bit], true:bit, "==":str); - C_376:bat[:oid] := algebra.projection(C_375:bat[:oid], C_357:bat[:oid]); - X_381:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2006-10-29 09:00:00.000000":timestamp, "2007-03-11 10:00:00.000000":timestamp, C_376:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_385:bat[:oid] := algebra.thetaselect(X_381:bat[:bit], true:bit, "==":str); - C_386:bat[:oid] := algebra.projection(C_385:bat[:oid], C_376:bat[:oid]); - X_392:bat[:timestamp] := algebra.projection(C_386:bat[:oid], X_61:bat[:timestamp]); - X_393:bat[:timestamp] := bat.replace(X_369:bat[:timestamp], C_386:bat[:oid], X_392:bat[:timestamp], true:bit); - X_394:bat[:bit] := batcalc.not(X_381:bat[:bit]); - X_397:bat[:bit] := batcalc.isnil(X_381:bat[:bit]); - X_399:bat[:bit] := batcalc.or(X_394:bat[:bit], X_397:bat[:bit]); - C_402:bat[:oid] := algebra.thetaselect(X_399:bat[:bit], true:bit, "==":str); - C_404:bat[:oid] := algebra.projection(C_402:bat[:oid], C_376:bat[:oid]); - X_408:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2007-03-11 10:00:00.000000":timestamp, "2007-11-04 09:00:00.000000":timestamp, C_404:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_411:bat[:oid] := algebra.thetaselect(X_408:bat[:bit], true:bit, "==":str); - C_412:bat[:oid] := algebra.projection(C_411:bat[:oid], C_404:bat[:oid]); - X_416:bat[:timestamp] := algebra.projection(C_412:bat[:oid], X_86:bat[:timestamp]); - X_417:bat[:timestamp] := bat.replace(X_393:bat[:timestamp], C_412:bat[:oid], X_416:bat[:timestamp], true:bit); - X_418:bat[:bit] := batcalc.not(X_408:bat[:bit]); - X_419:bat[:bit] := batcalc.isnil(X_408:bat[:bit]); - X_420:bat[:bit] := batcalc.or(X_418:bat[:bit], X_419:bat[:bit]); - C_422:bat[:oid] := algebra.thetaselect(X_420:bat[:bit], true:bit, "==":str); - C_423:bat[:oid] := algebra.projection(C_422:bat[:oid], C_404:bat[:oid]); - X_428:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2007-11-04 09:00:00.000000":timestamp, "2008-03-09 10:00:00.000000":timestamp, C_423:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_432:bat[:oid] := algebra.thetaselect(X_428:bat[:bit], true:bit, "==":str); - C_433:bat[:oid] := algebra.projection(C_432:bat[:oid], C_423:bat[:oid]); - X_439:bat[:timestamp] := algebra.projection(C_433:bat[:oid], X_61:bat[:timestamp]); - X_440:bat[:timestamp] := bat.replace(X_417:bat[:timestamp], C_433:bat[:oid], X_439:bat[:timestamp], true:bit); - X_441:bat[:bit] := batcalc.not(X_428:bat[:bit]); - X_444:bat[:bit] := batcalc.isnil(X_428:bat[:bit]); - X_446:bat[:bit] := batcalc.or(X_441:bat[:bit], X_444:bat[:bit]); - C_450:bat[:oid] := algebra.thetaselect(X_446:bat[:bit], true:bit, "==":str); - C_452:bat[:oid] := algebra.projection(C_450:bat[:oid], C_423:bat[:oid]); - X_456:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2008-03-09 10:00:00.000000":timestamp, "2008-11-02 09:00:00.000000":timestamp, C_452:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_458:bat[:oid] := algebra.thetaselect(X_456:bat[:bit], true:bit, "==":str); - C_459:bat[:oid] := algebra.projection(C_458:bat[:oid], C_452:bat[:oid]); - X_463:bat[:timestamp] := algebra.projection(C_459:bat[:oid], X_86:bat[:timestamp]); - X_464:bat[:timestamp] := bat.replace(X_440:bat[:timestamp], C_459:bat[:oid], X_463:bat[:timestamp], true:bit); - X_465:bat[:bit] := batcalc.not(X_456:bat[:bit]); - X_466:bat[:bit] := batcalc.isnil(X_456:bat[:bit]); - X_467:bat[:bit] := batcalc.or(X_465:bat[:bit], X_466:bat[:bit]); - C_469:bat[:oid] := algebra.thetaselect(X_467:bat[:bit], true:bit, "==":str); - C_470:bat[:oid] := algebra.projection(C_469:bat[:oid], C_452:bat[:oid]); - X_475:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2008-11-02 09:00:00.000000":timestamp, "2009-03-08 10:00:00.000000":timestamp, C_470:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_479:bat[:oid] := algebra.thetaselect(X_475:bat[:bit], true:bit, "==":str); - C_480:bat[:oid] := algebra.projection(C_479:bat[:oid], C_470:bat[:oid]); - X_486:bat[:timestamp] := algebra.projection(C_480:bat[:oid], X_61:bat[:timestamp]); - X_487:bat[:timestamp] := bat.replace(X_464:bat[:timestamp], C_480:bat[:oid], X_486:bat[:timestamp], true:bit); - X_489:bat[:bit] := batcalc.not(X_475:bat[:bit]); - X_492:bat[:bit] := batcalc.isnil(X_475:bat[:bit]); - X_494:bat[:bit] := batcalc.or(X_489:bat[:bit], X_492:bat[:bit]); - C_497:bat[:oid] := algebra.thetaselect(X_494:bat[:bit], true:bit, "==":str); - C_499:bat[:oid] := algebra.projection(C_497:bat[:oid], C_470:bat[:oid]); - X_503:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2009-03-08 10:00:00.000000":timestamp, "2009-11-01 09:00:00.000000":timestamp, C_499:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_505:bat[:oid] := algebra.thetaselect(X_503:bat[:bit], true:bit, "==":str); - C_506:bat[:oid] := algebra.projection(C_505:bat[:oid], C_499:bat[:oid]); - X_510:bat[:timestamp] := algebra.projection(C_506:bat[:oid], X_86:bat[:timestamp]); - X_511:bat[:timestamp] := bat.replace(X_487:bat[:timestamp], C_506:bat[:oid], X_510:bat[:timestamp], true:bit); - X_512:bat[:bit] := batcalc.not(X_503:bat[:bit]); - X_513:bat[:bit] := batcalc.isnil(X_503:bat[:bit]); - X_514:bat[:bit] := batcalc.or(X_512:bat[:bit], X_513:bat[:bit]); - C_516:bat[:oid] := algebra.thetaselect(X_514:bat[:bit], true:bit, "==":str); - C_517:bat[:oid] := algebra.projection(C_516:bat[:oid], C_499:bat[:oid]); - X_522:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2009-11-01 09:00:00.000000":timestamp, "2010-03-14 10:00:00.000000":timestamp, C_517:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_526:bat[:oid] := algebra.thetaselect(X_522:bat[:bit], true:bit, "==":str); - C_527:bat[:oid] := algebra.projection(C_526:bat[:oid], C_517:bat[:oid]); - X_533:bat[:timestamp] := algebra.projection(C_527:bat[:oid], X_61:bat[:timestamp]); - X_534:bat[:timestamp] := bat.replace(X_511:bat[:timestamp], C_527:bat[:oid], X_533:bat[:timestamp], true:bit); - X_535:bat[:bit] := batcalc.not(X_522:bat[:bit]); - X_538:bat[:bit] := batcalc.isnil(X_522:bat[:bit]); - X_540:bat[:bit] := batcalc.or(X_535:bat[:bit], X_538:bat[:bit]); - C_543:bat[:oid] := algebra.thetaselect(X_540:bat[:bit], true:bit, "==":str); - C_545:bat[:oid] := algebra.projection(C_543:bat[:oid], C_517:bat[:oid]); - X_549:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2010-03-14 10:00:00.000000":timestamp, "2010-11-07 09:00:00.000000":timestamp, C_545:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_551:bat[:oid] := algebra.thetaselect(X_549:bat[:bit], true:bit, "==":str); - C_552:bat[:oid] := algebra.projection(C_551:bat[:oid], C_545:bat[:oid]); - X_556:bat[:timestamp] := algebra.projection(C_552:bat[:oid], X_86:bat[:timestamp]); - X_557:bat[:timestamp] := bat.replace(X_534:bat[:timestamp], C_552:bat[:oid], X_556:bat[:timestamp], true:bit); - X_559:bat[:bit] := batcalc.not(X_549:bat[:bit]); - X_560:bat[:bit] := batcalc.isnil(X_549:bat[:bit]); - X_561:bat[:bit] := batcalc.or(X_559:bat[:bit], X_560:bat[:bit]); - C_563:bat[:oid] := algebra.thetaselect(X_561:bat[:bit], true:bit, "==":str); - C_564:bat[:oid] := algebra.projection(C_563:bat[:oid], C_545:bat[:oid]); - X_569:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2010-11-07 09:00:00.000000":timestamp, "2011-03-13 10:00:00.000000":timestamp, C_564:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_573:bat[:oid] := algebra.thetaselect(X_569:bat[:bit], true:bit, "==":str); - C_574:bat[:oid] := algebra.projection(C_573:bat[:oid], C_564:bat[:oid]); - X_580:bat[:timestamp] := algebra.projection(C_574:bat[:oid], X_61:bat[:timestamp]); - X_581:bat[:timestamp] := bat.replace(X_557:bat[:timestamp], C_574:bat[:oid], X_580:bat[:timestamp], true:bit); - X_582:bat[:bit] := batcalc.not(X_569:bat[:bit]); - X_585:bat[:bit] := batcalc.isnil(X_569:bat[:bit]); - X_587:bat[:bit] := batcalc.or(X_582:bat[:bit], X_585:bat[:bit]); - C_590:bat[:oid] := algebra.thetaselect(X_587:bat[:bit], true:bit, "==":str); - C_592:bat[:oid] := algebra.projection(C_590:bat[:oid], C_564:bat[:oid]); - X_596:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2011-03-13 10:00:00.000000":timestamp, "2011-11-06 09:00:00.000000":timestamp, C_592:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_599:bat[:oid] := algebra.thetaselect(X_596:bat[:bit], true:bit, "==":str); - C_600:bat[:oid] := algebra.projection(C_599:bat[:oid], C_592:bat[:oid]); - X_604:bat[:timestamp] := algebra.projection(C_600:bat[:oid], X_86:bat[:timestamp]); - X_605:bat[:timestamp] := bat.replace(X_581:bat[:timestamp], C_600:bat[:oid], X_604:bat[:timestamp], true:bit); - X_606:bat[:bit] := batcalc.not(X_596:bat[:bit]); - X_607:bat[:bit] := batcalc.isnil(X_596:bat[:bit]); - X_608:bat[:bit] := batcalc.or(X_606:bat[:bit], X_607:bat[:bit]); - C_610:bat[:oid] := algebra.thetaselect(X_608:bat[:bit], true:bit, "==":str); - C_611:bat[:oid] := algebra.projection(C_610:bat[:oid], C_592:bat[:oid]); - X_616:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2011-11-06 09:00:00.000000":timestamp, "2012-03-11 10:00:00.000000":timestamp, C_611:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_620:bat[:oid] := algebra.thetaselect(X_616:bat[:bit], true:bit, "==":str); - C_621:bat[:oid] := algebra.projection(C_620:bat[:oid], C_611:bat[:oid]); - X_627:bat[:timestamp] := algebra.projection(C_621:bat[:oid], X_61:bat[:timestamp]); - X_628:bat[:timestamp] := bat.replace(X_605:bat[:timestamp], C_621:bat[:oid], X_627:bat[:timestamp], true:bit); - X_629:bat[:bit] := batcalc.not(X_616:bat[:bit]); - X_632:bat[:bit] := batcalc.isnil(X_616:bat[:bit]); - X_634:bat[:bit] := batcalc.or(X_629:bat[:bit], X_632:bat[:bit]); - C_638:bat[:oid] := algebra.thetaselect(X_634:bat[:bit], true:bit, "==":str); - C_640:bat[:oid] := algebra.projection(C_638:bat[:oid], C_611:bat[:oid]); - X_644:bat[:bit] := batcalc.between(X_45:bat[:timestamp], "2012-03-11 10:00:00.000000":timestamp, "2012-11-04 09:00:00.000000":timestamp, C_640:bat[:oid], false:bit, true:bit, false:bit, false:bit, false:bit); - C_646:bat[:oid] := algebra.thetaselect(X_644:bat[:bit], true:bit, "==":str); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list