-
Notifications
You must be signed in to change notification settings - Fork 249
Refactor schema and db prefixes #2504
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
bbfb411
1d724b9
b47726f
398176d
e752493
142883a
f0adfce
18a1972
96fb897
7772237
c594c9d
449e194
6c44eb7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -162,43 +162,53 @@ | |
| return self.sql_dialect.build_column_metadatas_from_query_result(query_result) | ||
|
|
||
| def build_columns_metadata_query_str(self, dataset_prefixes: list[str], dataset_name: str) -> str: | ||
| database_index: int | None = self.sql_dialect.get_database_prefix_index() | ||
| schema_index: int | None = self.sql_dialect.get_schema_prefix_index() | ||
| schema_name: str = self.extract_schema_from_prefix(dataset_prefixes) | ||
| database_name: str = self.extract_database_from_prefix(dataset_prefixes) | ||
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| table_namespace: DataSourceNamespace = ( | ||
| SchemaDataSourceNamespace(schema=dataset_prefixes[schema_index]) | ||
| if database_index is None | ||
| else DbSchemaDataSourceNamespace( | ||
| database=dataset_prefixes[database_index], schema=dataset_prefixes[schema_index] | ||
| ) | ||
| SchemaDataSourceNamespace(schema=schema_name) | ||
| if database_name is None | ||
| else DbSchemaDataSourceNamespace(database=database_name, schema=schema_name) | ||
| ) | ||
|
|
||
| # BigQuery must be able to override to get the location | ||
| return self.sql_dialect.build_columns_metadata_query_str( | ||
| table_namespace=table_namespace, table_name=dataset_name | ||
| ) | ||
|
|
||
| def extract_schema_from_prefix(self, prefixes: list[str]) -> str: | ||
| schema_index: int | None = self.sql_dialect.get_schema_prefix_index() | ||
| if schema_index is None: | ||
| return None | ||
|
Check warning on line 182 in soda-core/src/soda_core/common/data_source_impl.py
|
||
| schema_name: str = prefixes[schema_index] if schema_index is not None and schema_index < len(prefixes) else None | ||
|
Check warning on line 183 in soda-core/src/soda_core/common/data_source_impl.py
|
||
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| return schema_name | ||
|
|
||
| def extract_database_from_prefix(self, prefixes: list[str]) -> str: | ||
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| database_index: int | None = self.sql_dialect.get_database_prefix_index() | ||
| if database_index is None: | ||
| return None | ||
|
Check warning on line 189 in soda-core/src/soda_core/common/data_source_impl.py
|
||
| database_name: str = ( | ||
| prefixes[database_index] if database_index is not None and database_index < len(prefixes) else None | ||
|
Check warning on line 191 in soda-core/src/soda_core/common/data_source_impl.py
|
||
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ) | ||
| return database_name | ||
|
|
||
| def _build_table_namespace_for_schema_query(self, prefixes: list[str]) -> tuple[DataSourceNamespace, str]: | ||
| """ | ||
| Builds the table namespace for the schema query. | ||
| Returns the table namespace and the schema name. | ||
| """ | ||
| schema_name: str = self.extract_schema_from_prefix(prefixes) | ||
paulteehan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| database_name: str | None = self.extract_database_from_prefix(prefixes) | ||
| database_index: int | None = self.sql_dialect.get_database_prefix_index() | ||
| schema_index: int | None = self.sql_dialect.get_schema_prefix_index() | ||
|
|
||
| schema_name: str = prefixes[schema_index] if schema_index is not None and schema_index < len(prefixes) else None | ||
| if schema_name is None: | ||
| raise ValueError(f"Cannot determine schema name from prefixes: {prefixes}") | ||
|
|
||
| database_name: str | None = ( | ||
| prefixes[database_index] if database_index is not None and database_index < len(prefixes) else None | ||
| ) | ||
|
|
||
| table_namespace: DataSourceNamespace = ( | ||
| SchemaDataSourceNamespace(schema=prefixes[schema_index]) | ||
| SchemaDataSourceNamespace(schema=schema_name) | ||
| if database_index is None | ||
|
||
| else DbSchemaDataSourceNamespace( | ||
| database=database_name, | ||
| schema=prefixes[schema_index], | ||
| schema=schema_name, | ||
| ) | ||
| ) | ||
| return table_namespace, schema_name | ||
|
|
@@ -232,12 +242,9 @@ | |
|
|
||
| def _get_fully_qualified_table_names(self, prefixes: list[str], table_name: str) -> list[FullyQualifiedTableName]: | ||
| metadata_tables_query: MetadataTablesQuery = self.create_metadata_tables_query() | ||
| database_index = self.sql_dialect.get_database_prefix_index() | ||
| schema_index = self.sql_dialect.get_schema_prefix_index() | ||
| database_name = ( | ||
| prefixes[database_index] if database_index is not None and database_index < len(prefixes) else None | ||
| ) | ||
| schema_name = prefixes[schema_index] if schema_index is not None and schema_index < len(prefixes) else None | ||
| database_name = self.extract_database_from_prefix(prefixes) | ||
| schema_name = self.extract_schema_from_prefix(prefixes) | ||
|
|
||
| fully_qualified_table_names: list[FullyQualifiedTableName] = metadata_tables_query.execute( | ||
| database_name=database_name, | ||
| schema_name=schema_name, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.