fix: Database reserved keyword issue

The fix will use quotes to escape "key", which is column name in the metadata table. Should work for different database types.

Merge https://github.com/google/adk-python/pull/4106

COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/4106 from DineshThumma9:fix/mysql-reserved-keyword-issue e39d0d02f3695d6890bc3267417b5dad58f7e8ee
PiperOrigin-RevId: 854411915
This commit is contained in:
Dinesh Thumma
2026-01-09 18:20:46 -08:00
committed by Copybara-Service
parent 2bd984adb3
commit 94d48fce32
2 changed files with 18 additions and 7 deletions
@@ -12,6 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
"""Database schema version check utility."""
from __future__ import annotations
import logging
@@ -32,8 +33,11 @@ def _get_schema_version_impl(inspector, connection) -> str:
"""Gets DB schema version using inspector and connection."""
if inspector.has_table("adk_internal_metadata"):
try:
key_col = inspector.dialect.identifier_preparer.quote("key")
result = connection.execute(
text("SELECT value FROM adk_internal_metadata WHERE key = :key"),
text(
f"SELECT value FROM adk_internal_metadata WHERE {key_col} = :key"
),
{"key": SCHEMA_VERSION_KEY},
).fetchone()
if result:
@@ -49,6 +53,7 @@ def _get_schema_version_impl(inspector, connection) -> str:
e,
)
raise
# Metadata table doesn't exist, check for v0 schema.
# V0 schema has an 'events' table with an 'actions' column.
if inspector.has_table("events"):