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

Reply via email to