Module materialize.checks.all_checks.temporal_types
Expand source code Browse git
# Copyright Materialize, Inc. and contributors. All rights reserved.
#
# Use of this software is governed by the Business Source License
# included in the LICENSE file at the root of this repository.
#
# As of the Change Date specified in that file, in accordance with
# the Business Source License, use of this software will be governed
# by the Apache License, Version 2.0.
from textwrap import dedent
from materialize.checks.actions import Testdrive
from materialize.checks.checks import Check
from materialize.checks.executors import Executor
from materialize.mz_version import MzVersion
class TemporalTypes(Check):
def initialize(self) -> Testdrive:
return Testdrive(
dedent(
"""
> CREATE TABLE temporal_types (date_col DATE, time_col TIME, timestamp_col TIMESTAMP, timestamptz_col TIMESTAMPTZ, interval_col INTERVAL);
> INSERT INTO temporal_types VALUES ('2010-10-10', '10:10:10', '2010-10-10 10:10:10+00','2010-10-10 10:10:10+00', INTERVAL '0 day');
"""
)
)
def manipulate(self) -> list[Testdrive]:
return [
Testdrive(dedent(s))
for s in [
"""
> CREATE MATERIALIZED VIEW date_view1 AS
SELECT
date_col, '2010-10-10'::date AS date_col2,
time_col, '10:10:10'::time AS time_col2,
timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2,
timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2,
interval_col, INTERVAL '1 day' AS interval_col2
FROM temporal_types
WHERE date_col >= '2010-10-10'::DATE
AND time_col >= '10:10:10'::TIME
AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP
AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ
AND interval_col >= INTERVAL '0 day';
> INSERT INTO temporal_types VALUES ('2011-11-11', '11:11:11', '2011-11-11 11:11:11+01', '2011-11-11 11:11:11+01', INTERVAL '1 day');
""",
"""
> CREATE MATERIALIZED VIEW date_view2 AS
SELECT
date_col, '2010-10-10'::date AS date_col2,
time_col, '10:10:10'::time AS time_col2,
timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2,
timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2,
interval_col, INTERVAL '1 day' AS interval_col2
FROM temporal_types
WHERE date_col >= '2010-10-10'::DATE
AND time_col >= '10:10:10'::TIME
AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP
AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ
AND interval_col >= INTERVAL '0 day';
> INSERT INTO temporal_types VALUES ('2012-12-12', '12:12:12', '2012-12-12 12:12:12+02', '2012-12-12 12:12:12+02', INTERVAL '2 day');
""",
]
]
def validate(self) -> Testdrive:
return Testdrive(
dedent(
"""
> SELECT * FROM date_view1;
2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day"
2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day"
2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day"
> SELECT * FROM date_view2;
2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day"
2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day"
2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day"
"""
)
)
class TemporalPrecisionTypes(Check):
def _can_run(self, e: Executor) -> bool:
return self.base_version >= MzVersion.parse_mz("v0.70.0-dev")
def initialize(self) -> Testdrive:
return Testdrive(
dedent(
"""
> CREATE TABLE temporal_prec_types (timestamp_prec_col TIMESTAMP(3), timestamptz_prec_col TIMESTAMPTZ(1));
> INSERT INTO temporal_prec_types VALUES ('2010-10-10 10:10:10.123456789+00','2010-10-10 10:10:10.123456789+00');
"""
)
)
def manipulate(self) -> list[Testdrive]:
return [
Testdrive(dedent(s))
for s in [
"""
> CREATE MATERIALIZED VIEW date_prec_view1 AS
SELECT
timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2,
timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2
FROM temporal_prec_types
WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP
AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ;
> INSERT INTO temporal_prec_types VALUES ('2011-11-11 11:11:11.23456789+01', '2011-11-11 11:11:11.23456789+01');
""",
"""
> CREATE MATERIALIZED VIEW date_prec_view2 AS
SELECT
timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2,
timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2
FROM temporal_prec_types
WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP
AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ;
> INSERT INTO temporal_prec_types VALUES ('2012-12-12 12:12:12.3456789+02', '2012-12-12 12:12:12.3456789+02');
""",
]
]
def validate(self) -> Testdrive:
return Testdrive(
dedent(
"""
> SELECT * FROM date_prec_view1;
"2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC"
"2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC"
"2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC"
> SELECT * FROM date_prec_view2;
"2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC"
"2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC"
"2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC"
"""
)
)
Classes
class TemporalPrecisionTypes (base_version: MzVersion, rng: random.Random | None)
-
Expand source code Browse git
class TemporalPrecisionTypes(Check): def _can_run(self, e: Executor) -> bool: return self.base_version >= MzVersion.parse_mz("v0.70.0-dev") def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE temporal_prec_types (timestamp_prec_col TIMESTAMP(3), timestamptz_prec_col TIMESTAMPTZ(1)); > INSERT INTO temporal_prec_types VALUES ('2010-10-10 10:10:10.123456789+00','2010-10-10 10:10:10.123456789+00'); """ ) ) def manipulate(self) -> list[Testdrive]: return [ Testdrive(dedent(s)) for s in [ """ > CREATE MATERIALIZED VIEW date_prec_view1 AS SELECT timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2, timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2 FROM temporal_prec_types WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ; > INSERT INTO temporal_prec_types VALUES ('2011-11-11 11:11:11.23456789+01', '2011-11-11 11:11:11.23456789+01'); """, """ > CREATE MATERIALIZED VIEW date_prec_view2 AS SELECT timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2, timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2 FROM temporal_prec_types WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ; > INSERT INTO temporal_prec_types VALUES ('2012-12-12 12:12:12.3456789+02', '2012-12-12 12:12:12.3456789+02'); """, ] ] def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM date_prec_view1; "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC" "2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC" "2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC" > SELECT * FROM date_prec_view2; "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC" "2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC" "2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC" """ ) )
Ancestors
Methods
def initialize(self) ‑> Testdrive
-
Expand source code Browse git
def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE temporal_prec_types (timestamp_prec_col TIMESTAMP(3), timestamptz_prec_col TIMESTAMPTZ(1)); > INSERT INTO temporal_prec_types VALUES ('2010-10-10 10:10:10.123456789+00','2010-10-10 10:10:10.123456789+00'); """ ) )
def manipulate(self) ‑> list[Testdrive]
-
Expand source code Browse git
def manipulate(self) -> list[Testdrive]: return [ Testdrive(dedent(s)) for s in [ """ > CREATE MATERIALIZED VIEW date_prec_view1 AS SELECT timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2, timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2 FROM temporal_prec_types WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ; > INSERT INTO temporal_prec_types VALUES ('2011-11-11 11:11:11.23456789+01', '2011-11-11 11:11:11.23456789+01'); """, """ > CREATE MATERIALIZED VIEW date_prec_view2 AS SELECT timestamp_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamp(3) AS timestamp_prec_col2, timestamptz_prec_col, '2010-10-10 10:10:10.123456789+01'::timestamptz(1) AS timestamptz_prec_col2 FROM temporal_prec_types WHERE timestamp_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_prec_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ; > INSERT INTO temporal_prec_types VALUES ('2012-12-12 12:12:12.3456789+02', '2012-12-12 12:12:12.3456789+02'); """, ] ]
def validate(self) ‑> Testdrive
-
Expand source code Browse git
def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM date_prec_view1; "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC" "2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC" "2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC" > SELECT * FROM date_prec_view2; "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.123" "2010-10-10 10:10:10.100 UTC" "2010-10-10 09:10:10.100 UTC" "2011-11-11 11:11:11.235" "2010-10-10 10:10:10.123" "2011-11-11 10:11:11.200 UTC" "2010-10-10 09:10:10.100 UTC" "2012-12-12 12:12:12.346" "2010-10-10 10:10:10.123" "2012-12-12 10:12:12.300 UTC" "2010-10-10 09:10:10.100 UTC" """ ) )
class TemporalTypes (base_version: MzVersion, rng: random.Random | None)
-
Expand source code Browse git
class TemporalTypes(Check): def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE temporal_types (date_col DATE, time_col TIME, timestamp_col TIMESTAMP, timestamptz_col TIMESTAMPTZ, interval_col INTERVAL); > INSERT INTO temporal_types VALUES ('2010-10-10', '10:10:10', '2010-10-10 10:10:10+00','2010-10-10 10:10:10+00', INTERVAL '0 day'); """ ) ) def manipulate(self) -> list[Testdrive]: return [ Testdrive(dedent(s)) for s in [ """ > CREATE MATERIALIZED VIEW date_view1 AS SELECT date_col, '2010-10-10'::date AS date_col2, time_col, '10:10:10'::time AS time_col2, timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2, timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2, interval_col, INTERVAL '1 day' AS interval_col2 FROM temporal_types WHERE date_col >= '2010-10-10'::DATE AND time_col >= '10:10:10'::TIME AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ AND interval_col >= INTERVAL '0 day'; > INSERT INTO temporal_types VALUES ('2011-11-11', '11:11:11', '2011-11-11 11:11:11+01', '2011-11-11 11:11:11+01', INTERVAL '1 day'); """, """ > CREATE MATERIALIZED VIEW date_view2 AS SELECT date_col, '2010-10-10'::date AS date_col2, time_col, '10:10:10'::time AS time_col2, timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2, timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2, interval_col, INTERVAL '1 day' AS interval_col2 FROM temporal_types WHERE date_col >= '2010-10-10'::DATE AND time_col >= '10:10:10'::TIME AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ AND interval_col >= INTERVAL '0 day'; > INSERT INTO temporal_types VALUES ('2012-12-12', '12:12:12', '2012-12-12 12:12:12+02', '2012-12-12 12:12:12+02', INTERVAL '2 day'); """, ] ] def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM date_view1; 2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day" 2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day" 2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day" > SELECT * FROM date_view2; 2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day" 2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day" 2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day" """ ) )
Ancestors
Methods
def initialize(self) ‑> Testdrive
-
Expand source code Browse git
def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE temporal_types (date_col DATE, time_col TIME, timestamp_col TIMESTAMP, timestamptz_col TIMESTAMPTZ, interval_col INTERVAL); > INSERT INTO temporal_types VALUES ('2010-10-10', '10:10:10', '2010-10-10 10:10:10+00','2010-10-10 10:10:10+00', INTERVAL '0 day'); """ ) )
def manipulate(self) ‑> list[Testdrive]
-
Expand source code Browse git
def manipulate(self) -> list[Testdrive]: return [ Testdrive(dedent(s)) for s in [ """ > CREATE MATERIALIZED VIEW date_view1 AS SELECT date_col, '2010-10-10'::date AS date_col2, time_col, '10:10:10'::time AS time_col2, timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2, timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2, interval_col, INTERVAL '1 day' AS interval_col2 FROM temporal_types WHERE date_col >= '2010-10-10'::DATE AND time_col >= '10:10:10'::TIME AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ AND interval_col >= INTERVAL '0 day'; > INSERT INTO temporal_types VALUES ('2011-11-11', '11:11:11', '2011-11-11 11:11:11+01', '2011-11-11 11:11:11+01', INTERVAL '1 day'); """, """ > CREATE MATERIALIZED VIEW date_view2 AS SELECT date_col, '2010-10-10'::date AS date_col2, time_col, '10:10:10'::time AS time_col2, timestamp_col, '2010-10-10 10:10:10+01'::timestamp AS timestamp_col2, timestamptz_col, '2010-10-10 10:10:10+01'::timestamptz AS timestamptz_col2, interval_col, INTERVAL '1 day' AS interval_col2 FROM temporal_types WHERE date_col >= '2010-10-10'::DATE AND time_col >= '10:10:10'::TIME AND timestamp_col >= '2010-10-10 10:10:10+00'::TIMESTAMP AND timestamptz_col >= '2010-10-10 10:10:10+00'::TIMESTAMPTZ AND interval_col >= INTERVAL '0 day'; > INSERT INTO temporal_types VALUES ('2012-12-12', '12:12:12', '2012-12-12 12:12:12+02', '2012-12-12 12:12:12+02', INTERVAL '2 day'); """, ] ]
def validate(self) ‑> Testdrive
-
Expand source code Browse git
def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM date_view1; 2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day" 2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day" 2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day" > SELECT * FROM date_view2; 2010-10-10 2010-10-10 10:10:10 10:10:10 "2010-10-10 10:10:10" "2010-10-10 10:10:10" "2010-10-10 10:10:10 UTC" "2010-10-10 09:10:10 UTC" 00:00:00 "1 day" 2011-11-11 2010-10-10 11:11:11 10:10:10 "2011-11-11 11:11:11" "2010-10-10 10:10:10" "2011-11-11 10:11:11 UTC" "2010-10-10 09:10:10 UTC" "1 day" "1 day" 2012-12-12 2010-10-10 12:12:12 10:10:10 "2012-12-12 12:12:12" "2010-10-10 10:10:10" "2012-12-12 10:12:12 UTC" "2010-10-10 09:10:10 UTC" "2 days" "1 day" """ ) )