Skip to content

Commit 7e8191a

Browse files
GWealecopybara-github
authored andcommitted
perf: skip event query in DB get_session when num_recent_events is 0
Co-authored-by: George Weale <gweale@google.com> PiperOrigin-RevId: 938265151
1 parent fb2b3af commit 7e8191a

1 file changed

Lines changed: 18 additions & 14 deletions

File tree

src/google/adk/sessions/database_session_service.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -599,24 +599,28 @@ async def get_session(
599599
if storage_session is None:
600600
return None
601601

602-
stmt = (
603-
select(schema.StorageEvent)
604-
.filter(schema.StorageEvent.app_name == app_name)
605-
.filter(schema.StorageEvent.session_id == storage_session.id)
606-
.filter(schema.StorageEvent.user_id == user_id)
607-
)
602+
if config and config.num_recent_events == 0:
603+
# Existence/metadata-only read; skip the events query entirely.
604+
storage_events = []
605+
else:
606+
stmt = (
607+
select(schema.StorageEvent)
608+
.filter(schema.StorageEvent.app_name == app_name)
609+
.filter(schema.StorageEvent.session_id == storage_session.id)
610+
.filter(schema.StorageEvent.user_id == user_id)
611+
)
608612

609-
if config and config.after_timestamp:
610-
after_dt = datetime.fromtimestamp(config.after_timestamp)
611-
stmt = stmt.filter(schema.StorageEvent.timestamp >= after_dt)
613+
if config and config.after_timestamp:
614+
after_dt = datetime.fromtimestamp(config.after_timestamp)
615+
stmt = stmt.filter(schema.StorageEvent.timestamp >= after_dt)
612616

613-
stmt = stmt.order_by(schema.StorageEvent.timestamp.desc())
617+
stmt = stmt.order_by(schema.StorageEvent.timestamp.desc())
614618

615-
if config and config.num_recent_events is not None:
616-
stmt = stmt.limit(config.num_recent_events)
619+
if config and config.num_recent_events is not None:
620+
stmt = stmt.limit(config.num_recent_events)
617621

618-
result = await sql_session.execute(stmt)
619-
storage_events = result.scalars().all()
622+
result = await sql_session.execute(stmt)
623+
storage_events = result.scalars().all()
620624

621625
# Fetch states from storage
622626
storage_app_state = await sql_session.get(

0 commit comments

Comments
 (0)