Changeset: 71583236f903 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=71583236f903
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        monetdb5/modules/mal/mal_mapi.c
        sql/backends/monet5/UDF/capi/Tests/capi09.stable.out
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql.h
        sql/backends/monet5/sql.mal
        sql/server/rel_exp.h
        sql/storage/bat/bat_storage.c
        sql/storage/sql_storage.h
        sql/storage/store.c
        sql/test/BugTracker-2013/Tests/restore-uuid.Bug-3407.stable.out
        sql/test/BugTracker-2015/Tests/uuid-compare.Bug-3827.stable.out
        sql/test/BugTracker-2016/Tests/isaUUID_function.Bug-3997.stable.out
        
sql/test/BugTracker-2016/Tests/min-max-uuid-column-wrong-results.Bug-3953.stable.out
        sql/test/orderidx/Tests/imprints_all_types.stable.out
        sql/test/orderidx/Tests/oidx_all_types.stable.out
Branch: default
Log Message:

Merge with Apr2019.


diffs (truncated from 1800 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -56,6 +56,7 @@ stdout of test 'MAL-signatures` in direc
 # MonetDB/Python2 module loaded
 # MonetDB/R   module loaded
 
+Ready.
 
 # 14:39:22 >  
 # 14:39:22 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-23085" "--port=30158"
@@ -65,9 +66,7 @@ stdout of test 'MAL-signatures` in direc
 % .L1, .L1,    .L1,    .L1,    .L1 # table_name
 % module,      function,       signature,      address,        comment # name
 % clob,        clob,   clob,   clob,   clob # type
-% 11,  28,     364,    38,     874 # length
-[ "aggr",      "allnotequal",  "command aggr.allnotequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",  "SQLallnotequal;",      "if all values in r are not 
equal to l return true, else if r has nil nil else false"   ]
-[ "aggr",      "anyequal",     "command aggr.anyequal(l:bat[:any_1], 
r:bat[:any_1]):bit ",     "SQLanyequal;", "if any value in r is equal to l 
return true, else if r has nil nil else false" ]
+% 11,  28,     364,    44,     874 # length
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
bte"   ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
dbl"   ]
 [ "aggr",      "avg",  "command aggr.avg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ", "AGGRavg13_dbl;",       "Grouped tail average on 
flt"   ]
@@ -123,11 +122,9 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "jsonaggr",     "command aggr.jsonaggr(val:bat[:str]):str ",    
"JSONgroupStr;",        "Aggregate the string values to array." ]
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmax3;",    ""      ]
 [ "aggr",      "max",  "command aggr.max(b:bat[:any_2]):any_2 ",       
"ALGmaxany;",   "Return the highest tail value or nil." ]
-[ "aggr",      "max",  "command aggr.max(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGmaxany_skipnil;",   "Return the highest tail value or nil." ]
 [ "aggr",      "median",       "command aggr.median(b:bat[:any_1]):any_1 ",    
"AGGRmedian;",  "Median aggregate"      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_1], g:bat[:oid], 
e:bat[:any_2]):bat[:any_1] ",     "AGGRmin3;",    ""      ]
 [ "aggr",      "min",  "command aggr.min(b:bat[:any_2]):any_2 ",       
"ALGminany;",   "Return the lowest tail value or nil."  ]
-[ "aggr",      "min",  "command aggr.min(b:bat[:any_2], skipnil:bit):any_2 ",  
"ALGminany_skipnil;",   "Return the lowest tail value or nil."  ]
 [ "aggr",      "prod", "command aggr.prod(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1]):bat[:bte] ",        "AGGRprod3_bte;",       "Grouped tail 
product on bte"   ]
 [ "aggr",      "prod", "command aggr.prod(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",        "AGGRprod3_dbl;",       "Grouped tail 
product on dbl"   ]
 [ "aggr",      "prod", "command aggr.prod(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1]):bat[:dbl] ",        "AGGRprod3_dbl;",       "Grouped tail 
product on flt"   ]
@@ -234,10 +231,6 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], nil_if_empty:bit):str ",     
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with separator SEP."       ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:oid]):str ",  
"CMDBATstr_group_concat;",      "Calculate aggregate string concatenate of B 
with candidate list and separator SEP."    ]
 [ "aggr",      "str_group_concat",     "pattern 
aggr.str_group_concat(b:bat[:str], sep:bat[:str], s:bat[:oid], 
nil_if_empty:bit):str ",        "CMDBATstr_group_concat;",      "Calculate 
aggregate string concatenate of B with candidate list and separator SEP."    ]
-[ "aggr",      "suballnotequal",       "command 
aggr.suballnotequal(l:bat[:any_1], r:bat[:any_1], rid:bat[:oid], gp:bat[:oid], 
gpe:bat[:oid], no_nil:bit):bat[:bit] ", "SQLallnotequal_grp2;", "if all values 
in r are not equal to l return true, else if r has nil nil else false, except 
if rid is nil (ie empty) then true"        ]
-[ "aggr",      "suballnotequal",       "command 
aggr.suballnotequal(l:bat[:any_1], r:bat[:any_1], gp:bat[:oid], gpe:bat[:oid], 
no_nil:bit):bat[:bit] ",        "SQLallnotequal_grp;",  "if all values in r are 
not equal to l return true, else if r has nil nil else false"   ]
-[ "aggr",      "subanyequal",  "command aggr.subanyequal(l:bat[:any_1], 
r:bat[:any_1], rid:bat[:oid], gp:bat[:oid], gpe:bat[:oid], 
no_nil:bit):bat[:bit] ",    "SQLanyequal_grp2;",    "if any value in r is equal 
to l return true, else if r has nil nil else false, except if rid is nil (ie 
empty) then false"     ]
-[ "aggr",      "subanyequal",  "command aggr.subanyequal(l:bat[:any_1], 
r:bat[:any_1], gp:bat[:oid], gpe:bat[:oid], no_nil:bit):bat[:bit] ",   
"SQLanyequal_grp;",     "if any value in r is equal to l return true, else if r 
has nil nil else false" ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:bte], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:dbl], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
 [ "aggr",      "subavg",       "command aggr.subavg(b:bat[:flt], g:bat[:oid], 
e:bat[:any_1], skip_nils:bit, abort_on_error:bit):bat[:dbl] ",   
"AGGRsubavg1_dbl;",     "Grouped average aggregate"     ]
@@ -300,7 +293,6 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:int], 
e2:bat[:int], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
 [ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:lng], 
e2:bat[:lng], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
 [ "aggr",      "subcovar",     "function aggr.subcovar(e1:bat[:sht], 
e2:bat[:sht], g:bat[:oid], e:bat[:any_2], f:bit):bat[:dbl];",     "",     ""    
  ]
-[ "aggr",      "subexist",     "command aggr.subexist(b:bat[:any_2], 
g:bat[:oid], e:bat[:oid], no_nil:bit):bat[:bit] ",        "SQLsubexist;", ""    
  ]
 [ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit):bat[:str] ",        "JSONsubjson;", 
"Grouped aggregation of values."        ]
 [ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:str], 
