Changeset: cd13274b1d93 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/cd13274b1d93
Added Files:
sql/test/BugTracker-2023/Tests/date_time-7374.test
sql/test/BugTracker-2023/Tests/timestamp_to_str-7370.test
Modified Files:
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
clients/Tests/exports.stable.out
gdk/gdk_time.c
gdk/gdk_time.h
monetdb5/modules/atoms/mtime.c
sql/backends/monet5/rel_bin.c
sql/backends/monet5/rel_physical.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql.h
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_gencode.h
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_time.c
sql/common/sql_types.c
sql/scripts/13_date.sql
sql/server/rel_dump.c
sql/server/rel_exp.c
sql/server/rel_optimize_exps.c
sql/server/rel_optimize_proj.c
sql/server/rel_optimize_sel.c
sql/server/rel_optimizer.c
sql/server/rel_propagate.c
sql/server/rel_rewriter.c
sql/server/rel_schema.c
sql/server/rel_select.c
sql/server/rel_statistics.c
sql/server/rel_unnest.c
sql/server/rel_updates.c
sql/server/rel_xml.c
sql/server/sql_atom.c
sql/server/sql_atom.h
sql/server/sql_parser.y
sql/server/sql_semantic.c
sql/test/BugTracker-2011/Tests/extract_seconds.Bug-2793.test
sql/test/BugTracker-2012/Tests/time-export-bug.Bug-2963.test
sql/test/BugTracker-2016/Tests/convert-function-test.Bug-3460.test
sql/test/BugTracker-2017/Tests/extract_quarter_week_from_date.Bug-3831.test
sql/test/BugTracker-2023/Tests/All
sql/test/Tests/timezone.test
sql/test/emptydb/Tests/check.stable.out.int128
sql/test/mergetables/Tests/forex.test
sql/test/odbc-escape-sequences/Tests/time-date-interval-functions.test
sql/test/orderidx/Tests/imprints_all_types.test
sql/test/orderidx/Tests/oidx_all_types.test
sql/test/pg_regress/Tests/horology.test
sql/test/pg_regress/Tests/time.test
sql/test/pg_regress/Tests/timestamp.test
sql/test/pg_regress/Tests/timestamptz.test
sql/test/snodgrass/Tests/date_parsing.test
sql/test/sys-schema/Tests/webExamplesDateTimeFunctionsOperators.test
Branch: cleanup_types
Log Message:
timestamp 'string' now always treats that as a timestamp with out time zone, ie
if +/-timezone offset is added its ignored.
timestamp with time zone 'string' treats that string (with +/-timezone offset)
now (as before) ie corrects the output using the passed offset.
if the string has no time zone, its treated as local timestamp (ie we
correct using the sessions time zone offset);
Some story for the time types with/witout time zone
this fixes bugs #7370 and #7374
diffs (truncated from 5177 to 300 lines):
diff --git a/clients/Tests/MAL-signatures-hge.test
b/clients/Tests/MAL-signatures-hge.test
--- a/clients/Tests/MAL-signatures-hge.test
+++ b/clients/Tests/MAL-signatures-hge.test
@@ -27794,6 +27794,36 @@ pattern batcalc.date(X_0:bat[:oid]):bat[
nil_2_date;
cast to date
batcalc
+datetz
+pattern batcalc.datetz(X_0:bat[:timestamp], X_1:bat[:lng]):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk;
+(empty)
+batcalc
+datetz
+pattern batcalc.datetz(X_0:bat[:timestamp], X_1:bat[:lng], X_2:bat[:oid],
X_3:bat[:oid]):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk;
+(empty)
+batcalc
+datetz
+pattern batcalc.datetz(X_0:timestamp, X_1:bat[:lng]):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk_p1;
+(empty)
+batcalc
+datetz
+pattern batcalc.datetz(X_0:timestamp, X_1:bat[:lng], X_2:bat[:oid]):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk_p1;
+(empty)
+batcalc
+datetz
+pattern batcalc.datetz(X_0:bat[:timestamp], X_1:lng):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk_p2;
+(empty)
+batcalc
+datetz
+pattern batcalc.datetz(X_0:bat[:timestamp], X_1:lng, X_2:bat[:oid]):bat[:date]
+MTIMEtimestamp_tz_extract_date_bulk_p2;
+(empty)
+batcalc
daytime
pattern batcalc.daytime(X_0:bat[:daytime], X_1:bat[:oid]):bat[:daytime]
MTIMEdaytime_daytime_bulk;
@@ -27835,15 +27865,15 @@ second_interval_2_daytime;
cast second_interval to a daytime and check for overflow
batcalc
daytime
-pattern batcalc.daytime(X_0:bat[:str], X_1:bat[:oid], X_2:int,
X_3:int):bat[:daytime]
-str_2time_daytimetz;
-cast daytime to daytime and check for overflow
-batcalc
-daytime
pattern batcalc.daytime(X_0:bat[:timestamp], X_1:bat[:oid],
X_2:int):bat[:daytime]
timestamp_2_daytime;
cast timestamp to a daytime and check for overflow
batcalc
+daytimetz
+pattern batcalc.daytimetz(X_0:bat[:str], X_1:bat[:oid], X_2:int,
X_3:lng):bat[:daytime]
+str_2time_daytimetz;
+cast daytime to daytime and check for overflow
+batcalc
dbl
pattern batcalc.dbl(X_0:bat[:bit]):bat[:dbl]
CMDconvertsignal_dbl;
@@ -30285,11 +30315,6 @@ batstr_2time_timestamp;
cast to timestamp and check for overflow
batcalc
timestamp
-command batcalc.timestamp(X_0:bat[:str], X_1:bat[:oid], X_2:int,
X_3:int):bat[:timestamp]
-batstr_2time_timestamptz;
-cast to timestamp and check for overflow
-batcalc
-timestamp
pattern batcalc.timestamp(X_0:bat[:date], X_1:bat[:oid],
X_2:int):bat[:timestamp]
date_2_timestamp;
cast date to a timestamp and check for overflow
@@ -30304,6 +30329,11 @@ pattern batcalc.timestamp(X_0:bat[:times
timestamp_2time_timestamp;
cast timestamp to timestamp and check for overflow
batcalc
+timestamptz
+command batcalc.timestamptz(X_0:bat[:str], X_1:bat[:oid], X_2:int,
X_3:lng):bat[:timestamp]
+batstr_2time_timestamptz;
+cast to timestamp and check for overflow
+batcalc
uuid
command batcalc.uuid(X_0:bat[:str], X_1:bat[:oid]):bat[:uuid]
UUIDstr2uuid_bulk;
@@ -32335,92 +32365,92 @@ MTIMEtimestamp_sql_seconds_bulk;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:bat[:str], X_1:bat[:str]):bat[:date]
+pattern batmtime.str_to_date(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid], X_4:lng):bat[:date]
MTIMEstr_to_date_bulk;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid]):bat[:date]
+pattern batmtime.str_to_date(X_0:bat[:str], X_1:bat[:str], X_2:lng):bat[:date]
MTIMEstr_to_date_bulk;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:str, X_1:bat[:str]):bat[:date]
+pattern batmtime.str_to_date(X_0:str, X_1:bat[:str], X_2:bat[:oid],
X_3:lng):bat[:date]
MTIMEstr_to_date_bulk_p1;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:str, X_1:bat[:str], X_2:bat[:oid]):bat[:date]
+pattern batmtime.str_to_date(X_0:str, X_1:bat[:str], X_2:lng):bat[:date]
MTIMEstr_to_date_bulk_p1;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:bat[:str], X_1:str):bat[:date]
+pattern batmtime.str_to_date(X_0:bat[:str], X_1:str, X_2:bat[:oid],
X_3:lng):bat[:date]
MTIMEstr_to_date_bulk_p2;
(empty)
batmtime
str_to_date
-pattern batmtime.str_to_date(X_0:bat[:str], X_1:str, X_2:bat[:oid]):bat[:date]
+pattern batmtime.str_to_date(X_0:bat[:str], X_1:str, X_2:lng):bat[:date]
MTIMEstr_to_date_bulk_p2;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:bat[:str], X_1:bat[:str]):bat[:daytime]
+pattern batmtime.str_to_time(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid], X_4:lng):bat[:daytime]
MTIMEstr_to_time_bulk;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid]):bat[:daytime]
+pattern batmtime.str_to_time(X_0:bat[:str], X_1:bat[:str],
X_2:lng):bat[:daytime]
MTIMEstr_to_time_bulk;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:str, X_1:bat[:str]):bat[:daytime]
+pattern batmtime.str_to_time(X_0:str, X_1:bat[:str], X_2:bat[:oid],
X_3:lng):bat[:daytime]
MTIMEstr_to_time_bulk_p1;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:str, X_1:bat[:str],
X_2:bat[:oid]):bat[:daytime]
+pattern batmtime.str_to_time(X_0:str, X_1:bat[:str], X_2:lng):bat[:daytime]
MTIMEstr_to_time_bulk_p1;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:bat[:str], X_1:str):bat[:daytime]
+pattern batmtime.str_to_time(X_0:bat[:str], X_1:str, X_2:bat[:oid],
X_3:lng):bat[:daytime]
MTIMEstr_to_time_bulk_p2;
(empty)
batmtime
str_to_time
-pattern batmtime.str_to_time(X_0:bat[:str], X_1:str,
X_2:bat[:oid]):bat[:daytime]
+pattern batmtime.str_to_time(X_0:bat[:str], X_1:str, X_2:lng):bat[:daytime]
MTIMEstr_to_time_bulk_p2;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:bat[:str],
X_1:bat[:str]):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid], X_4:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:bat[:str], X_2:bat[:oid],
X_3:bat[:oid]):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:bat[:str],
X_2:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:str, X_1:bat[:str]):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:str, X_1:bat[:str], X_2:bat[:oid],
X_3:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk_p1;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:str, X_1:bat[:str],
X_2:bat[:oid]):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:str, X_1:bat[:str],
X_2:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk_p1;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:str):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:str, X_2:bat[:oid],
X_3:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk_p2;
(empty)
batmtime
str_to_timestamp
-pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:str,
X_2:bat[:oid]):bat[:timestamp]
+pattern batmtime.str_to_timestamp(X_0:bat[:str], X_1:str,
X_2:lng):bat[:timestamp]
MTIMEstr_to_timestamp_bulk_p2;
(empty)
batmtime
@@ -33384,6 +33414,66 @@ pattern batmtime.timestampdiff_year(X_0:
MTIMEtimestampdiff_year_ts_t_bulk_p2;
(empty)
batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:bat[:timestamp], X_1:bat[:str],
X_2:bat[:oid], X_3:bat[:oid], X_4:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk;
+(empty)
+batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:bat[:timestamp], X_1:bat[:str],
X_2:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk;
+(empty)
+batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:timestamp, X_1:bat[:str],
X_2:bat[:oid], X_3:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk_p1;
+(empty)
+batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:timestamp, X_1:bat[:str],
X_2:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk_p1;
+(empty)
+batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:bat[:timestamp], X_1:str,
X_2:bat[:oid], X_3:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk_p2;
+(empty)
+batmtime
+timestamptz_to_str
+pattern batmtime.timestamptz_to_str(X_0:bat[:timestamp], X_1:str,
X_2:lng):bat[:str]
+MTIMEtimestamptz_to_str_bulk_p2;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:bat[:daytime], X_1:bat[:str],
X_2:bat[:oid], X_3:bat[:oid], X_4:lng):bat[:str]
+MTIMEtimetz_to_str_bulk;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:bat[:daytime], X_1:bat[:str],
X_2:lng):bat[:str]
+MTIMEtimetz_to_str_bulk;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:daytime, X_1:bat[:str], X_2:bat[:oid],
X_3:lng):bat[:str]
+MTIMEtimetz_to_str_bulk_p1;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:daytime, X_1:bat[:str], X_2:lng):bat[:str]
+MTIMEtimetz_to_str_bulk_p1;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:bat[:daytime], X_1:str, X_2:bat[:oid],
X_3:lng):bat[:str]
+MTIMEtimetz_to_str_bulk_p2;
+(empty)
+batmtime
+timetz_to_str
+pattern batmtime.timetz_to_str(X_0:bat[:daytime], X_1:str, X_2:lng):bat[:str]
+MTIMEtimetz_to_str_bulk_p2;
+(empty)
+batmtime
usweekofyear
pattern batmtime.usweekofyear(X_0:bat[:date]):bat[:bte]
MTIMEdate_extract_usweekofyear_bulk;
@@ -43279,6 +43369,11 @@ pattern calc.date(X_0:void):date
nil_2_date;
cast to date
calc
+datetz
+command calc.datetz(X_0:timestamp, X_1:lng):date
+MTIMEtimestamp_tz_extract_date;
+(empty)
+calc
daytime
command calc.daytime(X_0:daytime):daytime
MTIMEdaytime_daytime;
@@ -43315,15 +43410,15 @@ str_2time_daytime;
cast to daytime and check for overflow
calc
daytime
-pattern calc.daytime(X_0:str, X_1:int, X_2:int):daytime
-str_2time_daytimetz;
-cast to daytime and check for overflow
-calc
-daytime
pattern calc.daytime(X_0:timestamp, X_1:int):daytime
timestamp_2_daytime;
cast timestamp to a daytime and check for overflow
calc
+daytimetz
+pattern calc.daytimetz(X_0:str, X_1:int, X_2:lng):daytime
+str_2time_daytimetz;
+cast to daytime and check for overflow
+calc
dbl
pattern calc.dbl(X_0:bit):dbl
CMDvarCONVERT;
@@ -44670,15 +44765,15 @@ str_2time_timestamp;
cast to timestamp and check for overflow
calc
timestamp
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]