Changeset: c759885b7a59 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=c759885b7a59
Branch: default
Log Message:
merged
diffs (truncated from 1167 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
@@ -3790,16 +3790,22 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"MTIMEdate_fromstr_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:timestamp]):bat[:date]
", "MTIMEtimestamp_extract_date_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"batstr_2_date;", "" ]
+[ "batcalc", "date", "command batcalc.date(X_1:bat[:str],
X_2:bat[:oid]):bat[:date] ", "batstr_2_date_cand;", "" ]
[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid]):bat[:date] ",
"nil_2_date;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:daytime]):bat[:daytime] ",
"MTIMEdaytime_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:lng]):bat[:daytime] ",
"MTIMEdaytime_fromseconds_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:str]):bat[:daytime] ",
"MTIMEdaytime_fromstr_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:timestamp]):bat[:daytime] ",
"MTIMEtimestamp_extract_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command batcalc.daytime(X_1:bat[:str],
X_2:int):bat[:daytime] ", "batstr_2time_daytime;", "" ]
+[ "batcalc", "daytime", "command batcalc.daytime(X_1:bat[:str],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "batstr_2time_daytime_cand;",
"" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "daytime_2time_daytime;", ""
]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int):bat[:daytime] ", "daytime_2time_daytime;", "" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:oid],
X_2:int):bat[:daytime] ", "nil_2time_daytime;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:lng],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "second_interval_2_daytime;",
"" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:lng],
X_2:int):bat[:daytime] ", "second_interval_2_daytime;", "" ]
-[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int):bat[:daytime] ", "str_2time_daytimetz;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:bat[:oid], X_3:int, X_4:int):bat[:daytime] ", "str_2time_daytimetz;", ""
]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int, X_3:int):bat[:daytime] ", "str_2time_daytimetz;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:timestamp],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "timestamp_2_daytime;", "" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:timestamp],
X_2:int):bat[:daytime] ", "timestamp_2_daytime;", "" ]
[ "batcalc", "dbl", "pattern batcalc.dbl(X_1:bat[:bit]):bat[:dbl] ",
"CMDconvertsignal_dbl;", "" ]
[ "batcalc", "dbl", "pattern batcalc.dbl(X_1:bat[:bit],
X_2:bat[:oid]):bat[:dbl] ", "CMDconvertsignal_dbl;", "" ]
@@ -5255,10 +5261,14 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "timestamp", "command
batcalc.timestamp(X_1:bat[:str]):bat[:timestamp] ",
"MTIMEtimestamp_fromstr_bulk;", "" ]
[ "batcalc", "timestamp", "command
batcalc.timestamp(X_1:bat[:timestamp]):bat[:timestamp] ",
"MTIMEtimestamp_timestamp_bulk;", "" ]
[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:int):bat[:timestamp] ", "batstr_2time_timestamp;", "" ]
+[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "batstr_2time_timestamp_cand;",
"" ]
[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:int, X_3:int):bat[:timestamp] ", "batstr_2time_timestamptz;", "" ]
+[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:bat[:oid], X_3:int, X_4:int):bat[:timestamp] ",
"batstr_2time_timestamptz_cand;", "" ]
+[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:date],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "date_2_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:date],
X_2:int):bat[:timestamp] ", "date_2_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:oid],
X_2:int):bat[:timestamp] ", "nil_2time_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:oid],
X_2:int, X_3:bat[:BAT]):bat[:timestamp] ", "nil_2time_timestamp;", "" ]
+[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:timestamp],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "timestamp_2time_timestamp;",
"" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:timestamp],
X_2:int):bat[:timestamp] ", "timestamp_2time_timestamp;", "" ]
[ "batcalc", "wkb", "command batcalc.wkb(X_1:bat[:wkb], X_2:int,
X_3:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
[ "batcalc", "xml", "command batcalc.xml(X_1:bat[:str]):bat[:xml] ",
"BATXMLstr2xml;", "" ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -5338,16 +5338,22 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"MTIMEdate_fromstr_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:timestamp]):bat[:date]
", "MTIMEtimestamp_extract_date_bulk;", "" ]
[ "batcalc", "date", "command batcalc.date(X_1:bat[:str]):bat[:date] ",
"batstr_2_date;", "" ]
+[ "batcalc", "date", "command batcalc.date(X_1:bat[:str],
X_2:bat[:oid]):bat[:date] ", "batstr_2_date_cand;", "" ]
[ "batcalc", "date", "pattern batcalc.date(X_1:bat[:oid]):bat[:date] ",
"nil_2_date;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:daytime]):bat[:daytime] ",
"MTIMEdaytime_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:lng]):bat[:daytime] ",
"MTIMEdaytime_fromseconds_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:str]):bat[:daytime] ",
"MTIMEdaytime_fromstr_bulk;", "" ]
[ "batcalc", "daytime", "command
batcalc.daytime(X_1:bat[:timestamp]):bat[:daytime] ",
"MTIMEtimestamp_extract_daytime_bulk;", "" ]
[ "batcalc", "daytime", "command batcalc.daytime(X_1:bat[:str],
X_2:int):bat[:daytime] ", "batstr_2time_daytime;", "" ]
+[ "batcalc", "daytime", "command batcalc.daytime(X_1:bat[:str],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "batstr_2time_daytime_cand;",
"" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "daytime_2time_daytime;", ""
]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int):bat[:daytime] ", "daytime_2time_daytime;", "" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:oid],
X_2:int):bat[:daytime] ", "nil_2time_daytime;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:lng],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "second_interval_2_daytime;",
"" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:lng],
X_2:int):bat[:daytime] ", "second_interval_2_daytime;", "" ]
-[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int):bat[:daytime] ", "str_2time_daytimetz;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:bat[:oid], X_3:int, X_4:int):bat[:daytime] ", "str_2time_daytimetz;", ""
]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:daytime],
X_2:int, X_3:int):bat[:daytime] ", "str_2time_daytimetz;", "" ]
+[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:timestamp],
X_2:bat[:oid], X_3:int):bat[:daytime] ", "timestamp_2_daytime;", "" ]
[ "batcalc", "daytime", "pattern batcalc.daytime(X_1:bat[:timestamp],
X_2:int):bat[:daytime] ", "timestamp_2_daytime;", "" ]
[ "batcalc", "dbl", "pattern batcalc.dbl(X_1:bat[:bit]):bat[:dbl] ",
"CMDconvertsignal_dbl;", "" ]
[ "batcalc", "dbl", "pattern batcalc.dbl(X_1:bat[:bit],
X_2:bat[:oid]):bat[:dbl] ", "CMDconvertsignal_dbl;", "" ]
@@ -6818,12 +6824,17 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "mod_noerror", "pattern batcalc.mod_noerror(X_1:sht,
X_2:bat[:sht], X_3:bat[:oid]):bat[:int] ", "CMDbatMOD;", "" ]
[ "batcalc", "mod_noerror", "pattern batcalc.mod_noerror(X_1:sht,
X_2:bat[:sht], X_3:bat[:oid]):bat[:lng] ", "CMDbatMOD;", "" ]
[ "batcalc", "mod_noerror", "pattern batcalc.mod_noerror(X_1:sht,
X_2:bat[:sht], X_3:bat[:oid]):bat[:sht] ", "CMDbatMOD;", "" ]
+[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:bte], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:bte], X_2:int, X_3:int):bat[:int] ",
"month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:hge], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:hge], X_2:int, X_3:int):bat[:int] ",
"month_interval;", "" ]
+[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:int], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:int], X_2:int, X_3:int):bat[:int] ",
"month_interval;", "" ]
+[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:lng], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:lng], X_2:int, X_3:int):bat[:int] ",
"month_interval;", "" ]
+[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:sht], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:sht], X_2:int, X_3:int):bat[:int] ",
"month_interval;", "" ]
+[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:str], X_2:bat[:oid], X_3:int,
X_4:int):bat[:int] ", "month_interval_str;", "" ]
[ "batcalc", "month_interval", "pattern
batcalc.month_interval(X_1:bat[:str], X_2:int, X_3:int):bat[:int] ",
"month_interval_str;", "" ]
[ "batcalc", "mul_noerror", "pattern batcalc.mul_noerror(X_1:bat[:bte],
X_2:bat[:bte], X_3:bat[:oid], X_4:bat[:oid]):bat[:bte] ", "CMDbatMUL;", ""
]
[ "batcalc", "mul_noerror", "pattern batcalc.mul_noerror(X_1:bat[:bte],
X_2:bat[:dbl], X_3:bat[:oid], X_4:bat[:oid]):bat[:dbl] ", "CMDbatMUL;", ""
]
@@ -7232,13 +7243,19 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "second_interval", "command
batcalc.second_interval(X_1:int, X_2:bat[:hge], X_3:int, X_4:int):bat[:lng] ",
"hge_batdec2second_interval;", "" ]
[ "batcalc", "second_interval", "command
batcalc.second_interval(X_1:int, X_2:bat[:int], X_3:int, X_4:int):bat[:lng] ",
"int_batdec2second_interval;", "" ]
[ "batcalc", "second_interval", "command
batcalc.second_interval(X_1:int, X_2:bat[:lng], X_3:int, X_4:int):bat[:lng] ",
"lng_batdec2second_interval;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:bte], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:bte], X_2:int, X_3:int):bat[:lng] ",
"second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:hge], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:hge], X_2:int, X_3:int):bat[:lng] ",
"second_interval;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:int], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:int], X_2:int, X_3:int):bat[:lng] ",
"second_interval;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:lng], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:lng], X_2:int, X_3:int):bat[:lng] ",
"second_interval;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:sht], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:sht], X_2:int, X_3:int):bat[:lng] ",
"second_interval;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:daytime], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval_daytime;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:daytime], X_2:int, X_3:int):bat[:lng] ",
"second_interval_daytime;", "" ]
+[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:str], X_2:bat[:oid], X_3:int,
X_4:int):bat[:lng] ", "second_interval_str;", "" ]
[ "batcalc", "second_interval", "pattern
batcalc.second_interval(X_1:bat[:str], X_2:int, X_3:int):bat[:lng] ",
"second_interval_str;", "" ]
[ "batcalc", "second_interval", "command
batcalc.second_interval(X_1:int, X_2:bat[:sht], X_3:int, X_4:int):bat[:lng] ",
"sht_batdec2second_interval;", "" ]
[ "batcalc", "sht", "pattern batcalc.sht(X_1:bat[:bit]):bat[:sht] ",
"CMDconvertsignal_sht;", "" ]
@@ -7493,10 +7510,14 @@ stdout of test 'MAL-signatures` in direc
[ "batcalc", "timestamp", "command
batcalc.timestamp(X_1:bat[:str]):bat[:timestamp] ",
"MTIMEtimestamp_fromstr_bulk;", "" ]
[ "batcalc", "timestamp", "command
batcalc.timestamp(X_1:bat[:timestamp]):bat[:timestamp] ",
"MTIMEtimestamp_timestamp_bulk;", "" ]
[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:int):bat[:timestamp] ", "batstr_2time_timestamp;", "" ]
+[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "batstr_2time_timestamp_cand;",
"" ]
[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:int, X_3:int):bat[:timestamp] ", "batstr_2time_timestamptz;", "" ]
+[ "batcalc", "timestamp", "command batcalc.timestamp(X_1:bat[:str],
X_2:bat[:oid], X_3:int, X_4:int):bat[:timestamp] ",
"batstr_2time_timestamptz_cand;", "" ]
+[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:date],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "date_2_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:date],
X_2:int):bat[:timestamp] ", "date_2_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:oid],
X_2:int):bat[:timestamp] ", "nil_2time_timestamp;", "" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:oid],
X_2:int, X_3:bat[:BAT]):bat[:timestamp] ", "nil_2time_timestamp;", "" ]
+[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:timestamp],
X_2:bat[:oid], X_3:int):bat[:timestamp] ", "timestamp_2time_timestamp;",
"" ]
[ "batcalc", "timestamp", "pattern batcalc.timestamp(X_1:bat[:timestamp],
X_2:int):bat[:timestamp] ", "timestamp_2time_timestamp;", "" ]
[ "batcalc", "wkb", "command batcalc.wkb(X_1:bat[:wkb], X_2:int,
X_3:int):bat[:wkb] ", "geom_2_geom_bat;", "" ]
[ "batcalc", "xml", "command batcalc.xml(X_1:bat[:str]):bat[:xml] ",
"BATXMLstr2xml;", "" ]
diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -5667,16 +5667,22 @@ static mel_func sql_init_funcs[] = {
pattern("calc", "timestamp", str_2time_timestamptz, false, "cast to timestamp
and check for overflow", args(1,4,
arg("",timestamp),arg("v",str),arg("digits",int),arg("has_tz",int))),
pattern("calc", "timestamp", timestamp_2time_timestamp, false, "cast
timestamp to timestamp and check for overflow", args(1,3,
arg("",timestamp),arg("v",timestamp),arg("digits",int))),
command("batcalc", "timestamp", batstr_2time_timestamp, false, "cast to
timestamp and check for overflow", args(1,3,
batarg("",timestamp),batarg("v",str),arg("digits",int))),
+ command("batcalc", "timestamp", batstr_2time_timestamp_cand, false, "cast to
timestamp and check for overflow", args(1,4,
batarg("",timestamp),batarg("v",str),batarg("s",oid),arg("digits",int))),
command("batcalc", "timestamp", batstr_2time_timestamptz, false, "cast to
timestamp and check for overflow", args(1,4,
batarg("",timestamp),batarg("v",str),arg("digits",int),arg("has_tz",int))),
+ command("batcalc", "timestamp", batstr_2time_timestamptz_cand, false, "cast
to timestamp and check for overflow", args(1,5,
batarg("",timestamp),batarg("v",str),batarg("s",oid),arg("digits",int),arg("has_tz",int))),
pattern("batcalc", "timestamp", timestamp_2time_timestamp, false, "cast
timestamp to timestamp and check for overflow", args(1,3,
batarg("",timestamp),batarg("v",timestamp),arg("digits",int))),
+ pattern("batcalc", "timestamp", timestamp_2time_timestamp, false, "cast
timestamp to timestamp and check for overflow", args(1,4,
batarg("",timestamp),batarg("v",timestamp),batarg("s",oid),arg("digits",int))),
pattern("calc", "daytime", nil_2time_daytime, false, "cast to daytime and
check for overflow", args(1,3,
arg("",daytime),arg("v",void),arg("digits",int))),
pattern("batcalc", "daytime", nil_2time_daytime, false, "cast to daytime and
check for overflow", args(1,3,
batarg("",daytime),batarg("v",oid),arg("digits",int))),
pattern("calc", "daytime", str_2time_daytime, false, "cast to daytime and
check for overflow", args(1,3, arg("",daytime),arg("v",str),arg("digits",int))),
pattern("calc", "daytime", str_2time_daytimetz, false, "cast to daytime and
check for overflow", args(1,4,
arg("",daytime),arg("v",str),arg("digits",int),arg("has_tz",int))),
pattern("calc", "daytime", daytime_2time_daytime, false, "cast daytime to
daytime and check for overflow", args(1,3,
arg("",daytime),arg("v",daytime),arg("digits",int))),
command("batcalc", "daytime", batstr_2time_daytime, false, "cast to daytime
and check for overflow", args(1,3,
batarg("",daytime),batarg("v",str),arg("digits",int))),
- pattern("batcalc", "daytime", str_2time_daytimetz, false, "cast daytime to
daytime and check for overflow", args(1,3,
batarg("",daytime),batarg("v",daytime),arg("digits",int))),
+ command("batcalc", "daytime", batstr_2time_daytime_cand, false, "cast to
daytime and check for overflow", args(1,4,
batarg("",daytime),batarg("v",str),batarg("s",oid),arg("digits",int))),
+ pattern("batcalc", "daytime", str_2time_daytimetz, false, "cast daytime to
daytime and check for overflow", args(1,4,
batarg("",daytime),batarg("v",daytime),arg("digits",int),arg("has_tz",int))),
+ pattern("batcalc", "daytime", str_2time_daytimetz, false, "cast daytime to
daytime and check for overflow", args(1,5,
batarg("",daytime),batarg("v",daytime),batarg("s",oid),arg("digits",int),arg("has_tz",int))),
pattern("batcalc", "daytime", daytime_2time_daytime, false, "cast daytime to
daytime and check for overflow", args(1,3,
batarg("",daytime),batarg("v",daytime),arg("digits",int))),
+ pattern("batcalc", "daytime", daytime_2time_daytime, false, "cast daytime to
daytime and check for overflow", args(1,4,
batarg("",daytime),batarg("v",daytime),batarg("s",oid),arg("digits",int))),
command("sql", "date_trunc", bat_date_trunc, false, "Truncate a timestamp to
(millennium, century,decade,year,quarter,month,week,day,hour,minute,second,
milliseconds,microseconds)", args(1,3,
batarg("",timestamp),arg("scale",str),batarg("v",timestamp))),
command("sql", "date_trunc", date_trunc, false, "Truncate a timestamp to
(millennium, century,decade,year,quarter,month,week,day,hour,minute,second,
milliseconds,microseconds)", args(1,3,
arg("",timestamp),arg("scale",str),arg("v",timestamp))),
pattern("sql", "current_time", SQLcurrent_daytime, false, "Get the clients
current daytime", args(1,1, arg("",daytime))),
@@ -5685,6 +5691,7 @@ static mel_func sql_init_funcs[] = {
pattern("batcalc", "date", nil_2_date, false, "cast to date", args(1,2,
batarg("",date),batarg("v",oid))),
pattern("calc", "date", str_2_date, false, "cast to date", args(1,2,
arg("",date),arg("v",str))),
command("batcalc", "date", batstr_2_date, false, "cast to date", args(1,2,
batarg("",date),batarg("v",str))),
+ command("batcalc", "date", batstr_2_date_cand, false, "cast to date",
args(1,3, batarg("",date),batarg("v",str),batarg("s",oid))),
command("calc", "blob", str_2_blob, false, "cast to blob", args(1,2,
arg("",blob),arg("v",str))),
command("batcalc", "blob", batstr_2_blob, false, "cast to blob", args(1,2,
batarg("",blob),batarg("v",str))),
command("batcalc", "blob", batstr_2_blob_cand, false, "cast to blob",
args(1,3, batarg("",blob),batarg("v",str),batarg("s",oid))),
@@ -5696,24 +5703,34 @@ static mel_func sql_init_funcs[] = {
command("calc", "substring", STRsubstring, false, "", args(1,4,
arg("",str),arg("s",str),arg("offset",int),arg("count",int))),
pattern("calc", "month_interval", month_interval_str, false, "cast str to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",str),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval_str, false, "cast str to
a month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",str),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval_str, false, "cast str to
a month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",str),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval_str, false, "cast str to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",str),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval_str, false, "cast str
to a second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",str),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval_str, false, "cast str
to a second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",str),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "month_interval", month_interval, false, "cast bte to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",bte),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval, false, "cast bte to a
month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",bte),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval, false, "cast bte to a
month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",bte),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval, false, "cast bte to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",bte),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval, false, "cast bte to a
second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",bte),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval, false, "cast bte to a
second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",bte),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "month_interval", month_interval, false, "cast sht to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",sht),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval, false, "cast sht to a
month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",sht),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval, false, "cast sht to a
month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",sht),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval, false, "cast sht to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",sht),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval, false, "cast sht to a
second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",sht),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval, false, "cast sht to a
second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",sht),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "month_interval", month_interval, false, "cast int to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",int),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval, false, "cast int to a
month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",int),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval, false, "cast int to a
month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",int),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval, false, "cast int to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",int),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval, false, "cast int to a
second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",int),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval, false, "cast int to a
second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",int),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "month_interval", month_interval, false, "cast lng to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",lng),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval, false, "cast lng to a
month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",lng),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval, false, "cast lng to a
month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",lng),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval, false, "cast lng to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",lng),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval, false, "cast lng to a
second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",lng),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval, false, "cast lng to a
second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",lng),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "rowid", sql_rowid, false, "return the next rowid", args(1,4,
arg("",oid),argany("v",1),arg("schema",str),arg("table",str))),
pattern("sql", "shrink", SQLshrink, true, "Consolidate the deletion table
over all columns using shrinking", args(0,2, arg("sch",str),arg("tbl",str))),
pattern("sql", "reuse", SQLreuse, true, "Consolidate the deletion table over
all columns reusing deleted slots", args(0,2, arg("sch",str),arg("tbl",str))),
@@ -5723,12 +5740,16 @@ static mel_func sql_init_funcs[] = {
command("sql", "epilogue", SQLepilogue, false, "", noargs),
pattern("calc", "second_interval", second_interval_daytime, false, "cast
daytime to a second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",daytime),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval_daytime, false, "cast
daytime to a second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",daytime),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval_daytime, false, "cast
daytime to a second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",daytime),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "daytime", second_interval_2_daytime, false, "cast
second_interval to a daytime and check for overflow", args(1,3,
arg("",daytime),arg("v",lng),arg("d",int))),
pattern("batcalc", "daytime", second_interval_2_daytime, false, "cast
second_interval to a daytime and check for overflow", args(1,3,
batarg("",daytime),batarg("v",lng),arg("d",int))),
+ pattern("batcalc", "daytime", second_interval_2_daytime, false, "cast
second_interval to a daytime and check for overflow", args(1,4,
batarg("",daytime),batarg("v",lng),batarg("s",oid),arg("d",int))),
pattern("calc", "daytime", timestamp_2_daytime, false, "cast timestamp to a
daytime and check for overflow", args(1,3,
arg("",daytime),arg("v",timestamp),arg("d",int))),
pattern("batcalc", "daytime", timestamp_2_daytime, false, "cast timestamp to
a daytime and check for overflow", args(1,3,
batarg("",daytime),batarg("v",timestamp),arg("d",int))),
+ pattern("batcalc", "daytime", timestamp_2_daytime, false, "cast timestamp to
a daytime and check for overflow", args(1,4,
batarg("",daytime),batarg("v",timestamp),batarg("s",oid),arg("d",int))),
pattern("calc", "timestamp", date_2_timestamp, false, "cast date to a
timestamp and check for overflow", args(1,3,
arg("",timestamp),arg("v",date),arg("d",int))),
pattern("batcalc", "timestamp", date_2_timestamp, false, "cast date to a
timestamp and check for overflow", args(1,3,
batarg("",timestamp),batarg("v",date),arg("d",int))),
+ pattern("batcalc", "timestamp", date_2_timestamp, false, "cast date to a
timestamp and check for overflow", args(1,4,
batarg("",timestamp),batarg("v",date),batarg("s",oid),arg("d",int))),
command("calc", "index", STRindex_bte, false, "Return the offsets as an index
bat", args(1,3, arg("",bte),arg("v",str),arg("u",bit))),
command("batcalc", "index", BATSTRindex_bte, false, "Return the offsets as an
index bat", args(1,3, batarg("",bte),batarg("v",str),arg("u",bit))),
command("calc", "index", STRindex_sht, false, "Return the offsets as an index
bat", args(1,3, arg("",sht),arg("v",str),arg("u",bit))),
@@ -6449,17 +6470,17 @@ static mel_func sql_init_funcs[] = {
command("batsql", "round", hge_bat_round_wrap, false, "round off the decimal
v(d,s) to r digits behind the dot (if r < 0, before the dot)", args(1,5,
batarg("",hge),batarg("v",hge),arg("d",int),arg("s",int),arg("r",bte))),
command("calc", "second_interval", hge_dec2second_interval, false, "cast hge
decimal to a second_interval", args(1,5,
arg("",lng),arg("sc",int),arg("v",hge),arg("ek",int),arg("sk",int))),
command("batcalc", "second_interval", hge_batdec2second_interval, false,
"cast hge decimal to a second_interval", args(1,5,
batarg("",lng),arg("sc",int),batarg("v",hge),arg("ek",int),arg("sk",int))),
- command("batcalc", "second_interval", hge_batdec2second_interval, false,
"cast hge decimal to a second_cand_interval", args(1,6,
batarg("",lng),arg("sc",int),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
+ command("batcalc", "second_interval", hge_batdec2second_interval, false,
"cast hge decimal to a second_interval", args(1,6,
batarg("",lng),arg("sc",int),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
command("calc", "hge", nil_2dec_hge, false, "cast to dec(hge) and check for
overflow", args(1,4,
arg("",hge),arg("v",void),arg("digits",int),arg("scale",int))),
command("batcalc", "hge", batnil_2dec_hge, false, "cast to dec(hge) and check
for overflow", args(1,4,
batarg("",hge),batarg("v",void),arg("digits",int),arg("scale",int))),
command("calc", "hge", str_2dec_hge, false, "cast to dec(hge) and check for
overflow", args(1,4,
arg("",hge),arg("v",str),arg("digits",int),arg("scale",int))),
command("batcalc", "hge", batstr_2dec_hge, false, "cast to dec(hge) and check
for overflow", args(1,4,
batarg("",hge),batarg("v",str),arg("digits",int),arg("scale",int))),
pattern("calc", "month_interval", month_interval, false, "cast hge to a
month_interval and check for overflow", args(1,4,
arg("",int),arg("v",hge),arg("ek",int),arg("sk",int))),
pattern("batcalc", "month_interval", month_interval, false, "cast hge to a
month_interval and check for overflow", args(1,4,
batarg("",int),batarg("v",hge),arg("ek",int),arg("sk",int))),
- pattern("batcalc", "month_interval", month_interval, false, "cast hge to a
month_cand_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "month_interval", month_interval, false, "cast hge to a
month_interval and check for overflow", args(1,5,
batarg("",int),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
pattern("calc", "second_interval", second_interval, false, "cast hge to a
second_interval and check for overflow", args(1,4,
arg("",lng),arg("v",hge),arg("ek",int),arg("sk",int))),
pattern("batcalc", "second_interval", second_interval, false, "cast hge to a
second_interval and check for overflow", args(1,4,
batarg("",lng),batarg("v",hge),arg("ek",int),arg("sk",int))),
- pattern("batcalc", "second_interval", second_interval, false, "cast hge to a
second_cand_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
+ pattern("batcalc", "second_interval", second_interval, false, "cast hge to a
second_interval and check for overflow", args(1,5,
batarg("",lng),batarg("v",hge),batarg("s",oid),arg("ek",int),arg("sk",int))),
/* sql_decimal_hge */
command("calc", "hge", flt_num2dec_hge, false, "cast number to decimal(hge)
and check for overflow", args(1,4,
arg("",hge),arg("v",flt),arg("digits",int),arg("scale",int))),
command("batcalc", "hge", batflt_num2dec_hge, false, "cast number to
decimal(hge) and check for overflow", args(1,4,
batarg("",hge),batarg("v",flt),arg("digits",int),arg("scale",int))),
diff --git a/sql/backends/monet5/sql.h b/sql/backends/monet5/sql.h
--- a/sql/backends/monet5/sql.h
+++ b/sql/backends/monet5/sql.h
@@ -206,13 +206,16 @@ sql5_export str nil_2time_timestamp(Clie
sql5_export str str_2time_timestamp(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str str_2time_timestamptz(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
sql5_export str batstr_2time_timestamp(bat *res, const bat *v, const int *len);
+sql5_export str batstr_2time_timestamp_cand(bat *res, const bat *v, const bat
*s, const int *len);
sql5_export str batstr_2time_timestamptz(bat *res, const bat *v, const int
*len, int *tz);
+sql5_export str batstr_2time_timestamptz_cand(bat *res, const bat *v, const
bat *s, const int *len, int *tz);
sql5_export str timestamp_2time_timestamp(Client cntxt, MalBlkPtr mb,
MalStkPtr stk, InstrPtr pci);
sql5_export str nil_2time_daytime(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str str_2time_daytime(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str str_2time_daytimetz(Client cntxt, MalBlkPtr mb, MalStkPtr stk,
InstrPtr pci);
sql5_export str batstr_2time_daytime(bat *res, const bat *v, const int *len);
+sql5_export str batstr_2time_daytime_cand(bat *res, const bat *v, const bat
*s, const int *len);
sql5_export str daytime_2time_daytime(Client cntxt, MalBlkPtr mb, MalStkPtr
stk, InstrPtr pci);
sql5_export str bat_date_trunc(bat *res, const str *scale, const bat *v);
@@ -221,6 +224,7 @@ sql5_export str date_trunc(timestamp *re
sql5_export str nil_2_date(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str str_2_date(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr
pci);
sql5_export str batstr_2_date(bat *res, const bat *val);
+sql5_export str batstr_2_date_cand(bat *res, const bat *val, const bat *s);
sql5_export str str_2_blob(blob * *res, const str *val);
sql5_export str batstr_2_blob(bat *res, const bat *val);
diff --git a/sql/backends/monet5/sql_time.c b/sql/backends/monet5/sql_time.c
--- a/sql/backends/monet5/sql_time.c
+++ b/sql/backends/monet5/sql_time.c
@@ -27,12 +27,13 @@ str
daytime_2time_daytime(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
{
str msg = MAL_SUCCEED;
- BAT *b = NULL, *res = NULL;
+ BAT *b = NULL, *s = NULL, *res = NULL;
BUN q = 0;
daytime *restrict ret = NULL;
- int tpe = getArgType(mb, pci, 1), *digits = getArgReference_int(stk,
pci, 2), d = (*digits) ? *digits - 1 : 0;
+ int tpe = getArgType(mb, pci, 1), *digits = getArgReference_int(stk,
pci, pci->argc == 4 ? 3 : 2), d = (*digits) ? *digits - 1 : 0;
bool is_a_bat = false;
- bat *r = NULL;
+ bat *r = NULL, *sid = pci->argc == 4 ? getArgReference_bat(stk, pci,
2): NULL;
+ struct canditer ci = {0};
#ifdef HAVE_HGE
hge shift = 0, divider = 1, multiplier = 1;
#else
@@ -44,10 +45,14 @@ daytime_2time_daytime(Client cntxt, MalB
if (is_a_bat) {
tpe = getBatType(tpe);
if (!(b = BATdescriptor(*getArgReference_bat(stk, pci, 1)))) {
- msg = createException(SQL,
"batcalc.daytime_2time_daytime", SQLSTATE(HY005) "Cannot access column
descriptor");
+ msg = createException(SQL,
"batcalc.daytime_2time_daytime", SQLSTATE(HY005) RUNTIME_OBJECT_MISSING);
goto bailout;
}
- q = BATcount(b);
+ if (sid && !is_bat_nil(*sid) && (s = BATdescriptor(*sid)) ==
NULL) {
+ msg = createException(SQL,
"batcalc.timestamp_2_daytime", SQLSTATE(HY005) RUNTIME_OBJECT_MISSING);
+ goto bailout;
+ }
+ q = canditer_init(&ci, b, s);
if (!(res = COLnew(b->hseqbase, TYPE_daytime, q, TRANSIENT))) {
msg = createException(SQL,
"batcalc.daytime_2time_daytime", SQLSTATE(HY013) MAL_MALLOC_FAIL);
goto bailout;
@@ -68,10 +73,12 @@ daytime_2time_daytime(Client cntxt, MalB
}
if (is_a_bat) {
+ oid off = b->hseqbase;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list