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 -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org