From a88701f2726928b9d70830a37c0a3fcfc216ab2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BCl=20Bonet?= Date: Sat, 30 Mar 2024 17:57:48 +0100 Subject: [PATCH 1/2] deprecate column caching --- singer_sdk/connectors/sql.py | 43 +++++++++++++++--------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/singer_sdk/connectors/sql.py b/singer_sdk/connectors/sql.py index 814fdc8b2..69f8b8df3 100644 --- a/singer_sdk/connectors/sql.py +++ b/singer_sdk/connectors/sql.py @@ -58,8 +58,6 @@ def __init__( """ self._config: dict[str, t.Any] = config or {} self._sqlalchemy_url: str | None = sqlalchemy_url or None - self._table_cols_cache: dict[str, dict[str, sa.Column]] = {} - self._schema_cache: set[str] = set() @property def config(self) -> dict: @@ -586,12 +584,8 @@ def schema_exists(self, schema_name: str) -> bool: Returns: True if the database schema exists, False if not. """ - if schema_name not in self._schema_cache: - self._schema_cache = set( - sa.inspect(self._engine).get_schema_names(), - ) - - return schema_name in self._schema_cache + schemas = set(sa.inspect(self._engine).get_schema_names()) + return schema_name in schemas def get_table_columns( self, @@ -607,24 +601,23 @@ def get_table_columns( Returns: An ordered list of column objects. """ - if full_table_name not in self._table_cols_cache: - _, schema_name, table_name = self.parse_full_table_name(full_table_name) - inspector = sa.inspect(self._engine) - columns = inspector.get_columns(table_name, schema_name) - - self._table_cols_cache[full_table_name] = { - col_meta["name"]: sa.Column( - col_meta["name"], - col_meta["type"], - nullable=col_meta.get("nullable", False), - ) - for col_meta in columns - if not column_names - or col_meta["name"].casefold() - in {col.casefold() for col in column_names} - } + _, schema_name, table_name = self.parse_full_table_name(full_table_name) + inspector = sa.inspect(self._engine) + columns = inspector.get_columns(table_name, schema_name) + + columns_dict: dict[str, sa.Column] = { + col_meta["name"]: sa.Column( + col_meta["name"], + col_meta["type"], + nullable=col_meta.get("nullable", False), + ) + for col_meta in columns + if not column_names + or col_meta["name"].casefold() + in {col.casefold() for col in column_names} + } - return self._table_cols_cache[full_table_name] + return columns_dict def get_table( self, From 5e0e780fc9304d75560e3502c9125719f769e731 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 30 Mar 2024 16:59:56 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- singer_sdk/connectors/sql.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/singer_sdk/connectors/sql.py b/singer_sdk/connectors/sql.py index 69f8b8df3..765878c38 100644 --- a/singer_sdk/connectors/sql.py +++ b/singer_sdk/connectors/sql.py @@ -613,8 +613,7 @@ def get_table_columns( ) for col_meta in columns if not column_names - or col_meta["name"].casefold() - in {col.casefold() for col in column_names} + or col_meta["name"].casefold() in {col.casefold() for col in column_names} } return columns_dict