g:bat[:oid], e:bat[:any_1], skip_nils:bit):bat[:str] ",        "JSONsubjson;", 
"Grouped aggregation of values."        ]
 [ "aggr",      "subjsonaggr",  "command aggr.subjsonaggr(val:bat[:dbl], 
g:bat[:oid], e:bat[:any_1], s:bat[:oid], skip_nils:bit):bat[:str] ",   
"JSONsubjsoncand;",     "Grouped aggregation of values with candidates list."   
]
@@ -521,15 +513,15 @@ stdout of test 'MAL-signatures` in direc
 [ "aggr",      "variancep",    "command aggr.variancep(b:bat[:sht], 
g:bat[:oid], e:bat[:any_1]):bat[:dbl] ",   "AGGRvariancep3_dbl;",  "Grouped 
tail variance (population/biased) on sht"      ]
 [ "aggr",      "variancep",    "command aggr.variancep(b:bat[:any_2]):dbl ",   
"ALGvariancep;",        "Gives the variance of all tail values" ]
 [ "alarm",     "ctime",        "unsafe command alarm.ctime():str ",    
"ALARMctime;",  "Return the current time as a C-time string."   ]
-[ "alarm",     "epoch",        "unsafe command alarm.epoch():int ",    
"ALARMepoch;",  "Return time since Jan 1, 1970 in seconds."     ]
+[ "alarm",     "epoch",        "unsafe command alarm.epoch():int ",    
"ALARMepoch;",  "Return the current time as UNIX epoch."        ]
 [ "alarm",     "sleep",        "unsafe command alarm.sleep(secs:int):void ",   
"ALARMsleep;",  "Sleep a few seconds"   ]
-[ "alarm",     "time", "unsafe command alarm.time():int ",     "ALARMtime;",   
"Return time since program start in milliseconds."      ]
-[ "alarm",     "usec", "unsafe command alarm.usec():lng ",     "ALARMusec;",   
"Return time since Jan 1, 1970 in microseconds."        ]
+[ "alarm",     "time", "unsafe command alarm.time():int ",     "ALARMtime;",   
"Return time in milliseconds."  ]
+[ "alarm",     "usec", "unsafe command alarm.usec():lng ",     "ALARMusec;",   
"Return time in microseconds."  ]
 [ "algebra",   "antijoin",     "function algebra.antijoin(l:bat[:any_1], 
r:bat[:any_1], sl:bat[:oid], sr:bat[:oid], nil_matches:bit, estimate:lng) 
(X_0:bat[:oid], X_1:bat[:oid]);",   "",     ""      ]
 [ "algebra",   "bandjoin",     "command algebra.bandjoin(l:bat[:any_1], 
r:bat[:any_1], sl:bat[:oid], sr:bat[:oid], c1:any_1, c2:any_1, li:bit, hi:bit, 
estimate:lng) (X_0:bat[:oid], X_1:bat[:oid]) ", "ALGbandjoin;", "Band join: 
values in l and r match if r - c1 <[=] l <[=] r + c2"       ]
 [ "algebra",   "copy", "command algebra.copy(b:bat[:any_1]):bat[:any_1] ",     
"ALGcopy;",     "Returns physical copy of a BAT."       ]
 [ "algebra",   "crossproduct", "command algebra.crossproduct(left:bat[:any_1], 
right:bat[:any_2]) (l:bat[:oid], r:bat[:oid]) ",        "ALGcrossproduct2;",    
"Returns 2 columns with all BUNs, consisting of the head-oids\n\t  from 'left' 
and 'right' for which there are BUNs in 'left'\n\t  and 'right' with equal 
tails"        ]
-[ "algebra",   "difference",   "command algebra.difference(l:bat[:any_1], 
r:bat[:any_1], sl:bat[:oid], sr:bat[:oid], nil_matches:bit, nil_clears:bit, 
estimate:lng):bat[:oid] ",       "ALGdifference;",       "Difference of l and r 
with candidate lists"    ]
+[ "algebra",   "difference",   "command algebra.difference(l:bat[:any_1], 
r:bat[:any_1], sl:bat[:oid], sr:bat[:oid], nil_matches:bit, 
estimate:lng):bat[:oid] ",       "ALGdifference;",       "Difference of l and r 
with candidate lists"    ]
 [ "algebra",   "exist",        "command algebra.exist(b:bat[:any_1], 
val:any_1):bit ", "ALGexist;",    "Returns whether 'val' occurs in b."    ]
 [ "algebra",   "fetch",        "command algebra.fetch(b:bat[:any_1], 
x:oid):any_1 ",   "ALGfetchoid;", "Returns the value of the BUN at x-th 
position with 0 <= x < b.count"   ]
 [ "algebra",   "find", "command algebra.find(b:bat[:any_1], t:any_1):oid ",    
"ALGfind;",     "Returns the index position of a value.  If no such BUN exists 
return OID-nil." ]
@@ -612,7 +604,6 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1]):bat[:any_1] 
",       "BKCdelete_all;",       "Delete all entries."   ]
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1], 
d:bat[:oid]):bat[:any_1] ",  "BKCdelete_multi;",     "Delete multiple BUN, 
shifting BUNs up" ]
 [ "bat",       "densebat",     "command bat.densebat(sz:lng):bat[:oid] ",      
"BKCdensebat;", "Creates a new [void,void] BAT of size 'sz'."   ]
-[ "bat",       "diffcand",     "command bat.diffcand(a:bat[:oid], 
b:bat[:oid]):bat[:oid] ",    "BKCdiffcand;", "Calculate difference of two 
candidate lists"   ]
 [ "bat",       "getAccess",    "command bat.getAccess(b:bat[:any_1]):str ",    
"BKCgetAccess;",        "Return the access mode attached to this BAT as a 
character."   ]
 [ "bat",       "getCapacity",  "command bat.getCapacity(b:bat[:any_1]):lng ",  
"BKCgetCapacity;",      "Returns the current allocation size (in max number of 
elements) of a BAT."     ]
 [ "bat",       "getColumnType",        "command 
bat.getColumnType(b:bat[:any_1]):str ",        "BKCgetColumnType;",    "Returns 
the type of the tail column of a BAT, as an integer type number."      ]
@@ -6118,14 +6109,22 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "avg",  "pattern batcalc.avg(b:bat[:sht], s:bat[:oid], 
scale:int):dbl ",        "CMDcalcavg;",  "average of non-nil values of B"       
 ]
 [ "batcalc",   "avg",  "pattern batcalc.avg(b:bat[:sht], scale:int) (X_0:dbl, 
X_1:lng) ",      "CMDcalcavg;",  "average and number of non-nil values of B"    
 ]
 [ "batcalc",   "avg",  "pattern batcalc.avg(b:bat[:sht], scale:int):dbl ",     
"CMDcalcavg;",  "average of non-nil values of B with candidates list"   ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:any_1, v2:any_1, s:bat[:oid], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",      "CMDbatBETWEEN;",       "B between V1 and V2 
(or vice versa) with candidate list"       ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:any_1, v2:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit):bat[:bit] ",   
"CMDbatBETWEEN;",       "B between V1 and V2 (or vice versa)"   ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:any_1, v2:bat[:any_1], s:bat[:oid], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",        "CMDbatBETWEEN;",       "B between V1 and 
V2 (or vice versa) with candidate list"       ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:any_1, v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",     "CMDbatBETWEEN;",       "B between V1 and V2 
(or vice versa)"   ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:bat[:any_1], v2:any_1, s:bat[:oid], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",        "CMDbatBETWEEN;",       "B between V1 and 
V2 (or vice versa) with candidate list"       ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:bat[:any_1], v2:any_1, sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",     "CMDbatBETWEEN;",       "B between V1 and V2 
(or vice versa)"   ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:bat[:any_1], v2:bat[:any_1], s:bat[:oid], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",  "CMDbatBETWEEN;",       "B between V1 and V2 (or 
vice versa) with candidate list"       ]
-[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
v1:bat[:any_1], v2:bat[:any_1], sym:bit, linc:bit, hinc:bit, 
nils_false:bit):bat[:bit] ",       "CMDbatBETWEEN;",       "B between V1 and V2 
(or vice versa)"   ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:any_1, hi:any_1):bat[:bit] ",        "CMDbatBETWEEN;",       "B between LO 
and HI inclusive" ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:any_1, hi:any_1, s:bat[:oid]):bat[:bit] ",   "CMDbatBETWEEN;",       "B 
between LO and HI inclusive with candidates list"    ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:any_1, hi:bat[:any_1]):bat[:bit] ",  "CMDbatBETWEEN;",       "B between LO 
and HI inclusive" ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:any_1, hi:bat[:any_1], s:bat[:oid]):bat[:bit] ",     "CMDbatBETWEEN;",       
"B between LO and HI inclusive with candidates list"    ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:bat[:any_1], hi:any_1):bat[:bit] ",  "CMDbatBETWEEN;",       "B between LO 
and HI inclusive" ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:bat[:any_1], hi:any_1, s:bat[:oid]):bat[:bit] ",     "CMDbatBETWEEN;",       
"B between LO and HI inclusive with candidates list"    ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:bat[:any_1], hi:bat[:any_1]):bat[:bit] ",    "CMDbatBETWEEN;",       "B 
between LO and HI inclusive" ]
+[ "batcalc",   "between",      "pattern batcalc.between(b:bat[:any_1], 
lo:bat[:any_1], hi:bat[:any_1], s:bat[:oid]):bat[:bit] ",       
"CMDbatBETWEEN;",       "B between LO and HI inclusive with candidates list"    
]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:any_1, v2:any_1):bat[:bit] ",      
"CMDbatBETWEENsymmetric;",      "B between V1 and V2 (or vice versa) inclusive" 
]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:any_1, v2:any_1, 
s:bat[:oid]):bat[:bit] ", "CMDbatBETWEENsymmetric;",      "B between V1 and V2 
(or vice versa) inclusive with candidates list"    ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:any_1, v2:bat[:any_1]):bat[:bit] ", 
       "CMDbatBETWEENsymmetric;",      "B between V1 and V2 (or vice versa) 
