Module materialize.checks.all_checks.string
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
class String(Check):
def initialize(self) -> Testdrive:
return Testdrive(
dedent(
"""
> CREATE TABLE string_table (f1 STRING, f2 STRING, f3 STRING, f4 INT, f5 INT, f6 INT[]);
> INSERT INTO string_table VALUES (' foobar ', ' abc ', ' xyz ', 2, 3, '{1,NULL,3}');
"""
)
)
def manipulate(self) -> list[Testdrive]:
return [
Testdrive(dedent(s))
for s in [
"""
> CREATE MATERIALIZED VIEW string_view1 AS SELECT
f1 BETWEEN f2 AND f3 AS c1,
'foo' BETWEEN 'abc' AND 'xyz' AS c2,
f1 NOT BETWEEN f2 AND f3 AS c3,
substring(f1 FROM f4 FOR f5) AS c4,
substring(f1 FROM f4) AS c5,
substring(f1 FOR f5) AS c6,
trim(BOTH f1) AS c7,
trim(LEADING f1) AS c8,
trim(TRAILING f1) AS c9,
trim(LEADING ' f' FROM f1) AS c10,
trim(' fr' FROM f1) AS c11,
array_to_string(f6, ',', 'NULL') AS c12
FROM string_table;
> INSERT INTO string_table VALUES (' foo ', ' abc ', ' xyz ', 2, 3, '{1,2,3,4,NULL,NULL}');
""",
"""
> CREATE MATERIALIZED VIEW string_view2 AS SELECT
f1 BETWEEN f2 AND f3 AS c1,
'foo' BETWEEN 'abc' AND 'xyz' AS c2,
f1 NOT BETWEEN f2 AND f3 AS c3,
substring(f1 FROM f4 FOR f5) AS c4,
substring(f1 FROM f4) AS c5,
substring(f1 FOR f5) AS c6,
trim(BOTH f1) AS c7,
trim(LEADING f1) AS c8,
trim(TRAILING f1) AS c9,
trim(LEADING ' f' FROM f1) AS c10,
trim(' fr' FROM f1) AS c11,
array_to_string(f6, ',', 'NULL') AS c12
FROM string_table;
> INSERT INTO string_table VALUES (' bar ', 'abc', 'xyz', 2, 3, '{NULL}');
""",
]
]
def validate(self) -> Testdrive:
return Testdrive(
dedent(
"""
> SELECT * FROM string_view1;
true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3
true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL
false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL
> SELECT * FROM string_view2;
true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3
true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL
false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL
"""
)
)
Classes
class String (base_version: MzVersion, rng: random.Random | None)
-
Expand source code Browse git
class String(Check): def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE string_table (f1 STRING, f2 STRING, f3 STRING, f4 INT, f5 INT, f6 INT[]); > INSERT INTO string_table VALUES (' foobar ', ' abc ', ' xyz ', 2, 3, '{1,NULL,3}'); """ ) ) def manipulate(self) -> list[Testdrive]: return [ Testdrive(dedent(s)) for s in [ """ > CREATE MATERIALIZED VIEW string_view1 AS SELECT f1 BETWEEN f2 AND f3 AS c1, 'foo' BETWEEN 'abc' AND 'xyz' AS c2, f1 NOT BETWEEN f2 AND f3 AS c3, substring(f1 FROM f4 FOR f5) AS c4, substring(f1 FROM f4) AS c5, substring(f1 FOR f5) AS c6, trim(BOTH f1) AS c7, trim(LEADING f1) AS c8, trim(TRAILING f1) AS c9, trim(LEADING ' f' FROM f1) AS c10, trim(' fr' FROM f1) AS c11, array_to_string(f6, ',', 'NULL') AS c12 FROM string_table; > INSERT INTO string_table VALUES (' foo ', ' abc ', ' xyz ', 2, 3, '{1,2,3,4,NULL,NULL}'); """, """ > CREATE MATERIALIZED VIEW string_view2 AS SELECT f1 BETWEEN f2 AND f3 AS c1, 'foo' BETWEEN 'abc' AND 'xyz' AS c2, f1 NOT BETWEEN f2 AND f3 AS c3, substring(f1 FROM f4 FOR f5) AS c4, substring(f1 FROM f4) AS c5, substring(f1 FOR f5) AS c6, trim(BOTH f1) AS c7, trim(LEADING f1) AS c8, trim(TRAILING f1) AS c9, trim(LEADING ' f' FROM f1) AS c10, trim(' fr' FROM f1) AS c11, array_to_string(f6, ',', 'NULL') AS c12 FROM string_table; > INSERT INTO string_table VALUES (' bar ', 'abc', 'xyz', 2, 3, '{NULL}'); """, ] ] def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM string_view1; true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3 true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL > SELECT * FROM string_view2; true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3 true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL """ ) )
Ancestors
Methods
def initialize(self) ‑> Testdrive
-
Expand source code Browse git
def initialize(self) -> Testdrive: return Testdrive( dedent( """ > CREATE TABLE string_table (f1 STRING, f2 STRING, f3 STRING, f4 INT, f5 INT, f6 INT[]); > INSERT INTO string_table VALUES (' foobar ', ' abc ', ' xyz ', 2, 3, '{1,NULL,3}'); """ ) )
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 string_view1 AS SELECT f1 BETWEEN f2 AND f3 AS c1, 'foo' BETWEEN 'abc' AND 'xyz' AS c2, f1 NOT BETWEEN f2 AND f3 AS c3, substring(f1 FROM f4 FOR f5) AS c4, substring(f1 FROM f4) AS c5, substring(f1 FOR f5) AS c6, trim(BOTH f1) AS c7, trim(LEADING f1) AS c8, trim(TRAILING f1) AS c9, trim(LEADING ' f' FROM f1) AS c10, trim(' fr' FROM f1) AS c11, array_to_string(f6, ',', 'NULL') AS c12 FROM string_table; > INSERT INTO string_table VALUES (' foo ', ' abc ', ' xyz ', 2, 3, '{1,2,3,4,NULL,NULL}'); """, """ > CREATE MATERIALIZED VIEW string_view2 AS SELECT f1 BETWEEN f2 AND f3 AS c1, 'foo' BETWEEN 'abc' AND 'xyz' AS c2, f1 NOT BETWEEN f2 AND f3 AS c3, substring(f1 FROM f4 FOR f5) AS c4, substring(f1 FROM f4) AS c5, substring(f1 FOR f5) AS c6, trim(BOTH f1) AS c7, trim(LEADING f1) AS c8, trim(TRAILING f1) AS c9, trim(LEADING ' f' FROM f1) AS c10, trim(' fr' FROM f1) AS c11, array_to_string(f6, ',', 'NULL') AS c12 FROM string_table; > INSERT INTO string_table VALUES (' bar ', 'abc', 'xyz', 2, 3, '{NULL}'); """, ] ]
def validate(self) ‑> Testdrive
-
Expand source code Browse git
def validate(self) -> Testdrive: return Testdrive( dedent( """ > SELECT * FROM string_view1; true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3 true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL > SELECT * FROM string_view2; true true false foo "foobar " " fo" "foobar" "foobar " " foobar" "oobar " "ooba" 1,NULL,3 true true false foo "foo " " fo" foo "foo " " foo" "oo " oo 1,2,3,4,NULL,NULL false true true bar "bar " " ba" bar "bar " " bar" "bar " ba NULL """ ) )