Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/google/adk/sessions/schemas/v1.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@
from typing import Any

from google.adk.platform import uuid as platform_uuid
from sqlalchemy import desc
from sqlalchemy import ForeignKeyConstraint
from sqlalchemy import func
from sqlalchemy import Index
from sqlalchemy import inspect
from sqlalchemy.ext.mutable import MutableDict
from sqlalchemy.orm import DeclarativeBase
Expand Down Expand Up @@ -187,6 +189,13 @@ class StorageEvent(Base):
["sessions.app_name", "sessions.user_id", "sessions.id"],
ondelete="CASCADE",
),
Index(
"idx_events_app_user_session_ts",
"app_name",
"user_id",
"session_id",
desc("timestamp"),
),
)

@classmethod
Expand Down
7 changes: 7 additions & 0 deletions tests/unittests/sessions/migration/test_database_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,13 @@ def get_schema_version(sync_conn):
event_col_names = {c['name'] for c in event_cols}
assert 'event_data' in event_col_names
assert 'actions' not in event_col_names

# Verify composite index on events table
event_indexes = await conn.run_sync(
lambda sync_conn: inspect(sync_conn).get_indexes('events')
)
idx_names = {idx['name'] for idx in event_indexes}
assert 'idx_events_app_user_session_ts' in idx_names
await engine.dispose()


Expand Down