inclusive" ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:any_1, v2:bat[:any_1], 
s:bat[:oid]):bat[:bit] ",   "CMDbatBETWEENsymmetric;",      "B between V1 and 
V2 (or vice versa) inclusive with candidates list"    ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:bat[:any_1], v2:any_1):bat[:bit] ", 
       "CMDbatBETWEENsymmetric;",      "B between V1 and V2 (or vice versa) 
inclusive" ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:bat[:any_1], v2:any_1, 
s:bat[:oid]):bat[:bit] ",   "CMDbatBETWEENsymmetric;",      "B between V1 and 
V2 (or vice versa) inclusive with candidates list"    ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:bat[:any_1], 
v2:bat[:any_1]):bat[:bit] ",  "CMDbatBETWEENsymmetric;",      "B between V1 and 
V2 (or vice versa) inclusive" ]
+[ "batcalc",   "between_symmetric",    "pattern 
batcalc.between_symmetric(b:bat[:any_1], v1:bat[:any_1], v2:bat[:any_1], 
s:bat[:oid]):bat[:bit] ",     "CMDbatBETWEENsymmetric;",      "B between V1 and 
V2 (or vice versa) inclusive with candidates list"    ]
 [ "batcalc",   "bit",  "pattern batcalc.bit(b:bat[:bit]):bat[:bit] ",  
"CMDconvertsignal_bit;",        "cast from bit to bit, signal error on 
overflow"        ]
 [ "batcalc",   "bit",  "pattern batcalc.bit(b:bat[:bit], 
s:bat[:oid]):bat[:bit] ",     "CMDconvertsignal_bit;",        "cast from bit to 
bit with candidates list, signal error on overflow"   ]
 [ "batcalc",   "bit",  "pattern batcalc.bit(b:bat[:bte]):bat[:bit] ",  
"CMDconvertsignal_bit;",        "cast from bte to bit, signal error on 
overflow"        ]
@@ -6451,11 +6450,11 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "cmp",  "pattern batcalc.cmp(v:sht, b:bat[:sht], 
s:bat[:oid]):bat[:bte] ",      "CMDbatCMP;",   "Return -1/0/1 if V </==/> B 
with candidates list"      ]
 [ "batcalc",   "cmp",  "pattern batcalc.cmp(v:str, b:bat[:str]):bat[:bte] ",   
"CMDbatCMP;",   "Return -1/0/1 if V </==/> B"   ]
 [ "batcalc",   "cmp",  "pattern batcalc.cmp(v:str, b:bat[:str], 
s:bat[:oid]):bat[:bte] ",      "CMDbatCMP;",   "Return -1/0/1 if V </==/> B 
with candidates list"      ]
-[ "batcalc",   "date", "command batcalc.date(t:bat[:timestamp]):bat[:date] ",  
"MTIMEtimestamp_extract_date_bulk;",    ""      ]
+[ "batcalc",   "date", "command batcalc.date(t:bat[:timestamp]):bat[:date] ",  
"MTIMEtimestamp_extract_date_default_bulk;",    ""      ]
 [ "batcalc",   "date", "command batcalc.date(v:bat[:oid]):bat[:date] ",        
"batnil_2_date;",       "cast to date"  ]
 [ "batcalc",   "date", "command batcalc.date(v:bat[:str]):bat[:date] ",        
"batstr_2_date;",       "cast to date"  ]
-[ "batcalc",   "daytime",      "command 
batcalc.daytime(s:bat[:lng]):bat[:daytime] ",  
"MTIMEdaytime_fromseconds_bulk;",       ""      ]
-[ "batcalc",   "daytime",      "command 
batcalc.daytime(t:bat[:timestamp]):bat[:daytime] ",    
"MTIMEtimestamp_extract_daytime_bulk;", ""      ]
+[ "batcalc",   "daytime",      "command 
batcalc.daytime(s:bat[:lng]):bat[:daytime] ",  "MTIMEsecs2daytime_bulk;",      
""      ]
+[ "batcalc",   "daytime",      "command 
batcalc.daytime(t:bat[:timestamp]):bat[:daytime] ",    
"MTIMEtimestamp_extract_daytime_default_bulk;", ""      ]
 [ "batcalc",   "daytime",      "command batcalc.daytime(v:bat[:daytime], 
digits:int):bat[:daytime] ",  "batdaytime_2time_daytime;",    "cast daytime to 
daytime and check for overflow"        ]
 [ "batcalc",   "daytime",      "command 
batcalc.daytime(v:bat[:oid]):bat[:daytime] ",  "batnil_2_daytime;",    "Cast to 
daytime"       ]
 [ "batcalc",   "daytime",      "command batcalc.daytime(v:bat[:oid], 
digits:int):bat[:daytime] ",      "batnil_2time_daytime;",        "cast to 
daytime and check for overflow"        ]
@@ -8676,9 +8675,9 @@ stdout of test 'MAL-signatures` in direc
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(v:sht, 
b:bat[:lng], s:bat[:oid]):bat[:lng] ",      "CMDbatSUB;",   "Return V - B with 
candidates list, overflow causes NIL value"  ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(v:sht, 
b:bat[:sht]):bat[:sht] ",   "CMDbatSUB;",   "Return V - B, overflow causes NIL 
value"       ]
 [ "batcalc",   "sub_noerror",  "pattern batcalc.sub_noerror(v:sht, 
b:bat[:sht], s:bat[:oid]):bat[:sht] ",      "CMDbatSUB;",   "Return V - B with 
candidates list, overflow causes NIL value"  ]
-[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(d:bat[:date]):bat[:timestamp] ",     
"MTIMEtimestamp_fromdate_bulk;",        ""      ]
-[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(msecs:bat[:lng]):bat[:timestamp] ",  
"MTIMEtimestamp_frommsec_bulk;",        ""      ]
-[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(secs:bat[:int]):bat[:timestamp] ",   
"MTIMEtimestamp_fromsecond_bulk;",      ""      ]
+[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(secs:bat[:int]):bat[:timestamp] ",   "MTIMEtimestamp_bulk;", 
""      ]
+[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(d:bat[:date]):bat[:timestamp] ",     
"MTIMEtimestamp_create_from_date_bulk;",        ""      ]
+[ "batcalc",   "timestamp",    "command 
batcalc.timestamp(msecs:bat[:lng]):bat[:timestamp] ",  
"MTIMEtimestamp_lng_bulk;",     ""      ]
 [ "batcalc",   "timestamp",    "command 
batcalc.timestamp(v:bat[:oid]):bat[:timestamp] ",      "batnil_2_timestamp;",  
"Cast to timestamp"     ]
 [ "batcalc",   "timestamp",    "command batcalc.timestamp(v:bat[:oid], 
digits:int):bat[:timestamp] ",  "batnil_2time_timestamp;",      "cast to 
timestamp and check for overflow"      ]
 [ "batcalc",   "timestamp",    "command 
batcalc.timestamp(v:bat[:str]):bat[:timestamp] ",      "batstr_2_timestamp;",  
"Cast to timestamp"     ]
@@ -8918,19 +8917,16 @@ stdout of test 'MAL-signatures` in direc
 [ "batmmath",  "tanh", "command batmmath.tanh(x:bat[:dbl], 
s:bat[:oid]):bat[:dbl] ",   "CMDscience_bat_dbl_tanh_cand;",        ""      ]
 [ "batmmath",  "tanh", "command batmmath.tanh(x:bat[:flt]):bat[:flt] ",        
"CMDscience_bat_flt_tanh;",     ""      ]
 [ "batmmath",  "tanh", "command batmmath.tanh(x:bat[:flt], 
s:bat[:oid]):bat[:flt] ",   "CMDscience_bat_flt_tanh_cand;",        ""      ]
-[ "batmtime",  "century",      "command 
batmtime.century(d:bat[:date]):bat[:int] ",    
"MTIMEdate_extract_century_bulk;",      ""      ]
 [ "batmtime",  "day",  "command batmtime.day(d:bat[:date]):bat[:int] ",        
"MTIMEdate_extract_day_bulk;",  ""      ]
-[ "batmtime",  "decade",       "command 
batmtime.decade(d:bat[:date]):bat[:int] ",     
"MTIMEdate_extract_decade_bulk;",       ""      ]
 [ "batmtime",  "diff", "command batmtime.diff(b1:bat[:date], 
b2:bat[:date]):bat[:int] ",       "MTIMEdate_diff_bulk;", "Difference of two 
sets of date."       ]
-[ "batmtime",  "diff", "command batmtime.diff(b1:bat[:timestamp], 
b2:bat[:timestamp]):bat[:lng] ",     "MTIMEtimestamp_diff_msec_bulk;",       
"Difference of two sets of timestamp."  ]
+[ "batmtime",  "diff", "command batmtime.diff(b1:bat[:timestamp], 
b2:bat[:timestamp]):bat[:lng] ",     "MTIMEtimestamp_diff_bulk;",    
"Difference of two sets of timestamp."  ]
 [ "batmtime",  "hours",        "command 
batmtime.hours(d:bat[:daytime]):bat[:int] ",   
"MTIMEdaytime_extract_hours_bulk;",     ""      ]
+[ "batmtime",  "milliseconds", "command 
batmtime.milliseconds(d:bat[:daytime]):bat[:int] ",    
"MTIMEdaytime_extract_milliseconds_bulk;",      ""      ]
 [ "batmtime",  "minutes",      "command 
batmtime.minutes(d:bat[:daytime]):bat[:int] ", 
"MTIMEdaytime_extract_minutes_bulk;",   ""      ]
 [ "batmtime",  "month",        "command batmtime.month(d:bat[:date]):bat[:int] 
",      "MTIMEdate_extract_month_bulk;",        ""      ]
 [ "batmtime",  "quarter",      "command 
batmtime.quarter(d:bat[:date]):bat[:int] ",    
"MTIMEdate_extract_quarter_bulk;",      ""      ]
+[ "batmtime",  "seconds",      "command 
batmtime.seconds(d:bat[:daytime]):bat[:int] ", 
"MTIMEdaytime_extract_seconds_bulk;",   ""      ]
 [ "batmtime",  "sql_seconds",  "command 
batmtime.sql_seconds(d:bat[:daytime]):bat[:int] ",     
"MTIMEdaytime_extract_sql_seconds_bulk;",       ""      ]
-[ "batmtime",  "sql_seconds",  "command 
batmtime.sql_seconds(d:bat[:timestamp]):bat[:int] ",   
"MTIMEtimestamp_sql_seconds_bulk;",     ""      ]
-[ "batmtime",  "timestamp_add_msec_interval",  "command 
batmtime.timestamp_add_msec_interval(t:bat[:timestamp], 
ms:bat[:lng]):bat[:timestamp] ",       
"MTIMEtimestamp_add_msec_interval_bulk;",       ""      ]
-[ "batmtime",  "timestamp_sub_msec_interval",  "command 
batmtime.timestamp_sub_msec_interval(t:bat[:timestamp], 
ms:bat[:lng]):bat[:timestamp] ",       
"MTIMEtimestamp_sub_msec_interval_bulk;",       ""      ]
 [ "batmtime",  "year", "command batmtime.year(d:bat[:date]):bat[:int] ",       
"MTIMEdate_extract_year_bulk;", ""      ]
 [ "batpcre",   "replace",      "command batpcre.replace(orig:bat[:str], 
pat:str, repl:str, flag:str):bat[:str] ",      "PCREreplace_bat_wrap;",        
""      ]
 [ "batpcre",   "replace_first",        "command 
batpcre.replace_first(orig:bat[:str], pat:str, repl:str, flag:str):bat[:str] ", 
       "PCREreplacefirst_bat_wrap;",   ""      ]
