Skip to content

Commit 5e158fe

Browse files
authored
fix: include external tables in 'get_table_names' (#363)
Also, include materialized views in 'get_view_names'. Closes #332.
1 parent d28cac5 commit 5e158fe

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

sqlalchemy_bigquery/base.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ def create_connect_args(self, url):
802802
)
803803
return ([client], {})
804804

805-
def _get_table_or_view_names(self, connection, table_type, schema=None):
805+
def _get_table_or_view_names(self, connection, item_types, schema=None):
806806
current_schema = schema or self.dataset_id
807807
get_table_name = (
808808
self._build_formatted_table_id
@@ -823,7 +823,7 @@ def _get_table_or_view_names(self, connection, table_type, schema=None):
823823
dataset.reference, page_size=self.list_tables_page_size
824824
)
825825
for table in tables:
826-
if table_type == table.table_type:
826+
if table.table_type in item_types:
827827
result.append(get_table_name(table))
828828
except google.api_core.exceptions.NotFound:
829829
# It's possible that the dataset was deleted between when we
@@ -976,13 +976,15 @@ def get_table_names(self, connection, schema=None, **kw):
976976
if isinstance(connection, Engine):
977977
connection = connection.connect()
978978

979-
return self._get_table_or_view_names(connection, "TABLE", schema)
979+
item_types = ["TABLE", "EXTERNAL"]
980+
return self._get_table_or_view_names(connection, item_types, schema)
980981

981982
def get_view_names(self, connection, schema=None, **kw):
982983
if isinstance(connection, Engine):
983984
connection = connection.connect()
984985

985-
return self._get_table_or_view_names(connection, "VIEW", schema)
986+
item_types = ["VIEW", "MATERIALIZED_VIEW"]
987+
return self._get_table_or_view_names(connection, item_types, schema)
986988

987989
def do_rollback(self, dbapi_connection):
988990
# BigQuery has no support for transactions.

tests/unit/test_sqlalchemy_bigquery.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,11 @@ def table_item(dataset_id, table_id, type_="TABLE"):
7777
[
7878
table_item("dataset_2", "d2t1"),
7979
table_item("dataset_2", "d2view", type_="VIEW"),
80+
table_item("dataset_2", "d2ext", type_="EXTERNAL"),
81+
table_item("dataset_2", "d2mv", type_="MATERIALIZED_VIEW"),
8082
],
8183
],
82-
["dataset_1.d1t1", "dataset_1.d1t2", "dataset_2.d2t1"],
84+
["dataset_1.d1t1", "dataset_1.d1t2", "dataset_2.d2t1", "dataset_2.d2ext"],
8385
),
8486
(
8587
[dataset_item("dataset_1"), dataset_item("dataset_deleted")],
@@ -117,9 +119,11 @@ def test_get_table_names(
117119
[
118120
table_item("dataset_2", "d2t1"),
119121
table_item("dataset_2", "d2view", type_="VIEW"),
122+
table_item("dataset_2", "d2ext", type_="EXTERNAL"),
123+
table_item("dataset_2", "d2mv", type_="MATERIALIZED_VIEW"),
120124
],
121125
],
122-
["dataset_1.d1view", "dataset_2.d2view"],
126+
["dataset_1.d1view", "dataset_2.d2view", "dataset_2.d2mv"],
123127
),
124128
(
125129
[dataset_item("dataset_1"), dataset_item("dataset_deleted")],

0 commit comments

Comments
 (0)