|
17 | 17 |
|
18 | 18 | import os |
19 | 19 | from pathlib import Path |
20 | | -from typing import Any, Generator, List, cast |
| 20 | +from typing import Any, Generator, cast |
21 | 21 |
|
22 | 22 | import pyarrow as pa |
23 | 23 | import pytest |
@@ -1027,7 +1027,7 @@ def test_create_namespace_if_not_exists(catalog: SqlCatalog, database_name: str) |
1027 | 1027 | @pytest.mark.parametrize("namespace", [lazy_fixture("database_name"), lazy_fixture("hierarchical_namespace_name")]) |
1028 | 1028 | def test_create_namespace(catalog: SqlCatalog, namespace: str) -> None: |
1029 | 1029 | catalog.create_namespace(namespace) |
1030 | | - assert (Catalog.identifier_to_tuple(namespace)) in catalog.list_namespaces() |
| 1030 | + assert (Catalog.identifier_to_tuple(namespace)[:1]) in catalog.list_namespaces() |
1031 | 1031 |
|
1032 | 1032 |
|
1033 | 1033 | @pytest.mark.parametrize( |
@@ -1074,7 +1074,7 @@ def test_create_namespace_with_comment_and_location(catalog: SqlCatalog, namespa |
1074 | 1074 | } |
1075 | 1075 | catalog.create_namespace(namespace=namespace, properties=test_properties) |
1076 | 1076 | loaded_database_list = catalog.list_namespaces() |
1077 | | - assert Catalog.identifier_to_tuple(namespace) in loaded_database_list |
| 1077 | + assert Catalog.identifier_to_tuple(namespace)[:1] in loaded_database_list |
1078 | 1078 | properties = catalog.load_namespace_properties(namespace) |
1079 | 1079 | assert properties["comment"] == "this is a test description" |
1080 | 1080 | assert properties["location"] == test_location |
@@ -1135,17 +1135,42 @@ def test_namespace_exists(catalog: SqlCatalog) -> None: |
1135 | 1135 | lazy_fixture("catalog_sqlite"), |
1136 | 1136 | ], |
1137 | 1137 | ) |
1138 | | -@pytest.mark.parametrize("namespace_list", [lazy_fixture("database_list"), lazy_fixture("hierarchical_namespace_list")]) |
1139 | | -def test_list_namespaces(catalog: SqlCatalog, namespace_list: List[str]) -> None: |
| 1138 | +def test_list_namespaces(catalog: SqlCatalog) -> None: |
| 1139 | + namespace_list = ["db", "db.ns1", "db.ns1.ns2", "db.ns2", "db2", "db2.ns1", "db%"] |
1140 | 1140 | for namespace in namespace_list: |
1141 | | - catalog.create_namespace(namespace) |
1142 | | - # Test global list |
| 1141 | + if not catalog._namespace_exists(namespace): |
| 1142 | + catalog.create_namespace(namespace) |
| 1143 | + |
1143 | 1144 | ns_list = catalog.list_namespaces() |
| 1145 | + for ns in [("db",), ("db%",), ("db2",)]: |
| 1146 | + assert ns in ns_list |
| 1147 | + |
| 1148 | + ns_list = catalog.list_namespaces("db") |
| 1149 | + assert sorted(ns_list) == [("db", "ns1"), ("db", "ns2")] |
| 1150 | + |
| 1151 | + ns_list = catalog.list_namespaces("db.ns1") |
| 1152 | + assert sorted(ns_list) == [("db", "ns1", "ns2")] |
| 1153 | + |
| 1154 | + ns_list = catalog.list_namespaces("db.ns1.ns2") |
| 1155 | + assert len(ns_list) == 0 |
| 1156 | + |
| 1157 | + |
| 1158 | +@pytest.mark.parametrize( |
| 1159 | + "catalog", |
| 1160 | + [ |
| 1161 | + lazy_fixture("catalog_memory"), |
| 1162 | + lazy_fixture("catalog_sqlite"), |
| 1163 | + ], |
| 1164 | +) |
| 1165 | +def test_list_namespaces_fuzzy_match(catalog: SqlCatalog) -> None: |
| 1166 | + namespace_list = ["db.ns1", "db.ns1.ns2", "db.ns2", "db.ns1X.ns3", "db_.ns1.ns2", "db2.ns1.ns2"] |
1144 | 1167 | for namespace in namespace_list: |
1145 | | - assert Catalog.identifier_to_tuple(namespace) in ns_list |
1146 | | - # Test individual namespace list |
1147 | | - assert len(one_namespace := catalog.list_namespaces(namespace)) == 1 |
1148 | | - assert Catalog.identifier_to_tuple(namespace) == one_namespace[0] |
| 1168 | + if not catalog._namespace_exists(namespace): |
| 1169 | + catalog.create_namespace(namespace) |
| 1170 | + |
| 1171 | + assert catalog.list_namespaces("db.ns1") == [("db", "ns1", "ns2")] |
| 1172 | + |
| 1173 | + assert catalog.list_namespaces("db_.ns1") == [("db_", "ns1", "ns2")] |
1149 | 1174 |
|
1150 | 1175 |
|
1151 | 1176 | @pytest.mark.parametrize( |
@@ -1177,13 +1202,13 @@ def test_list_non_existing_namespaces(catalog: SqlCatalog) -> None: |
1177 | 1202 | def test_drop_namespace(catalog: SqlCatalog, table_schema_nested: Schema, table_identifier: Identifier) -> None: |
1178 | 1203 | namespace = Catalog.namespace_from(table_identifier) |
1179 | 1204 | catalog.create_namespace(namespace) |
1180 | | - assert namespace in catalog.list_namespaces() |
| 1205 | + assert catalog._namespace_exists(namespace) |
1181 | 1206 | catalog.create_table(table_identifier, table_schema_nested) |
1182 | 1207 | with pytest.raises(NamespaceNotEmptyError): |
1183 | 1208 | catalog.drop_namespace(namespace) |
1184 | 1209 | catalog.drop_table(table_identifier) |
1185 | 1210 | catalog.drop_namespace(namespace) |
1186 | | - assert namespace not in catalog.list_namespaces() |
| 1211 | + assert not catalog._namespace_exists(namespace) |
1187 | 1212 |
|
1188 | 1213 |
|
1189 | 1214 | @pytest.mark.parametrize( |
|
0 commit comments