From 9274f79edeca0bbe3aad0e480f7892d828780bab Mon Sep 17 00:00:00 2001 From: Vladimir Minev Date: Fri, 16 Jun 2023 15:04:17 -0700 Subject: [PATCH 1/2] fix: Add `existing_nullable` usage to `visit_column_type` Without this, altering operations (e.g. change column length) can cause nullability change of the column. It then causes error if this column is a part of index: "400 Changing NOT NULL constraints on column column_name is not allowed because it affects index index_name" --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 1 + 1 file changed, 1 insertion(+) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 9fe09140..dc43fcc5 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -1425,4 +1425,5 @@ def visit_column_type( alter_table(compiler, element.table_name, element.schema), alter_column(compiler, element.column_name), "%s" % format_type(compiler, element.type_), + "" if element.existing_nullable else "NOT NULL", ) From 966b1f1e1498b52fbc3c7164408d3c6b953a31a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Mon, 4 Nov 2024 17:37:00 +0100 Subject: [PATCH 2/2] fix: add missing placeholder --- google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py index 729403d7..1514f9e3 100644 --- a/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py +++ b/google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py @@ -1564,7 +1564,7 @@ def visit_column_nullable( def visit_column_type( element: "ColumnType", compiler: "SpannerDDLCompiler", **kw ) -> str: - return "%s %s %s" % ( + return "%s %s %s %s" % ( alter_table(compiler, element.table_name, element.schema), alter_column(compiler, element.column_name), "%s" % format_type(compiler, element.type_),