From 2e4398b01b4436e97e84d376d1e9895be61c157a Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Wed, 10 Sep 2025 22:52:17 -0400 Subject: [PATCH 1/2] Correct handling of SQLITE_TEXT during CDC --- sqlite3_opt_preupdate_hook.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sqlite3_opt_preupdate_hook.go b/sqlite3_opt_preupdate_hook.go index 8cce278f..a9d8e0fb 100644 --- a/sqlite3_opt_preupdate_hook.go +++ b/sqlite3_opt_preupdate_hook.go @@ -78,9 +78,8 @@ func (d *SQLitePreUpdateData) row(dest []any, new bool) error { blobptr := C.sqlite3_value_blob(val) src = C.GoBytes(blobptr, len) case C.SQLITE_TEXT: - len := C.sqlite3_value_bytes(val) cstrptr := unsafe.Pointer(C.sqlite3_value_text(val)) - src = C.GoBytes(cstrptr, len) + src = C.GoString((*C.char)(cstrptr)) case C.SQLITE_NULL: src = nil } From b2d2f9c7ec289263cd8ad810c1b9f14e623c30bb Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Wed, 10 Sep 2025 23:32:01 -0400 Subject: [PATCH 2/2] Update string conversion for SQLITE_TEXT case --- sqlite3_opt_preupdate_hook.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sqlite3_opt_preupdate_hook.go b/sqlite3_opt_preupdate_hook.go index a9d8e0fb..04c01c10 100644 --- a/sqlite3_opt_preupdate_hook.go +++ b/sqlite3_opt_preupdate_hook.go @@ -78,8 +78,9 @@ func (d *SQLitePreUpdateData) row(dest []any, new bool) error { blobptr := C.sqlite3_value_blob(val) src = C.GoBytes(blobptr, len) case C.SQLITE_TEXT: + len := C.sqlite3_value_bytes(val) cstrptr := unsafe.Pointer(C.sqlite3_value_text(val)) - src = C.GoString((*C.char)(cstrptr)) + src = C.GoStringN((*C.char)(cstrptr), len) case C.SQLITE_NULL: src = nil }