Module materialize.checks.all_checks.ranges
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.common import KAFKA_SCHEMA_WITH_SINGLE_STRING_FIELD
def schema() -> str:
return dedent(KAFKA_SCHEMA_WITH_SINGLE_STRING_FIELD)
class Range(Check):
def initialize(self) -> Testdrive:
return Testdrive(
schema()
+ dedent(
"""
> CREATE TABLE range_table (
index INT,
i4_range INT4RANGE,
i8_range INT8RANGE,
num_range NUMRANGE,
ts_range TSRANGE,
tstz_range TSTZRANGE,
d_range DATERANGE
);
> INSERT INTO range_table VALUES (
1,
'[2,8]'::INT4RANGE,
'[2,100]'::INT8RANGE,
'[400,600]'::NUMRANGE,
'[2023-01-01,2023-03-01)'::TSRANGE,
'[2023-01-01,2023-03-01)'::TSTZRANGE,
'[2023-01-01,2023-03-01)'::DATERANGE
);
> INSERT INTO range_table VALUES (
2,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
);
$ kafka-create-topic topic=ranges
$ kafka-ingest format=avro topic=ranges schema=${schema} repeat=10
{"f1": "A${kafka-ingest.iteration}"}
> CREATE SOURCE range_source
FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-ranges-${testdrive.seed}')
FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn
ENVELOPE NONE
"""
)
)
def manipulate(self) -> list[Testdrive]:
manipulation = """
> CREATE MATERIALIZED VIEW $view_name$ AS
SELECT
index,
i4_range,
i8_range,
num_range,
ts_range,
tstz_range,
d_range,
'[2,5]'::INT8RANGE AS i8_range2,
INT8RANGE(2,4) AS i8_range3,
GREATEST(i8_range, '[2,5]'::INT8RANGE) AS i8_greatest,
LEAST(i8_range, '[2,5]'::INT8RANGE) AS i8_least,
NULLIF(i8_range, '[2,17)'::INT8RANGE) AS i8_nif,
LOWER(i8_range) AS i8_low,
UPPER(i8_range) AS i8_up,
ISEMPTY(i8_range) AS i8_empty,
LOWER_INC(i8_range) AS i8_lowinc,
UPPER_INC(i8_range) AS i8_upinc,
LOWER_INF(i8_range) AS i8_lowinf,
UPPER_INF(i8_range) AS i8_upinf,
i8_range < '[2,16]'::INT8RANGE AS i8_lt,
i8_range <= '[2,16]'::INT8RANGE AS i8_le,
i8_range = '[2,16]'::INT8RANGE AS i8_eq,
i8_range >= '[2,16]'::INT8RANGE AS i8_ge,
i8_range > '[2,16]'::INT8RANGE AS i8_gt,
i8_range @> INT8RANGE(2,3) AS i8_containsrange,
i8_range @> 16::INT8 as i8_containselem,
i8_range <@ INT8RANGE(2,3) AS i8_inrange,
16::INT8 <@ i8_range as i8_inelem,
i8_range && INT8RANGE(4,12) AS i8_overlap,
i8_range << INT8RANGE(400, 500) AS i8_leftof,
i8_range >> INT8RANGE(0, 1) AS i8_rightof,
i8_range &< INT8RANGE(0, 1) AS i8_notextright,
i8_range &> INT8RANGE(0, 1) AS i8_notextleft,
i8_range -|- INT8RANGE(100, 150) AS i8_adjacent,
i8_range + '[3,20]'::INT8RANGE AS i8_merge,
i8_range * '[8,20]'::INT8RANGE AS i8_intersec,
i8_range - '[8,120]'::INT8RANGE AS i8_diff,
(SELECT partition FROM range_source_progress LIMIT 1) AS progress_range
FROM range_table;
> INSERT INTO range_table SELECT * FROM range_table WHERE index = 1;
"""
return [
Testdrive(dedent(s))
for s in [
manipulation.replace("$view_name$", "range_view1"),
manipulation.replace("$view_name$", "range_view2"),
]
]
def validate(self) -> Testdrive:
return Testdrive(
dedent(
"""
> SELECT * FROM range_table ORDER BY index ASC;
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01)
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01)
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01)
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01)
2 <null> <null> <null> <null> <null> <null>
> SELECT * FROM range_view1 ORDER BY index ASC;
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0]
> SELECT * FROM range_view2 ORDER BY index ASC;
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0]
2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0]
"""
)
)
Functions
def schema() ‑> str
-
Expand source code Browse git
def schema() -> str: return dedent(KAFKA_SCHEMA_WITH_SINGLE_STRING_FIELD)
Classes
class Range (base_version: MzVersion, rng: random.Random | None)
-
Expand source code Browse git
class Range(Check): def initialize(self) -> Testdrive: return Testdrive( schema() + dedent( """ > CREATE TABLE range_table ( index INT, i4_range INT4RANGE, i8_range INT8RANGE, num_range NUMRANGE, ts_range TSRANGE, tstz_range TSTZRANGE, d_range DATERANGE ); > INSERT INTO range_table VALUES ( 1, '[2,8]'::INT4RANGE, '[2,100]'::INT8RANGE, '[400,600]'::NUMRANGE, '[2023-01-01,2023-03-01)'::TSRANGE, '[2023-01-01,2023-03-01)'::TSTZRANGE, '[2023-01-01,2023-03-01)'::DATERANGE ); > INSERT INTO range_table VALUES ( 2, NULL, NULL, NULL, NULL, NULL, NULL ); $ kafka-create-topic topic=ranges $ kafka-ingest format=avro topic=ranges schema=${schema} repeat=10 {"f1": "A${kafka-ingest.iteration}"} > CREATE SOURCE range_source FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-ranges-${testdrive.seed}') FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn ENVELOPE NONE """ ) ) def manipulate(self) -> list[Testdrive]: manipulation = """ > CREATE MATERIALIZED VIEW $view_name$ AS SELECT index, i4_range, i8_range, num_range, ts_range, tstz_range, d_range, '[2,5]'::INT8RANGE AS i8_range2, INT8RANGE(2,4) AS i8_range3, GREATEST(i8_range, '[2,5]'::INT8RANGE) AS i8_greatest, LEAST(i8_range, '[2,5]'::INT8RANGE) AS i8_least, NULLIF(i8_range, '[2,17)'::INT8RANGE) AS i8_nif, LOWER(i8_range) AS i8_low, UPPER(i8_range) AS i8_up, ISEMPTY(i8_range) AS i8_empty, LOWER_INC(i8_range) AS i8_lowinc, UPPER_INC(i8_range) AS i8_upinc, LOWER_INF(i8_range) AS i8_lowinf, UPPER_INF(i8_range) AS i8_upinf, i8_range < '[2,16]'::INT8RANGE AS i8_lt, i8_range <= '[2,16]'::INT8RANGE AS i8_le, i8_range = '[2,16]'::INT8RANGE AS i8_eq, i8_range >= '[2,16]'::INT8RANGE AS i8_ge, i8_range > '[2,16]'::INT8RANGE AS i8_gt, i8_range @> INT8RANGE(2,3) AS i8_containsrange, i8_range @> 16::INT8 as i8_containselem, i8_range <@ INT8RANGE(2,3) AS i8_inrange, 16::INT8 <@ i8_range as i8_inelem, i8_range && INT8RANGE(4,12) AS i8_overlap, i8_range << INT8RANGE(400, 500) AS i8_leftof, i8_range >> INT8RANGE(0, 1) AS i8_rightof, i8_range &< INT8RANGE(0, 1) AS i8_notextright, i8_range &> INT8RANGE(0, 1) AS i8_notextleft, i8_range -|- INT8RANGE(100, 150) AS i8_adjacent, i8_range + '[3,20]'::INT8RANGE AS i8_merge, i8_range * '[8,20]'::INT8RANGE AS i8_intersec, i8_range - '[8,120]'::INT8RANGE AS i8_diff, (SELECT partition FROM range_source_progress LIMIT 1) AS progress_range FROM range_table; > INSERT INTO range_table SELECT * FROM range_table WHERE index = 1; """ return [ Testdrive(dedent(s)) for s in [ manipulation.replace("$view_name$", "range_view1"), manipulation.replace("$view_name$", "range_view2"), ] ] def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM range_table ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 2 <null> <null> <null> <null> <null> <null> > SELECT * FROM range_view1 ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0] > SELECT * FROM range_view2 ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0] """ ) )
Ancestors
Methods
def initialize(self) ‑> Testdrive
-
Expand source code Browse git
def initialize(self) -> Testdrive: return Testdrive( schema() + dedent( """ > CREATE TABLE range_table ( index INT, i4_range INT4RANGE, i8_range INT8RANGE, num_range NUMRANGE, ts_range TSRANGE, tstz_range TSTZRANGE, d_range DATERANGE ); > INSERT INTO range_table VALUES ( 1, '[2,8]'::INT4RANGE, '[2,100]'::INT8RANGE, '[400,600]'::NUMRANGE, '[2023-01-01,2023-03-01)'::TSRANGE, '[2023-01-01,2023-03-01)'::TSTZRANGE, '[2023-01-01,2023-03-01)'::DATERANGE ); > INSERT INTO range_table VALUES ( 2, NULL, NULL, NULL, NULL, NULL, NULL ); $ kafka-create-topic topic=ranges $ kafka-ingest format=avro topic=ranges schema=${schema} repeat=10 {"f1": "A${kafka-ingest.iteration}"} > CREATE SOURCE range_source FROM KAFKA CONNECTION kafka_conn (TOPIC 'testdrive-ranges-${testdrive.seed}') FORMAT AVRO USING CONFLUENT SCHEMA REGISTRY CONNECTION csr_conn ENVELOPE NONE """ ) )
def manipulate(self) ‑> list[Testdrive]
-
Expand source code Browse git
def manipulate(self) -> list[Testdrive]: manipulation = """ > CREATE MATERIALIZED VIEW $view_name$ AS SELECT index, i4_range, i8_range, num_range, ts_range, tstz_range, d_range, '[2,5]'::INT8RANGE AS i8_range2, INT8RANGE(2,4) AS i8_range3, GREATEST(i8_range, '[2,5]'::INT8RANGE) AS i8_greatest, LEAST(i8_range, '[2,5]'::INT8RANGE) AS i8_least, NULLIF(i8_range, '[2,17)'::INT8RANGE) AS i8_nif, LOWER(i8_range) AS i8_low, UPPER(i8_range) AS i8_up, ISEMPTY(i8_range) AS i8_empty, LOWER_INC(i8_range) AS i8_lowinc, UPPER_INC(i8_range) AS i8_upinc, LOWER_INF(i8_range) AS i8_lowinf, UPPER_INF(i8_range) AS i8_upinf, i8_range < '[2,16]'::INT8RANGE AS i8_lt, i8_range <= '[2,16]'::INT8RANGE AS i8_le, i8_range = '[2,16]'::INT8RANGE AS i8_eq, i8_range >= '[2,16]'::INT8RANGE AS i8_ge, i8_range > '[2,16]'::INT8RANGE AS i8_gt, i8_range @> INT8RANGE(2,3) AS i8_containsrange, i8_range @> 16::INT8 as i8_containselem, i8_range <@ INT8RANGE(2,3) AS i8_inrange, 16::INT8 <@ i8_range as i8_inelem, i8_range && INT8RANGE(4,12) AS i8_overlap, i8_range << INT8RANGE(400, 500) AS i8_leftof, i8_range >> INT8RANGE(0, 1) AS i8_rightof, i8_range &< INT8RANGE(0, 1) AS i8_notextright, i8_range &> INT8RANGE(0, 1) AS i8_notextleft, i8_range -|- INT8RANGE(100, 150) AS i8_adjacent, i8_range + '[3,20]'::INT8RANGE AS i8_merge, i8_range * '[8,20]'::INT8RANGE AS i8_intersec, i8_range - '[8,120]'::INT8RANGE AS i8_diff, (SELECT partition FROM range_source_progress LIMIT 1) AS progress_range FROM range_table; > INSERT INTO range_table SELECT * FROM range_table WHERE index = 1; """ return [ Testdrive(dedent(s)) for s in [ manipulation.replace("$view_name$", "range_view1"), manipulation.replace("$view_name$", "range_view2"), ] ]
def validate(self) ‑> Testdrive
-
Expand source code Browse git
def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM range_table ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) 2 <null> <null> <null> <null> <null> <null> > SELECT * FROM range_view1 ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0] > SELECT * FROM range_view2 ORDER BY index ASC; 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 1 [2,9) [2,101) [400,600] "[2023-01-01 00:00:00,2023-03-01 00:00:00)" "[2023-01-01 00:00:00 UTC,2023-03-01 00:00:00 UTC)" [2023-01-01,2023-03-01) [2,6) [2,4) [2,101) [2,6) [2,101) 2 101 false true false false false false false false true true true true false true true true true false true false [2,101) [8,21) [2,8) [0,0] 2 <null> <null> <null> <null> <null> <null> [2,6) [2,4) [2,6) [2,6) <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> <null> [0,0] """ ) )