Skip to content

Commit d22ed0a

Browse files
Fix UUID parameter serialization mismatch in psycopg REPLAY mode
1 parent 35b3765 commit d22ed0a

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

drift/instrumentation/psycopg/instrumentation.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,8 @@ def _try_get_mock(
11501150
"query": query.strip(),
11511151
}
11521152
if params is not None:
1153-
input_value["parameters"] = params
1153+
# Serialize parameters to ensure consistent hashing with RECORD mode
1154+
input_value["parameters"] = serialize_value(params)
11541155

11551156
# Use centralized mock finding utility
11561157
from ...core.mock_utils import find_mock_response_sync

drift/instrumentation/utils/serialization.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from __future__ import annotations
44

55
import datetime
6+
import uuid
67
from typing import Any
78

89

@@ -19,6 +20,8 @@ def serialize_value(val: Any) -> Any:
1920
"""
2021
if isinstance(val, (datetime.datetime, datetime.date, datetime.time)):
2122
return val.isoformat()
23+
elif isinstance(val, uuid.UUID):
24+
return str(val)
2225
elif isinstance(val, bytes):
2326
return val.decode("utf-8", errors="replace")
2427
elif isinstance(val, memoryview):

0 commit comments

Comments
 (0)