Changeset: 5517ce066927 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5517ce066927
Modified Files:
        sql/backends/monet5/rel_bin.c
        sql/server/rel_dump.c
        sql/server/rel_optimizer.c
        
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
Branch: default
Log Message:

make sure we use semantics for X is NULL optimizations as well


diffs (truncated from 509 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
@@ -956,7 +956,7 @@ exp_bin(backend *be, sql_exp *e, stmt *l
 
                                        if (is_atom(re->type) && re->l && 
atom_null((atom*)re->l) &&
                                            is_atom(re2->type) && re2->l && 
atom_null((atom*)re2->l)) {
-                                               s = sql_unop_(be, NULL, 
"isnull", l);
+                                               assert(0); // old hack is gone 
...
                                        } else {
                                                assert(lf && rf && a);
                                                s = stmt_binop(be, 
@@ -984,7 +984,20 @@ exp_bin(backend *be, sql_exp *e, stmt *l
                                                        
compare_func((comp_type)e->flag, is_anti(e)),
                                                        tail_type(l), 
tail_type(l), F_FUNC);
                                        assert(f);
-                                       s = stmt_binop(be, l, r, f);
+                                       if (is_semantics(e)) {
+                                               if (exp_is_null(sql, e->l) && 
exp_is_null(sql, e->r)) {
+                                                       s = stmt_bool(be, 
!is_anti(e));
+                                               } else {
+                                                       list *args = 
sa_list(sql->sa);
+                                                       /* add nil semantics 
bit */
+                                                       list_append(args, l);
+                                                       list_append(args, r);
+                                                       list_append(args, 
stmt_bool(be, 1));
+                                                       s = stmt_Nop(be, 
stmt_list(be, args), f);
+                                               }
+                                       } else {
+                                               s = stmt_binop(be, l, r, f);
+                                       }
                                } else {
                                        /* this can still be a join (as 
relational algebra and single value subquery results still means joins */
                                        s = stmt_uselect(be, l, r, 
(comp_type)e->flag, sel, is_anti(e), is_semantics(e));
diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -1299,6 +1299,8 @@ exp_read(mvc *sql, sql_rel *lrel, sql_re
                                        ne->flag |= CMP_BETWEEN;
                                if (is_anti(exp))
                                        set_anti(ne);
+                               if (is_semantics(exp))
+                                       set_semantics(ne);
                                return ne;
                        }
                }
diff --git a/sql/server/rel_optimizer.c b/sql/server/rel_optimizer.c
--- a/sql/server/rel_optimizer.c
+++ b/sql/server/rel_optimizer.c
@@ -7366,9 +7366,11 @@ rel_simplify_predicates(mvc *sql, sql_re
                                                l = args->h->data;
                                                if (exp_subtype(l)) {
                                                        r = exp_atom(sql->sa, 
atom_general(sql->sa, exp_subtype(l), NULL));
-                                                       e = 
exp_compare2(sql->sa, l, r, r, 3);
+                                                       e = 
exp_compare(sql->sa, l, r, cmp_equal);
                                                        if (e && !flag)
                                                                set_anti(e);
+                                                       if (e)
+                                                               
set_semantics(e);
                                                }
                                        } else if (!f->func->s && 
!strcmp(f->func->base.name, "not")) {
                                                if (is_atom(r->type) && r->l) { 
/* direct literal */
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,250 +34,199 @@ stdout of test 'duplicates-not-eliminate
 % 1023 # length
 function user.s4_0():void;
     X_142: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\" >= \\'
 2002-04-07 10:00:00\\' and
-barrier X_1766:bit := language.dataflow();
-    X_1608:bat[:str] := bat.pack("sys.":str);
-    X_1609:bat[:str] := bat.pack("yearref":str);
-    X_1610:bat[:str] := bat.pack("clob":str);
-    X_1611:bat[:int] := bat.pack(0:int);
-    X_188:bat[:timestamp] := bat.new(nil:timestamp);
-    X_200:bat[:bit] := batcalc.between(X_188: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);
-    X_203:bat[:bit] := batcalc.isnil(X_200:bat[:bit]);
-    X_217:bat[:bit] := batcalc.ifthenelse(X_203:bat[:bit], false:bit, 
X_200:bat[:bit]);
-    X_1454:bat[:timestamp] := mal.manifold("mtime":str, 
"timestamp_add_msec_interval":str, X_188:bat[:timestamp], -28800000:lng);
-    X_229:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2000-04-02 
10:00:00.000000":timestamp, "2000-10-29 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_230:bat[:bit] := batcalc.isnil(X_229:bat[:bit]);
-    X_245:bat[:bit] := batcalc.ifthenelse(X_230:bat[:bit], false:bit, 
X_229:bat[:bit]);
-    X_1458:bat[:timestamp] := mal.manifold("mtime":str, 
"timestamp_add_msec_interval":str, X_188:bat[:timestamp], -25200000:lng);
-    X_256:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2000-10-29 
09:00:00.000000":timestamp, "2001-04-01 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_257:bat[:bit] := batcalc.isnil(X_256:bat[:bit]);
-    X_271:bat[:bit] := batcalc.ifthenelse(X_257:bat[:bit], false:bit, 
X_256:bat[:bit]);
-    X_283:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2001-04-01 
10:00:00.000000":timestamp, "2001-10-28 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_286:bat[:bit] := batcalc.isnil(X_283:bat[:bit]);
-    X_300:bat[:bit] := batcalc.ifthenelse(X_286:bat[:bit], false:bit, 
X_283:bat[:bit]);
-    X_310:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2001-10-28 
09:00:00.000000":timestamp, "2002-04-07 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_311:bat[:bit] := batcalc.isnil(X_310:bat[:bit]);
-    X_327:bat[:bit] := batcalc.ifthenelse(X_311:bat[:bit], false:bit, 
X_310:bat[:bit]);
-    X_340:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2002-04-07 
10:00:00.000000":timestamp, "2002-10-27 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_341:bat[:bit] := batcalc.isnil(X_340:bat[:bit]);
-    X_353:bat[:bit] := batcalc.ifthenelse(X_341:bat[:bit], false:bit, 
X_340:bat[:bit]);
-    X_364:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2002-10-27 
09:00:00.000000":timestamp, "2003-04-06 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_367:bat[:bit] := batcalc.isnil(X_364:bat[:bit]);
-    X_382:bat[:bit] := batcalc.ifthenelse(X_367:bat[:bit], false:bit, 
X_364:bat[:bit]);
-    X_393:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2003-04-06 
10:00:00.000000":timestamp, "2003-10-26 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_394:bat[:bit] := batcalc.isnil(X_393:bat[:bit]);
-    X_410:bat[:bit] := batcalc.ifthenelse(X_394:bat[:bit], false:bit, 
X_393:bat[:bit]);
-    X_421:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2003-10-26 
09:00:00.000000":timestamp, "2004-04-04 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_422:bat[:bit] := batcalc.isnil(X_421:bat[:bit]);
-    X_435:bat[:bit] := batcalc.ifthenelse(X_422:bat[:bit], false:bit, 
X_421:bat[:bit]);
-    X_448:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2004-04-04 
10:00:00.000000":timestamp, "2004-10-31 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_451:bat[:bit] := batcalc.isnil(X_448:bat[:bit]);
-    X_464:bat[:bit] := batcalc.ifthenelse(X_451:bat[:bit], false:bit, 
X_448:bat[:bit]);
-    X_474:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2004-10-31 
09:00:00.000000":timestamp, "2005-04-03 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_475:bat[:bit] := batcalc.isnil(X_474:bat[:bit]);
-    X_492:bat[:bit] := batcalc.ifthenelse(X_475:bat[:bit], false:bit, 
X_474:bat[:bit]);
-    X_504:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2005-04-03 
10:00:00.000000":timestamp, "2005-10-30 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_505:bat[:bit] := batcalc.isnil(X_504:bat[:bit]);
-    X_518:bat[:bit] := batcalc.ifthenelse(X_505:bat[:bit], false:bit, 
X_504:bat[:bit]);
-    X_529:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2005-10-30 
09:00:00.000000":timestamp, "2006-04-02 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_532:bat[:bit] := batcalc.isnil(X_529:bat[:bit]);
-    X_547:bat[:bit] := batcalc.ifthenelse(X_532:bat[:bit], false:bit, 
X_529:bat[:bit]);
-    X_558:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2006-04-02 
10:00:00.000000":timestamp, "2006-10-29 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_559:bat[:bit] := batcalc.isnil(X_558:bat[:bit]);
-    X_574:bat[:bit] := batcalc.ifthenelse(X_559:bat[:bit], false:bit, 
X_558:bat[:bit]);
-    X_586:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2006-10-29 
09:00:00.000000":timestamp, "2007-03-11 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_587:bat[:bit] := batcalc.isnil(X_586:bat[:bit]);
-    X_600:bat[:bit] := batcalc.ifthenelse(X_587:bat[:bit], false:bit, 
X_586:bat[:bit]);
-    X_612:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2007-03-11 
10:00:00.000000":timestamp, "2007-11-04 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_615:bat[:bit] := batcalc.isnil(X_612:bat[:bit]);
-    X_629:bat[:bit] := batcalc.ifthenelse(X_615:bat[:bit], false:bit, 
X_612:bat[:bit]);
-    X_639:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2007-11-04 
09:00:00.000000":timestamp, "2008-03-09 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_640:bat[:bit] := batcalc.isnil(X_639:bat[:bit]);
-    X_657:bat[:bit] := batcalc.ifthenelse(X_640:bat[:bit], false:bit, 
X_639:bat[:bit]);
-    X_669:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2008-03-09 
10:00:00.000000":timestamp, "2008-11-02 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_670:bat[:bit] := batcalc.isnil(X_669:bat[:bit]);
-    X_682:bat[:bit] := batcalc.ifthenelse(X_670:bat[:bit], false:bit, 
X_669:bat[:bit]);
-    X_694:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2008-11-02 
09:00:00.000000":timestamp, "2009-03-08 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_697:bat[:bit] := batcalc.isnil(X_694:bat[:bit]);
-    X_711:bat[:bit] := batcalc.ifthenelse(X_697:bat[:bit], false:bit, 
X_694:bat[:bit]);
-    X_723:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2009-03-08 
10:00:00.000000":timestamp, "2009-11-01 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_724:bat[:bit] := batcalc.isnil(X_723:bat[:bit]);
-    X_739:bat[:bit] := batcalc.ifthenelse(X_724:bat[:bit], false:bit, 
X_723:bat[:bit]);
-    X_750:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2009-11-01 
09:00:00.000000":timestamp, "2010-03-14 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_751:bat[:bit] := batcalc.isnil(X_750:bat[:bit]);
-    X_765:bat[:bit] := batcalc.ifthenelse(X_751:bat[:bit], false:bit, 
X_750:bat[:bit]);
-    X_777:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2010-03-14 
10:00:00.000000":timestamp, "2010-11-07 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_780:bat[:bit] := batcalc.isnil(X_777:bat[:bit]);
-    X_794:bat[:bit] := batcalc.ifthenelse(X_780:bat[:bit], false:bit, 
X_777:bat[:bit]);
-    X_804:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2010-11-07 
09:00:00.000000":timestamp, "2011-03-13 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_805:bat[:bit] := batcalc.isnil(X_804:bat[:bit]);
-    X_821:bat[:bit] := batcalc.ifthenelse(X_805:bat[:bit], false:bit, 
X_804:bat[:bit]);
-    X_834:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2011-03-13 
10:00:00.000000":timestamp, "2011-11-06 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_835:bat[:bit] := batcalc.isnil(X_834:bat[:bit]);
-    X_847:bat[:bit] := batcalc.ifthenelse(X_835:bat[:bit], false:bit, 
X_834:bat[:bit]);
-    X_858:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2011-11-06 
09:00:00.000000":timestamp, "2012-03-11 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_861:bat[:bit] := batcalc.isnil(X_858:bat[:bit]);
-    X_876:bat[:bit] := batcalc.ifthenelse(X_861:bat[:bit], false:bit, 
X_858:bat[:bit]);
-    X_887:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2012-03-11 
10:00:00.000000":timestamp, "2012-11-04 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_888:bat[:bit] := batcalc.isnil(X_887:bat[:bit]);
-    X_904:bat[:bit] := batcalc.ifthenelse(X_888:bat[:bit], false:bit, 
X_887:bat[:bit]);
-    X_915:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2012-11-04 
09:00:00.000000":timestamp, "2013-03-10 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_916:bat[:bit] := batcalc.isnil(X_915:bat[:bit]);
-    X_929:bat[:bit] := batcalc.ifthenelse(X_916:bat[:bit], false:bit, 
X_915:bat[:bit]);
-    X_942:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2013-03-10 
10:00:00.000000":timestamp, "2013-11-03 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_945:bat[:bit] := batcalc.isnil(X_942:bat[:bit]);
-    X_958:bat[:bit] := batcalc.ifthenelse(X_945:bat[:bit], false:bit, 
X_942:bat[:bit]);
-    X_968:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2013-11-03 
09:00:00.000000":timestamp, "2014-03-09 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_969:bat[:bit] := batcalc.isnil(X_968:bat[:bit]);
-    X_986:bat[:bit] := batcalc.ifthenelse(X_969:bat[:bit], false:bit, 
X_968:bat[:bit]);
-    X_998:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2014-03-09 
10:00:00.000000":timestamp, "2014-11-02 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_999:bat[:bit] := batcalc.isnil(X_998:bat[:bit]);
-    X_1012:bat[:bit] := batcalc.ifthenelse(X_999:bat[:bit], false:bit, 
X_998:bat[:bit]);
-    X_1023:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2014-11-02 
09:00:00.000000":timestamp, "2015-03-08 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1026:bat[:bit] := batcalc.isnil(X_1023:bat[:bit]);
-    X_1041:bat[:bit] := batcalc.ifthenelse(X_1026:bat[:bit], false:bit, 
X_1023:bat[:bit]);
-    X_1052:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2015-03-08 
10:00:00.000000":timestamp, "2015-11-01 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1053:bat[:bit] := batcalc.isnil(X_1052:bat[:bit]);
-    X_1068:bat[:bit] := batcalc.ifthenelse(X_1053:bat[:bit], false:bit, 
X_1052:bat[:bit]);
-    X_1080:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2015-11-01 
09:00:00.000000":timestamp, "2016-03-13 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1081:bat[:bit] := batcalc.isnil(X_1080:bat[:bit]);
-    X_1094:bat[:bit] := batcalc.ifthenelse(X_1081:bat[:bit], false:bit, 
X_1080:bat[:bit]);
-    X_1106:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2016-03-13 
10:00:00.000000":timestamp, "2016-11-06 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1109:bat[:bit] := batcalc.isnil(X_1106:bat[:bit]);
-    X_1123:bat[:bit] := batcalc.ifthenelse(X_1109:bat[:bit], false:bit, 
X_1106:bat[:bit]);
-    X_1133:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2016-11-06 
09:00:00.000000":timestamp, "2017-03-12 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1134:bat[:bit] := batcalc.isnil(X_1133:bat[:bit]);
-    X_1151:bat[:bit] := batcalc.ifthenelse(X_1134:bat[:bit], false:bit, 
X_1133:bat[:bit]);
-    X_1163:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2017-03-12 
10:00:00.000000":timestamp, "2017-11-05 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1164:bat[:bit] := batcalc.isnil(X_1163:bat[:bit]);
-    X_1176:bat[:bit] := batcalc.ifthenelse(X_1164:bat[:bit], false:bit, 
X_1163:bat[:bit]);
-    X_1188:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2017-11-05 
09:00:00.000000":timestamp, "2018-03-11 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1191:bat[:bit] := batcalc.isnil(X_1188:bat[:bit]);
-    X_1205:bat[:bit] := batcalc.ifthenelse(X_1191:bat[:bit], false:bit, 
X_1188:bat[:bit]);
-    X_1217:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2018-03-11 
10:00:00.000000":timestamp, "2018-11-04 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1218:bat[:bit] := batcalc.isnil(X_1217:bat[:bit]);
-    X_1233:bat[:bit] := batcalc.ifthenelse(X_1218:bat[:bit], false:bit, 
X_1217:bat[:bit]);
-    X_1244:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2018-11-04 
09:00:00.000000":timestamp, "2019-03-10 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1245:bat[:bit] := batcalc.isnil(X_1244:bat[:bit]);
-    X_1259:bat[:bit] := batcalc.ifthenelse(X_1245:bat[:bit], false:bit, 
X_1244:bat[:bit]);
-    X_1271:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2019-03-10 
10:00:00.000000":timestamp, "2019-11-03 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1274:bat[:bit] := batcalc.isnil(X_1271:bat[:bit]);
-    X_1288:bat[:bit] := batcalc.ifthenelse(X_1274:bat[:bit], false:bit, 
X_1271:bat[:bit]);
-    X_1298:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2019-11-03 
09:00:00.000000":timestamp, "2020-03-08 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1299:bat[:bit] := batcalc.isnil(X_1298:bat[:bit]);
-    X_1315:bat[:bit] := batcalc.ifthenelse(X_1299:bat[:bit], false:bit, 
X_1298:bat[:bit]);
-    X_1328:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2020-03-08 
10:00:00.000000":timestamp, "2020-11-01 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1329:bat[:bit] := batcalc.isnil(X_1328:bat[:bit]);
-    X_1341:bat[:bit] := batcalc.ifthenelse(X_1329:bat[:bit], false:bit, 
X_1328:bat[:bit]);
-    X_1352:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2020-11-01 
09:00:00.000000":timestamp, "2021-03-14 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1355:bat[:bit] := batcalc.isnil(X_1352:bat[:bit]);
-    X_1370:bat[:bit] := batcalc.ifthenelse(X_1355:bat[:bit], false:bit, 
X_1352:bat[:bit]);
-    X_1381:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2021-03-14 
10:00:00.000000":timestamp, "2021-11-07 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1382:bat[:bit] := batcalc.isnil(X_1381:bat[:bit]);
-    X_1398:bat[:bit] := batcalc.ifthenelse(X_1382:bat[:bit], false:bit, 
X_1381:bat[:bit]);
-    X_1409:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2021-11-07 
09:00:00.000000":timestamp, "2022-03-13 10:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1410:bat[:bit] := batcalc.isnil(X_1409:bat[:bit]);
-    X_1423:bat[:bit] := batcalc.ifthenelse(X_1410:bat[:bit], false:bit, 
X_1409:bat[:bit]);
-    X_1436:bat[:bit] := batcalc.between(X_188:bat[:timestamp], "2022-03-13 
10:00:00.000000":timestamp, "2022-11-06 09:00:00.000000":timestamp, false:bit, 
true:bit, false:bit, false:bit, false:bit);
-    X_1439:bat[:bit] := batcalc.isnil(X_1436:bat[:bit]);
-    X_1452:bat[:bit] := batcalc.ifthenelse(X_1439:bat[:bit], false:bit, 
X_1436:bat[:bit]);
-    X_1553:bat[:timestamp] := batcalc.ifthenelse(X_1452:bat[:bit], 
X_1458:bat[:timestamp], X_1454:bat[:timestamp]);
-    X_1556:bat[:timestamp] := batcalc.ifthenelse(X_1423:bat[:bit], 
X_1454:bat[:timestamp], X_1553:bat[:timestamp]);
-    X_1557:bat[:timestamp] := batcalc.ifthenelse(X_1398:bat[:bit], 
X_1458:bat[:timestamp], X_1556:bat[:timestamp]);
-    X_1558:bat[:timestamp] := batcalc.ifthenelse(X_1370:bat[:bit], 
X_1454:bat[:timestamp], X_1557:bat[:timestamp]);
-    X_1559:bat[:timestamp] := batcalc.ifthenelse(X_1341:bat[:bit], 
X_1458:bat[:timestamp], X_1558:bat[:timestamp]);
-    X_1560:bat[:timestamp] := batcalc.ifthenelse(X_1315:bat[:bit], 
X_1454:bat[:timestamp], X_1559:bat[:timestamp]);
-    X_1561:bat[:timestamp] := batcalc.ifthenelse(X_1288:bat[:bit], 
X_1458:bat[:timestamp], X_1560:bat[:timestamp]);
-    X_1562:bat[:timestamp] := batcalc.ifthenelse(X_1259:bat[:bit], 
X_1454:bat[:timestamp], X_1561:bat[:timestamp]);
-    X_1563:bat[:timestamp] := batcalc.ifthenelse(X_1233:bat[:bit], 
X_1458:bat[:timestamp], X_1562:bat[:timestamp]);
-    X_1564:bat[:timestamp] := batcalc.ifthenelse(X_1205:bat[:bit], 
X_1454:bat[:timestamp], X_1563:bat[:timestamp]);
-    X_1565:bat[:timestamp] := batcalc.ifthenelse(X_1176:bat[:bit], 
X_1458:bat[:timestamp], X_1564:bat[:timestamp]);
-    X_1566:bat[:timestamp] := batcalc.ifthenelse(X_1151:bat[:bit], 
X_1454:bat[:timestamp], X_1565:bat[:timestamp]);
-    X_1567:bat[:timestamp] := batcalc.ifthenelse(X_1123:bat[:bit], 
X_1458:bat[:timestamp], X_1566:bat[:timestamp]);
-    X_1568:bat[:timestamp] := batcalc.ifthenelse(X_1094:bat[:bit], 
X_1454:bat[:timestamp], X_1567:bat[:timestamp]);
-    X_1569:bat[:timestamp] := batcalc.ifthenelse(X_1068:bat[:bit], 
X_1458:bat[:timestamp], X_1568:bat[:timestamp]);
-    X_1570:bat[:timestamp] := batcalc.ifthenelse(X_1041:bat[:bit], 
X_1454:bat[:timestamp], X_1569:bat[:timestamp]);
-    X_1571:bat[:timestamp] := batcalc.ifthenelse(X_1012:bat[:bit], 
X_1458:bat[:timestamp], X_1570:bat[:timestamp]);
-    X_1572:bat[:timestamp] := batcalc.ifthenelse(X_986:bat[:bit], 
X_1454:bat[:timestamp], X_1571:bat[:timestamp]);
-    X_1573:bat[:timestamp] := batcalc.ifthenelse(X_958:bat[:bit], 
X_1458:bat[:timestamp], X_1572:bat[:timestamp]);
-    X_1574:bat[:timestamp] := batcalc.ifthenelse(X_929:bat[:bit], 
X_1454:bat[:timestamp], X_1573:bat[:timestamp]);
-    X_1575:bat[:timestamp] := batcalc.ifthenelse(X_904:bat[:bit], 
X_1458:bat[:timestamp], X_1574:bat[:timestamp]);
-    X_1576:bat[:timestamp] := batcalc.ifthenelse(X_876:bat[:bit], 
X_1454:bat[:timestamp], X_1575:bat[:timestamp]);
-    X_1577:bat[:timestamp] := batcalc.ifthenelse(X_847:bat[:bit], 
X_1458:bat[:timestamp], X_1576:bat[:timestamp]);
-    X_1578:bat[:timestamp] := batcalc.ifthenelse(X_821:bat[:bit], 
X_1454:bat[:timestamp], X_1577:bat[:timestamp]);
-    X_1579:bat[:timestamp] := batcalc.ifthenelse(X_794:bat[:bit], 
X_1458:bat[:timestamp], X_1578:bat[:timestamp]);
-    X_1580:bat[:timestamp] := batcalc.ifthenelse(X_765:bat[:bit], 
X_1454:bat[:timestamp], X_1579:bat[:timestamp]);
-    X_1581:bat[:timestamp] := batcalc.ifthenelse(X_739:bat[:bit], 
X_1458:bat[:timestamp], X_1580:bat[:timestamp]);
-    X_1582:bat[:timestamp] := batcalc.ifthenelse(X_711:bat[:bit], 
X_1454:bat[:timestamp], X_1581:bat[:timestamp]);
-    X_1583:bat[:timestamp] := batcalc.ifthenelse(X_682:bat[:bit], 
X_1458:bat[:timestamp], X_1582:bat[:timestamp]);
-    X_1584:bat[:timestamp] := batcalc.ifthenelse(X_657:bat[:bit], 
X_1454:bat[:timestamp], X_1583:bat[:timestamp]);
-    X_1585:bat[:timestamp] := batcalc.ifthenelse(X_629:bat[:bit], 
X_1458:bat[:timestamp], X_1584:bat[:timestamp]);
-    X_1586:bat[:timestamp] := batcalc.ifthenelse(X_600:bat[:bit], 
X_1454:bat[:timestamp], X_1585:bat[:timestamp]);
-    X_1589:bat[:timestamp] := batcalc.ifthenelse(X_574:bat[:bit], 
X_1458:bat[:timestamp], X_1586:bat[:timestamp]);
-    X_1590:bat[:timestamp] := batcalc.ifthenelse(X_547:bat[:bit], 
X_1454:bat[:timestamp], X_1589:bat[:timestamp]);
-    X_1591:bat[:timestamp] := batcalc.ifthenelse(X_518:bat[:bit], 
X_1458:bat[:timestamp], X_1590:bat[:timestamp]);
-    X_1592:bat[:timestamp] := batcalc.ifthenelse(X_492:bat[:bit], 
X_1454:bat[:timestamp], X_1591:bat[:timestamp]);
-    X_1593:bat[:timestamp] := batcalc.ifthenelse(X_464:bat[:bit], 
X_1458:bat[:timestamp], X_1592:bat[:timestamp]);
-    X_1594:bat[:timestamp] := batcalc.ifthenelse(X_435:bat[:bit], 
X_1454:bat[:timestamp], X_1593:bat[:timestamp]);
-    X_1595:bat[:timestamp] := batcalc.ifthenelse(X_410:bat[:bit], 
X_1458:bat[:timestamp], X_1594:bat[:timestamp]);
-    X_1596:bat[:timestamp] := batcalc.ifthenelse(X_382:bat[:bit], 
X_1454:bat[:timestamp], X_1595:bat[:timestamp]);
-    X_1597:bat[:timestamp] := batcalc.ifthenelse(X_353:bat[:bit], 
X_1458:bat[:timestamp], X_1596:bat[:timestamp]);
-    X_1598:bat[:timestamp] := batcalc.ifthenelse(X_327:bat[:bit], 
X_1454:bat[:timestamp], X_1597:bat[:timestamp]);
-    X_1599:bat[:timestamp] := batcalc.ifthenelse(X_300:bat[:bit], 
X_1458:bat[:timestamp], X_1598:bat[:timestamp]);
-    X_1600:bat[:timestamp] := batcalc.ifthenelse(X_271:bat[:bit], 
X_1454:bat[:timestamp], X_1599:bat[:timestamp]);
-    X_1601:bat[:timestamp] := batcalc.ifthenelse(X_245:bat[:bit], 
X_1458:bat[:timestamp], X_1600:bat[:timestamp]);
-    X_1602:bat[:timestamp] := batcalc.ifthenelse(X_217:bat[:bit], 
X_1454:bat[:timestamp], X_1601:bat[:timestamp]);
-    X_1604:bat[:str] := mal.manifold("mtime":str, "timestamp_to_str":str, 
X_1602:bat[:timestamp], "%Y":str);
-    language.pass(X_200:bat[:bit]);
-    language.pass(X_229:bat[:bit]);
-    language.pass(X_256:bat[:bit]);
-    language.pass(X_283:bat[:bit]);
-    language.pass(X_310:bat[:bit]);
-    language.pass(X_340:bat[:bit]);
-    language.pass(X_364:bat[:bit]);
-    language.pass(X_393:bat[:bit]);
-    language.pass(X_421:bat[:bit]);
-    language.pass(X_448:bat[:bit]);
-    language.pass(X_474:bat[:bit]);
-    language.pass(X_504:bat[:bit]);
-    language.pass(X_529:bat[:bit]);
-    language.pass(X_558:bat[:bit]);
-    language.pass(X_586:bat[:bit]);
-    language.pass(X_612:bat[:bit]);
-    language.pass(X_639:bat[:bit]);
-    language.pass(X_669:bat[:bit]);
-    language.pass(X_694:bat[:bit]);
-    language.pass(X_723:bat[:bit]);
-    language.pass(X_750:bat[:bit]);
-    language.pass(X_777:bat[:bit]);
-    language.pass(X_804:bat[:bit]);
-    language.pass(X_834:bat[:bit]);
-    language.pass(X_858:bat[:bit]);
-    language.pass(X_887:bat[:bit]);
-    language.pass(X_915:bat[:bit]);
-    language.pass(X_942:bat[:bit]);
-    language.pass(X_968:bat[:bit]);
-    language.pass(X_998:bat[:bit]);
-    language.pass(X_1023:bat[:bit]);
-    language.pass(X_1052:bat[:bit]);
-    language.pass(X_1080:bat[:bit]);
-    language.pass(X_1106:bat[:bit]);
-    language.pass(X_1133:bat[:bit]);
-    language.pass(X_1163:bat[:bit]);
-    language.pass(X_1188:bat[:bit]);
-    language.pass(X_1217:bat[:bit]);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to