@@ -10067,7 +10063,8 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "and",  "pattern calc.and(v1:int, v2:int):int ",        
"CMDvarAND;",   "Return V1 AND V2"      ]
 [ "calc",      "and",  "pattern calc.and(v1:lng, v2:lng):lng ",        
"CMDvarAND;",   "Return V1 AND V2"      ]
 [ "calc",      "and",  "pattern calc.and(v1:sht, v2:sht):sht ",        
"CMDvarAND;",   "Return V1 AND V2"      ]
-[ "calc",      "between",      "pattern calc.between(b:any_1, lo:any_1, 
hi:any_1, sym:bit, linc:bit, hinc:bit, nils_false:bit):bit ",  
"CMDvarBETWEEN;",       "B between LO and HI inclusive" ]
+[ "calc",      "between",      "pattern calc.between(b:any_1, lo:any_1, 
hi:any_1):bit ",       "CMDvarBETWEEN;",       "B between LO and HI inclusive" ]
+[ "calc",      "between_symmetric",    "pattern 
calc.between_symmetric(b:any_1, v1:any_1, v2:any_1):bit ",     
"CMDvarBETWEENsymmetric;",      "B between V1 and V2 (or vice versa) inclusive" 
]
 [ "calc",      "bit",  "pattern calc.bit(v:bit):bit ", "CMDvarCONVERT;",       
"Cast VALUE to bit"     ]
 [ "calc",      "bit",  "pattern calc.bit(v:bte):bit ", "CMDvarCONVERT;",       
"Cast VALUE to bit"     ]
 [ "calc",      "bit",  "pattern calc.bit(v:dbl):bit ", "CMDvarCONVERT;",       
"Cast VALUE to bit"     ]
@@ -10150,13 +10147,13 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "cmp",  "pattern calc.cmp(v1:str, v2:str):bte ",        
"CMDvarCMP;",   "Return -1/0/1 if V1 </==/> V2" ]
 [ "calc",      "date", "command calc.date(d:date):date ",      
"MTIMEdate_date;",      ""      ]
 [ "calc",      "date", "command calc.date(s:str):date ",       
"MTIMEdate_fromstr;",   ""      ]
-[ "calc",      "date", "command calc.date(t:timestamp):date ", 
"MTIMEtimestamp_extract_date;", ""      ]
+[ "calc",      "date", "command calc.date(t:timestamp):date ", 
"MTIMEtimestamp_extract_date_default;", ""      ]
 [ "calc",      "date", "command calc.date(v:void):date ",      "nil_2_date;",  
"cast to date"  ]
 [ "calc",      "date", "command calc.date(v:str):date ",       "str_2_date;",  
"cast to date"  ]
-[ "calc",      "daytime",      "command calc.daytime(d:daytime):daytime ",     
"MTIMEdaytime_daytime;",        ""      ]
-[ "calc",      "daytime",      "command calc.daytime(s:lng):daytime ", 
"MTIMEdaytime_fromseconds;",    ""      ]
+[ "calc",      "daytime",      "command calc.daytime(d:daytime):daytime ",     
"MTIMEdaytime2daytime;",        ""      ]
 [ "calc",      "daytime",      "command calc.daytime(s:str):daytime ", 
"MTIMEdaytime_fromstr;",        ""      ]
-[ "calc",      "daytime",      "command calc.daytime(t:timestamp):daytime ",   
"MTIMEtimestamp_extract_daytime;",      ""      ]
+[ "calc",      "daytime",      "command calc.daytime(s:lng):daytime ", 
"MTIMEsecs2daytime;",   ""      ]
+[ "calc",      "daytime",      "command calc.daytime(t:timestamp):daytime ",   
"MTIMEtimestamp_extract_daytime_default;",      ""      ]
 [ "calc",      "daytime",      "command calc.daytime(v:daytime, 
digits:int):daytime ", "daytime_2time_daytime;",       "cast daytime to daytime 
and check for overflow"        ]
 [ "calc",      "daytime",      "command calc.daytime(v:void):daytime ",        
"nil_2_daytime;",       "Cast to daytime"       ]
 [ "calc",      "daytime",      "command calc.daytime(v:void, 
digits:int):daytime ",    "nil_2time_daytime;",   "cast to daytime and check 
for overflow"        ]
@@ -10678,11 +10675,11 @@ stdout of test 'MAL-signatures` in direc
 [ "calc",      "sub_noerror",  "pattern calc.sub_noerror(v1:sht, v2:sht):sht 
",        "CMDvarSUB;",   "Return V1 - V2, overflow results in NIL value" ]
 [ "calc",      "substring",    "command calc.substring(s:str, offset:int, 
count:int):str ",    "STRsubstring;",        ""      ]
 [ "calc",      "substring",    "command calc.substring(s:str, offset:int):str 
",       "STRsubstringTail;",    ""      ]
-[ "calc",      "timestamp",    "command calc.timestamp(d:date):timestamp ",    
"MTIMEtimestamp_fromdate;",     ""      ]
-[ "calc",      "timestamp",    "command calc.timestamp(msecs:lng):timestamp ", 
"MTIMEtimestamp_frommsec;",     ""      ]
-[ "calc",      "timestamp",    "command calc.timestamp(secs:int):timestamp ",  
"MTIMEtimestamp_fromsecond;",   ""      ]
+[ "calc",      "timestamp",    "command calc.timestamp(t:timestamp):timestamp 
",       "MTIMEtimestamp2timestamp;",    ""      ]
+[ "calc",      "timestamp",    "command calc.timestamp(secs:int):timestamp ",  
"MTIMEtimestamp;",      ""      ]
+[ "calc",      "timestamp",    "command calc.timestamp(d:date):timestamp ",    
"MTIMEtimestamp_create_from_date;",     ""      ]
 [ "calc",      "timestamp",    "command calc.timestamp(s:str):timestamp ",     
"MTIMEtimestamp_fromstr;",      ""      ]
-[ "calc",      "timestamp",    "command calc.timestamp(t:timestamp):timestamp 
",       "MTIMEtimestamp_timestamp;",    ""      ]
+[ "calc",      "timestamp",    "command calc.timestamp(msecs:lng):timestamp ", 
"MTIMEtimestamp_lng;",  ""      ]
 [ "calc",      "timestamp",    "command calc.timestamp(v:date, 
d:int):timestamp ",     "date_2_timestamp;",    "cast date to a timestamp and 
check for overflow"       ]
 [ "calc",      "timestamp",    "command calc.timestamp(v:void):timestamp ",    
"nil_2_timestamp;",     "Cast to timestamp"     ]
 [ "calc",      "timestamp",    "command calc.timestamp(v:void, 
digits:int):timestamp ",        "nil_2time_timestamp;", "cast to timestamp and 
check for overflow"      ]
@@ -11359,55 +11356,109 @@ stdout of test 'MAL-signatures` in direc
 [ "mmath",     "tan",  "command mmath.tan(x:flt):flt ",        
"MATHunary_TANflt;",    ""      ]
 [ "mmath",     "tanh", "command mmath.tanh(x:dbl):dbl ",       
"MATHunary_TANHdbl;",   "The tanh() function returns the hyperbolic tangent of 
x, which is \n\tdefined mathematically as sinh(x) / cosh(x)."    ]
 [ "mmath",     "tanh", "command mmath.tanh(x:flt):flt ",       
"MATHunary_TANHflt;",   ""      ]
+[ "mtime",     "add",  "command mtime.add(v:timestamp, msecs:lng):timestamp ", 
"MTIMEtimestamp_add;",  "returns the timestamp that comes 'msecs'\n\t(possibly 
negative) after 'value'."        ]
+[ "mtime",     "adddays",      "command mtime.adddays(value:date, 
days:int):date ",    "MTIMEdate_adddays;",   "returns the date after a 
number\n\tof days (possibly negative)."       ]
 [ "mtime",     "addmonths",    "command mtime.addmonths(value:date, 
months:int):date ",        "MTIMEdate_addmonths;", "returns the date after a 
number of\n\tmonths (possibly negative)."     ]
-[ "mtime",     "century",      "command mtime.century(d:date):int ",   
"MTIMEdate_extract_century;",   "extracts century from date."   ]
-[ "mtime",     "century",      "command mtime.century(t:timestamp):int ",      
"MTIMEtimestamp_century;",      ""      ]
+[ "mtime",     "addyears",     "command mtime.addyears(value:date, 
years:int):date ",  "MTIMEdate_addyears;",  "returns the date after a 
number\n\tof years (possibly negative)."      ]
+[ "mtime",     "compute",      "command mtime.compute(r:zrule, year:int):date 
",       "MTIMEcompute_rule_foryear;",   "compute the date from a rule in a 
given year"  ]
 [ "mtime",     "current_date", "command mtime.current_date():date ",   
"MTIMEcurrent_date;",   ""      ]
 [ "mtime",     "current_time", "command mtime.current_time():daytime ",        
"MTIMEcurrent_time;",   ""      ]
 [ "mtime",     "current_timestamp",    "command 
mtime.current_timestamp():timestamp ", "MTIMEcurrent_timestamp;",      ""      ]
-[ "mtime",     "date_add_msec_interval",       "command 
mtime.date_add_msec_interval(t:date, ms:lng):date ",   
"MTIMEdate_add_msec_interval;", ""      ]
+[ "mtime",     "date", "command mtime.date(X_0:date):date ",   
"MTIMEdate2date;",      "generate the nil date" ]
+[ "mtime",     "date", "command mtime.date(yr:int, mo:int, day:int):date ",    
"MTIMEdate_create;",    "creates a date from (year,month,day)." ]
+[ "mtime",     "date", "command mtime.date(s:str):date ",      
"MTIMEdate_fromstr;",   "convert the string to a type date value"       ]
+[ "mtime",     "date", "command mtime.date(X_0:void):date ",   
"MTIMEnil2date;",       "generate the nil date" ]
+[ "mtime",     "date", "command mtime.date(t:timestamp, v:timezone):date ",    
"MTIMEtimestamp_extract_date;", "extracts date from timestamp in a\n\tspecific 
timezone."       ]
+[ "mtime",     "date", "command mtime.date(t:timestamp):date ",        
"MTIMEtimestamp_extract_date_default;", "extracts date from timestamp\n\tin the 
local timezone."        ]
+[ "mtime",     "date_add_month_interval",      "command 
mtime.date_add_month_interval(t:date, s:int):date ",   "MTIMEdate_addmonths;", 
"Add months to a date"  ]
+[ "mtime",     "date_add_msec_interval",       "command 
mtime.date_add_msec_interval(t:date, ms:lng):date ",   
"MTIMEdate_add_msec_interval_lng_wrap;",        ""      ]
+[ "mtime",     "date_add_sec_interval",        "command 
mtime.date_add_sec_interval(t:date, s:int):date ",     
"MTIMEdate_add_sec_interval_wrap;",     "Add seconds to a date" ]
 [ "mtime",     "date_sub_month_interval",      "command 
mtime.date_sub_month_interval(t:date, s:int):date ",   "MTIMEdate_submonths;", 
"Subtract months from a date"   ]
-[ "mtime",     "date_sub_msec_interval",       "command 
mtime.date_sub_msec_interval(t:date, ms:lng):date ",   
"MTIMEdate_sub_msec_interval;", ""      ]
+[ "mtime",     "date_sub_msec_interval",       "command 
mtime.date_sub_msec_interval(t:date, ms:lng):date ",   
"MTIMEdate_sub_msec_interval_lng_wrap;",        ""      ]
+[ "mtime",     "date_sub_sec_interval",        "command 
mtime.date_sub_sec_interval(t:date, s:int):date ",     
"MTIMEdate_sub_sec_interval_wrap;",     "Subtract seconds from a date"  ]
 [ "mtime",     "date_to_str",  "command mtime.date_to_str(d:date, 
format:str):str ",   "MTIMEdate_to_str;",    "create a string from the date, 
using the specified format (see man strftime)"  ]
 [ "mtime",     "day",  "command mtime.day(d:date):int ",       
"MTIMEdate_extract_day;",       "extracts day from date "       ]
+[ "mtime",     "day",  "command mtime.day(t:zrule):int ",      
"MTIMErule_extract_day;",       "extract day from rule."        ]
 [ "mtime",     "day",  "command mtime.day(msecs:lng):lng ",    
"MTIMEsql_day;",        ""      ]
 [ "mtime",     "day",  "command mtime.day(t:timestamp):int ",  
"MTIMEtimestamp_day;",  ""      ]
+[ "mtime",     "dayname",      "command mtime.dayname(day:int):str ",  
"MTIMEday_to_str;",     "Returns day name from a number\n\tbetween [1-7], 
str(nil) otherwise."  ]
+[ "mtime",     "daynum",       "command mtime.daynum(day:str):int ",   
"MTIMEday_from_str;",   "Returns number of day [1-7] from a\n\tstring or nil if 
does not match any."    ]
 [ "mtime",     "dayofweek",    "command mtime.dayofweek(d:date):int ", 
"MTIMEdate_extract_dayofweek;", "Returns the current day of the week\n\twhere 
1=monday, .., 7=sunday"   ]
 [ "mtime",     "dayofyear",    "command mtime.dayofyear(d:date):int ", 
"MTIMEdate_extract_dayofyear;", "Returns N where d is the Nth day\n\tof the 
year (january 1 returns 1)" ]
-[ "mtime",     "decade",       "command mtime.decade(d:date):int ",    
"MTIMEdate_extract_decade;",    "extracts decade from date."    ]
-[ "mtime",     "decade",       "command mtime.decade(t:timestamp):int ",       
"MTIMEtimestamp_decade;",       ""      ]
+[ "mtime",     "daytime",      "command mtime.daytime(h:int):daytime ",        
"MTIMEdaytime1;",       "default time with zeroed components"   ]
+[ "mtime",     "daytime",      "command mtime.daytime(h:int, m:int):daytime ", 
"MTIMEdaytime2;",       "default time with zeroed components"   ]
+[ "mtime",     "daytime",      "command mtime.daytime(X_0:daytime):daytime ",  
"MTIMEdaytime2daytime;",        ""      ]
+[ "mtime",     "daytime",      "command mtime.daytime(h:int, m:int, 
s:int):daytime ",  "MTIMEdaytime3;",       "default time with zeroed 
components"   ]
+[ "mtime",     "daytime",      "command mtime.daytime(h:int, m:int, s:int, 
mi:int):daytime ",  "MTIMEdaytime_create;", "creates a time from 
(hours,minutes,\n\tseconds,milliseconds) parameters."      ]
+[ "mtime",     "daytime",      "command mtime.daytime(s:str):daytime ",        
"MTIMEdaytime_fromstr;",        "convert the string to a daytime value."        
]
+[ "mtime",     "daytime",      "command mtime.daytime(X_0:lng):daytime ",      
"MTIMEsecs2daytime;",   ""      ]
+[ "mtime",     "daytime",      "command mtime.daytime(t:timestamp, 
v:timezone):daytime ",      "MTIMEtimestamp_extract_daytime;",      "extracts 
daytime from timestamp\n\tin a specific timezone."    ]
+[ "mtime",     "daytime",      "command mtime.daytime(t:timestamp):daytime ",  
"MTIMEtimestamp_extract_daytime_default;",      "extracts daytime from 
timestamp\n\tin the local timezone."     ]
 [ "mtime",     "diff", "command mtime.diff(val1:date, val2:date):int ",        
"MTIMEdate_diff;",      "returns the number of days\n\tbetween 'val1' and 
'val2'."      ]
-[ "mtime",     "diff", "command mtime.diff(val1:daytime, val2:daytime):lng ",  
"MTIMEdaytime_diff_msec;",      "returns the number of msec between 'val1' and 
'val2'." ]
-[ "mtime",     "diff", "command mtime.diff(val1:timestamp, val2:timestamp):lng 
",      "MTIMEtimestamp_diff_msec;",    "returns the number of 
milliseconds\n\tbetween 'val1' and 'val2'."      ]
+[ "mtime",     "diff", "command mtime.diff(val1:daytime, val2:daytime):lng ",  
"MTIMEdaytime_diff;",   "returns the number of msec between 'val1' and 'val2'." 
]
+[ "mtime",     "diff", "command mtime.diff(val1:timestamp, val2:timestamp):lng 
",      "MTIMEtimestamp_diff;", "returns the number of milliseconds\n\tbetween 
'val1' and 'val2'."      ]
+[ "mtime",     "dst",  "command mtime.dst(t:timestamp, v:timezone):bit ",      
"MTIMEtimestamp_inside_dst;",   "return whether DST holds in the\n\ttimezone at 
a certain point of time."       ]
+[ "mtime",     "end_dst",      "command mtime.end_dst(t:timezone):zrule ",     
"MTIMEtzone_extract_end;",      "extract rule that determines\n\tend of DST 
from timezone."     ]
+[ "mtime",     "epilogue",     "command mtime.epilogue():void ",       
"MTIMEepilogue;",       ""      ]
 [ "mtime",     "hours",        "command mtime.hours(h:daytime):int ",  
"MTIMEdaytime_extract_hours;",  "extracts hour from daytime"    ]
 [ "mtime",     "hours",        "command mtime.hours(msecs:lng):int ",  
"MTIMEsql_hours;",      ""      ]
 [ "mtime",     "hours",        "command mtime.hours(t:timestamp):int ",        
"MTIMEtimestamp_hours;",        ""      ]
-[ "mtime",     "local_timezone",       "command mtime.local_timezone():lng ",  
"MTIMElocal_timezone_msec;",    "get the local timezone in seconds"     ]
+[ "mtime",     "local_timezone",       "command mtime.local_timezone():lng ",  
"MTIMElocal_timezone;", "get the local timezone in seconds"     ]
+[ "mtime",     "milliseconds", "command mtime.milliseconds(d:daytime):int ",   
"MTIMEdaytime_extract_milliseconds;",   "extracts milliseconds from daytime"    
]
+[ "mtime",     "milliseconds", "command mtime.milliseconds(t:timestamp):int ", 
"MTIMEtimestamp_milliseconds;", ""      ]
 [ "mtime",     "minutes",      "command mtime.minutes(d:daytime):int ",        
"MTIMEdaytime_extract_minutes;",        "extracts minutes from daytime" ]
+[ "mtime",     "minutes",      "command mtime.minutes(t:zrule):int ",  
"MTIMErule_extract_minutes;",   "extract minutes from rule."    ]
 [ "mtime",     "minutes",      "command mtime.minutes(msecs:lng):int ",        
"MTIMEsql_minutes;",    ""      ]
 [ "mtime",     "minutes",      "command mtime.minutes(t:timestamp):int ",      
"MTIMEtimestamp_minutes;",      ""      ]
+[ "mtime",     "minutes",      "command mtime.minutes(t:timezone):int ",       
"MTIMEtzone_extract_minutes;",  "extract number of minutes that\n\ttime zone is 
offset wrt GMT."        ]
 [ "mtime",     "month",        "command mtime.month(d:date):int ",     
"MTIMEdate_extract_month;",     "extracts month from date"      ]
+[ "mtime",     "month",        "command mtime.month(t:zrule):int ",    
"MTIMErule_extract_month;",     "extract month from rule."      ]
 [ "mtime",     "month",        "command mtime.month(months:int):int ", 
"MTIMEsql_month;",      ""      ]
 [ "mtime",     "month",        "command mtime.month(t:timestamp):int ",        
"MTIMEtimestamp_month;",        ""      ]
+[ "mtime",     "monthname",    "command mtime.monthname(month:int):str ",      
"MTIMEmonth_to_str;",   "Returns month name from a number\n\tbetween [1-12], 
str(nil) otherwise."       ]
+[ "mtime",     "monthnum",     "command mtime.monthnum(month:str):int ",       
"MTIMEmonth_from_str;", "Returns month number [1-12] from a string\n\t or nil 
if does not match any."   ]
+[ "mtime",     "msec", "unsafe command mtime.msec():lng ",     "MTIMEmsec;",   
"get time of day in msec since 1-1-1970."       ]
+[ "mtime",     "msecs",        "command mtime.msecs(d:int, h:int, m:int, 
s:int, ms:int):lng ", "MTIMEmsecs;",  "convert date components to milliseconds" 
      ]
 [ "mtime",     "prelude",      "command mtime.prelude():void ",        
"MTIMEprelude;",        ""      ]
 [ "mtime",     "quarter",      "command mtime.quarter(d:date):int ",   
"MTIMEdate_extract_quarter;",   "extracts quarter from date"    ]
 [ "mtime",     "quarter",      "command mtime.quarter(t:timestamp):int ",      
"MTIMEtimestamp_quarter;",      ""      ]
+[ "mtime",     "rule", "command mtime.rule(mo:int, d:int, wkday:int, 
mi:int):zrule ",  "MTIMErule_create;",    "create a DST start/end date rule."   
  ]
+[ "mtime",     "rule", "command mtime.rule(s:str):zrule ",     
"MTIMErule_fromstr;",   "create a rule from a  string." ]
+[ "mtime",     "seconds",      "command mtime.seconds(d:daytime):int ",        
"MTIMEdaytime_extract_seconds;",        "extracts seconds from daytime" ]
 [ "mtime",     "seconds",      "command mtime.seconds(msecs:lng):int ",        
"MTIMEsql_seconds;",    ""      ]
+[ "mtime",     "seconds",      "command mtime.seconds(t:timestamp):int ",      
"MTIMEtimestamp_seconds;",      ""      ]
+[ "mtime",     "setTimezone",  "command mtime.setTimezone(name:str):timezone 
",        "MTIMEtimezone;",       "Test and set the timezone."    ]
 [ "mtime",     "sql_seconds",  "command mtime.sql_seconds(d:daytime):int ",    
"MTIMEdaytime_extract_sql_seconds;",    "extracts seconds (with fractional 
milliseconds) from daytime"  ]
 [ "mtime",     "sql_seconds",  "command mtime.sql_seconds(t:timestamp):int ",  
"MTIMEtimestamp_sql_seconds;",  ""      ]
+[ "mtime",     "start_dst",    "command mtime.start_dst(t:timezone):zrule ",   
"MTIMEtzone_extract_start;",    "extract rule that determines\n\tstart of DST 
from timezone."   ]
 [ "mtime",     "str_to_date",  "command mtime.str_to_date(s:str, 
format:str):date ",   "MTIMEstr_to_date;",    "create a date from the string, 
using the specified format (see man strptime)"  ]
 [ "mtime",     "str_to_time",  "command mtime.str_to_time(s:str, 
format:str):daytime ",        "MTIMEstr_to_time;",    "create a time from the 
string, using the specified format (see man strptime)"  ]
 [ "mtime",     "str_to_timestamp",     "command mtime.str_to_timestamp(s:str, 
format:str):timestamp ", "MTIMEstr_to_timestamp;",       "create a timestamp 
from the string, using the specified format (see man strptime)"     ]
-[ "mtime",     "time_add_msec_interval",       "command 
mtime.time_add_msec_interval(t:daytime, ms:lng):daytime ",     
"MTIMEtime_add_msec_interval;", "Add seconds to a time" ]
-[ "mtime",     "time_sub_msec_interval",       "command 
mtime.time_sub_msec_interval(t:daytime, ms:lng):daytime ",     
"MTIMEtime_sub_msec_interval;", "Subtract seconds from a time"  ]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to