diff --git a/tests/testflows/datetime64_extended_range/regression.py b/tests/testflows/datetime64_extended_range/regression.py index 7a849f3a0c6..762cf796bd2 100755 --- a/tests/testflows/datetime64_extended_range/regression.py +++ b/tests/testflows/datetime64_extended_range/regression.py @@ -21,6 +21,7 @@ from datetime64_extended_range.common import * # https://github.com/ClickHouse/ClickHouse/issues/22929 : toUnixTimestamp() exception when out of normal # https://github.com/ClickHouse/ClickHouse/issues/22930 : toWeek() # https://github.com/ClickHouse/ClickHouse/issues/22948 : toYearWeek() +# https://github.com/ClickHouse/ClickHouse/issues/22959 : toUnixTimestamp64*() wrong fractal seconds treatment xfails = { "type conversion/to int 8 16 32 64 128 256/:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350")], @@ -36,6 +37,9 @@ xfails = { "date time funcs/to unix timestamp/:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/22929")], "date time funcs/to week/:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/22930")], "date time funcs/to year week/:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/22948")], + "type conversion/to unix timestamp64 */:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/22959")], + "type conversion/from unix timestamp64 */:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/22959")], + "type conversion/to int 8 16 32 64 128 256/:": [(Fail, "https://github.com/ClickHouse/ClickHouse/issues/16581#issuecomment-804360350")], } diff --git a/tests/testflows/datetime64_extended_range/tests/type_conversion.py b/tests/testflows/datetime64_extended_range/tests/type_conversion.py index c6758b2d6c0..271c8131b6f 100644 --- a/tests/testflows/datetime64_extended_range/tests/type_conversion.py +++ b/tests/testflows/datetime64_extended_range/tests/type_conversion.py @@ -32,7 +32,7 @@ def to_int_8_16_32_64_128_256(self, cast): for tz in timezones: dt = pytz.timezone(tz).localize(d) for int_type in (8, 16, 32, 64, 128, 256): - with Example(f"{dt} {tz}, int{int_type}"): + with When(f"{dt} {tz}, int{int_type}"): with By("converting datetime to string"): dt_str = dt.strftime("%Y-%m-%d %H:%M:%S") with And("computing the expected result using python"): @@ -319,7 +319,7 @@ def to_decimal_32_64_128_256(self, cast): dt = pytz.timezone(tz).localize(d) for decimal_type in (32, 64, 128, 256): for scale in range(scales[decimal_type]): - with Example(f"{dt} {tz}, Decimal{decimal_type}({scale})"): + with With(f"{dt} {tz}, Decimal{decimal_type}({scale})"): valid_range = valid_decimal_range(bit_depth=decimal_type, S=scale) with By("computing the expected result using python"): expected = decimal.Decimal(time.mktime(dt.timetuple())) @@ -351,13 +351,13 @@ def to_unix_timestamp64_milli_micro_nano(self, scale): for d in datetimes: for tz in timezones: dt = pytz.timezone(tz).localize(d) - with Example(f"{dt} {tz}"): + with When(f"{dt} {tz}"): with By("converting datetime to string"): dt_str = dt.strftime("%Y-%m-%d %H:%M:%S.%f") with And("converting DateTime to UTC"): dt = dt.astimezone(pytz.timezone('UTC')) with And("computing the expected result using python"): - expected = int(time.mktime(dt.timetuple()) * (10**scale)) + expected = int(dt.timestamp() * (10**scale)) if expected >= 0: expected += dt.microsecond * 10 ** (scale - 6) else: @@ -414,19 +414,19 @@ def from_unix_timestamp64_milli_micro_nano(self, scale): for d in datetimes: for tz in timezones: dt = pytz.timezone(tz).localize(d) - with Example(f"{dt} {tz}"): + with When(f"{dt} {tz}"): with By("converting datetime to string"): d_str = d.strftime("%Y-%m-%d %H:%M:%S.%f") d_str += "0" * (scale-3) - with And("converting DateTime to UTC"): + with And("converting DateTime64 to UTC"): dt = dt.astimezone(pytz.timezone('UTC')) with And("computing the expected result using python"): - ts = int(time.mktime(dt.timetuple()) * (10**scale)) + ts = int(dt.timestamp() * (10**scale)) if ts >= 0: ts += dt.microsecond * 10 ** (scale - 6) else: ts -= dt.microsecond * 10 ** (scale - 6) - with When(f"making a query string for ClickHouse"): + with And(f"making a query string for ClickHouse"): query = f"SELECT fromUnixTimestamp64{func[scale]}(CAST({ts}, 'Int64'), '{tz}')" with Then(f"I execute fromUnixTimestamp64{func[scale]}() query"): exec_query(request=query, expected=f"{d_str}")