diff --git a/google/cloud/spanner_v1/table.py b/google/cloud/spanner_v1/table.py index 0f25c41756..38ca798db8 100644 --- a/google/cloud/spanner_v1/table.py +++ b/google/cloud/spanner_v1/table.py @@ -77,6 +77,11 @@ def _exists(self, snapshot): :rtype: bool :returns: True if the table exists, else false. """ + if ( + self._database.database_dialect + == DatabaseDialect.DATABASE_DIALECT_UNSPECIFIED + ): + self._database.reload() if self._database.database_dialect == DatabaseDialect.POSTGRESQL: results = snapshot.execute_sql( _EXISTS_TEMPLATE.format("WHERE TABLE_NAME = $1"), diff --git a/tests/system/test_table_api.py b/tests/system/test_table_api.py index 1385fb953c..7d4da2b363 100644 --- a/tests/system/test_table_api.py +++ b/tests/system/test_table_api.py @@ -29,6 +29,16 @@ def test_table_exists_not_found(shared_database): assert not table.exists() +def test_table_exists_reload_database_dialect( + shared_instance, shared_database, not_emulator +): + database = shared_instance.database(shared_database.database_id) + assert database.database_dialect == DatabaseDialect.DATABASE_DIALECT_UNSPECIFIED + table = database.table("all_types") + assert table.exists() + assert database.database_dialect != DatabaseDialect.DATABASE_DIALECT_UNSPECIFIED + + def test_db_list_tables(shared_database): tables = shared_database.list_tables() table_ids = set(table.table_id for table in tables)