Skip to content

Commit

Permalink
platform checks: extend source_tables
Browse files Browse the repository at this point in the history
  • Loading branch information
nrainer-materialize committed Sep 9, 2024
1 parent 5bb1efc commit 3e3b9b7
Showing 1 changed file with 47 additions and 34 deletions.
81 changes: 47 additions & 34 deletions misc/python/materialize/checks/all_checks/source_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ def initialize(self) -> Testdrive:
DROP PUBLICATION IF EXISTS mz_source_{self.suffix};
CREATE PUBLICATION mz_source_{self.suffix} FOR ALL TABLES;
CREATE TABLE pg_table_1 (a INTEGER, b INTEGER);
INSERT INTO pg_table_1 VALUES (1, 1234), (2, 0);
CREATE TYPE an_enum AS ENUM ('x1', 'x2');
CREATE TABLE pg_table_1 (a INTEGER, b INTEGER, c an_enum);
INSERT INTO pg_table_1 VALUES (1, 1234, NULL), (2, 0, 'x1');
ALTER TABLE pg_table_1 REPLICA IDENTITY FULL;
CREATE TABLE pg_table_2 (a INTEGER);
Expand All @@ -65,7 +66,9 @@ def initialize(self) -> Testdrive:
> CREATE SOURCE pg_source_{self.suffix} FROM POSTGRES CONNECTION pg_conn_{self.suffix} (PUBLICATION 'mz_source_{self.suffix}');
> CREATE SOURCE old_pg_source_{self.suffix} FROM POSTGRES CONNECTION pg_conn_{self.suffix} (PUBLICATION 'mz_source_{self.suffix}') FOR TABLES (pg_table_1 AS pg_table_1_old_syntax);
> CREATE SOURCE old_pg_source_{self.suffix} FROM POSTGRES CONNECTION pg_conn_{self.suffix}
(PUBLICATION 'mz_source_{self.suffix}', TEXT COLUMNS = (pg_table_1.c))
FOR TABLES (pg_table_1 AS pg_table_1_old_syntax);
"""
)
)
Expand All @@ -75,17 +78,21 @@ def manipulate(self) -> list[Testdrive]:
Testdrive(dedent(s))
for s in [
f"""
> CREATE TABLE pg_table_1 FROM SOURCE pg_source_{self.suffix} (REFERENCE "pg_table_1") WITH (TEXT COLUMNS = (a));
> CREATE TABLE pg_table_1 FROM SOURCE pg_source_{self.suffix}
(REFERENCE "pg_table_1")
WITH (TEXT COLUMNS = (c));
$ postgres-execute connection=postgres://postgres:postgres@postgres
INSERT INTO pg_table_1 VALUES (3, 2345);
INSERT INTO pg_table_1 VALUES (3, 2345, 'x2');
""",
f"""
> CREATE TABLE pg_table_1b FROM SOURCE pg_source_{self.suffix} (REFERENCE "pg_table_1");
> CREATE TABLE pg_table_1b FROM SOURCE pg_source_{self.suffix}
(REFERENCE "pg_table_1")
WITH (TEXT COLUMNS = (c));
> CREATE TABLE pg_table_2 FROM SOURCE pg_source_{self.suffix} (REFERENCE "pg_table_2");
$ postgres-execute connection=postgres://postgres:postgres@postgres
INSERT INTO pg_table_1 VALUES (4, 3456);
INSERT INTO pg_table_1 VALUES (4, 3456, 'x2');
INSERT INTO pg_table_2 VALUES (3000);
""",
]
Expand All @@ -96,27 +103,27 @@ def validate(self) -> Testdrive:
dedent(
"""
> SELECT * FROM pg_table_1;
1 1234
2 0
3 2345
4 3456
1 1234 <null>
2 0 x1
3 2345 x2
4 3456 x2
> SELECT * FROM pg_table_1b;
1 1234
2 0
3 2345
4 3456
1 1234 <null>
2 0 x1
3 2345 x2
4 3456 x2
> SELECT * FROM pg_table_2;
1000
2000
3000
> SELECT * FROM pg_table_1_old_syntax;
1 1234
2 0
3 2345
4 3456
1 1234 <null>
2 0 x1
3 2345 x2
4 3456 x2
"""
)
)
Expand Down Expand Up @@ -145,15 +152,17 @@ def initialize(self) -> Testdrive:
CREATE DATABASE public_{self.suffix};
USE public_{self.suffix};
CREATE TABLE mysql_source_table_1 (a INTEGER, b INTEGER);
INSERT INTO mysql_source_table_1 VALUES (1, 1234), (2, 0);
CREATE TABLE mysql_source_table_1 (a INTEGER, b INTEGER, y YEAR);
INSERT INTO mysql_source_table_1 VALUES (1, 1234, 2024), (2, 0, 2001);
CREATE TABLE mysql_source_table_2 (a INTEGER);
INSERT INTO mysql_source_table_2 VALUES (1000), (2000);
> CREATE SOURCE mysql_source_{self.suffix} FROM MYSQL CONNECTION mysql_conn_{self.suffix};
> CREATE SOURCE old_mysql_source_{self.suffix} FROM MYSQL CONNECTION mysql_conn_{self.suffix} FOR TABLES (public_{self.suffix}.mysql_source_table_1 AS mysql_table_1_old_syntax);
> CREATE SOURCE old_mysql_source_{self.suffix} FROM MYSQL CONNECTION mysql_conn_{self.suffix}
(TEXT COLUMNS = (public_{self.suffix}.mysql_source_table_1.y))
FOR TABLES (public_{self.suffix}.mysql_source_table_1 AS mysql_table_1_old_syntax);
"""
)
)
Expand All @@ -163,23 +172,27 @@ def manipulate(self) -> list[Testdrive]:
Testdrive(dedent(s))
for s in [
f"""
> CREATE TABLE mysql_table_1 FROM SOURCE mysql_source_{self.suffix} (REFERENCE "public_{self.suffix}"."mysql_source_table_1");
> CREATE TABLE mysql_table_1 FROM SOURCE mysql_source_{self.suffix}
(REFERENCE "public_{self.suffix}"."mysql_source_table_1")
WITH (TEXT COLUMNS = (y));
$ mysql-connect name=mysql url=mysql://root@mysql password={MySql.DEFAULT_ROOT_PASSWORD}
$ mysql-execute name=mysql
USE public_{self.suffix};
INSERT INTO mysql_source_table_1 VALUES (3, 2345);
INSERT INTO mysql_source_table_1 VALUES (3, 2345, 2000);
""",
f"""
> CREATE TABLE mysql_table_1b FROM SOURCE mysql_source_{self.suffix} (REFERENCE "public_{self.suffix}"."mysql_source_table_1");
> CREATE TABLE mysql_table_1b FROM SOURCE mysql_source_{self.suffix}
(REFERENCE "public_{self.suffix}"."mysql_source_table_1")
WITH (IGNORE COLUMNS = (y));
> CREATE TABLE mysql_table_2 FROM SOURCE mysql_source_{self.suffix} (REFERENCE "public_{self.suffix}"."mysql_source_table_2");
$ mysql-connect name=mysql url=mysql://root@mysql password={MySql.DEFAULT_ROOT_PASSWORD}
$ mysql-execute name=mysql
USE public_{self.suffix};
INSERT INTO mysql_source_table_1 VALUES (4, 3456);
INSERT INTO mysql_source_table_1 VALUES (4, 3456, NULL);
INSERT INTO mysql_source_table_2 VALUES (3000);
""",
]
Expand All @@ -190,10 +203,10 @@ def validate(self) -> Testdrive:
dedent(
"""
> SELECT * FROM mysql_table_1;
1 1234
2 0
3 2345
4 3456
1 1234 2024
2 0 2001
3 2345 2000
4 3456 <null>
> SELECT * FROM mysql_table_1b;
1 1234
Expand All @@ -208,10 +221,10 @@ def validate(self) -> Testdrive:
# old source syntax still working
> SELECT * FROM mysql_table_1_old_syntax;
1 1234
2 0
3 2345
4 3456
1 1234 2024
2 0 2001
3 2345 2000
4 3456 <null>
"""
)
)
Expand Down

0 comments on commit 3e3b9b7

Please sign in to comment.