diff --git a/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/__init__.py b/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/__init__.py index e7894eaf5218..6d8a7f6836b8 100644 --- a/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/__init__.py +++ b/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/__init__.py @@ -12,7 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from .sqlalchemy_spanner import SpannerDialect +from .sqlalchemy_spanner import MAX_SIZE, SpannerDialect from .version import __version__ -__all__ = (SpannerDialect, __version__) +__all__ = ( + "MAX_SIZE", + "SpannerDialect", + "__version__", +) diff --git a/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 1a303e630d41..b3da8c3a98e5 100644 --- a/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/packages/sqlalchemy-spanner/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -150,7 +150,8 @@ def process(value): selectable.CompoundSelect.INTERSECT_ALL: "INTERSECT ALL", } -_max_size = 2621440 +MAX_SIZE = 2621440 +_max_size = MAX_SIZE def int_from_size(size_str): @@ -162,7 +163,7 @@ def int_from_size(size_str): Returns: int: The column length value. """ - return _max_size if size_str == "MAX" else int(size_str) + return MAX_SIZE if size_str == "MAX" else int(size_str) def engine_to_connection(function): @@ -833,6 +834,7 @@ class SpannerDialect(DefaultDialect): paramstyle = "format" encoding = "utf-8" max_identifier_length = 256 + max_size = MAX_SIZE _legacy_binary_type_literal_encoding = "utf-8" _default_isolation_level = "SERIALIZABLE" diff --git a/packages/sqlalchemy-spanner/tests/unit/test_dialect.py b/packages/sqlalchemy-spanner/tests/unit/test_dialect.py index d27d6d7cebed..86e0907137f1 100644 --- a/packages/sqlalchemy-spanner/tests/unit/test_dialect.py +++ b/packages/sqlalchemy-spanner/tests/unit/test_dialect.py @@ -84,3 +84,17 @@ def test_get_multi_indexes_handles_null_column_orderings_array(self): assert ("public", "my_table") in res index_info = res[("public", "my_table")][0] eq_(index_info["column_sorting"], {}) + + def test_max_size_exported(self): + """Test MAX_SIZE export and int_from_size helper behavior.""" + from google.cloud.sqlalchemy_spanner import MAX_SIZE + from google.cloud.sqlalchemy_spanner.sqlalchemy_spanner import ( + _max_size, + int_from_size, + ) + + eq_(MAX_SIZE, 2621440) + eq_(_max_size, MAX_SIZE) + eq_(SpannerDialect.max_size, MAX_SIZE) + eq_(int_from_size("MAX"), 2621440) + eq_(int_from_size("100"), 100)