From 39af63b053d526e3f38b55d14df1f7f18d5e3420 Mon Sep 17 00:00:00 2001 From: Dimitri Fontaine Date: Fri, 16 May 2014 00:28:02 +0200 Subject: [PATCH] Implement support for SQLite blob to bytea, fixes #59. This issue has been re-opened with blob instead of double. Semi-blindly implement support for the blob type with an image data type. Disturbingly enough when tested with non-binary data SQLite was returning strings rather than byte vectors, tripping up the transform function that sure expects byte vectors. --- src/sources/sqlite.lisp | 7 +++++-- test/sqlite/sqlite.db | Bin 8192 -> 40960 bytes 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/sources/sqlite.lisp b/src/sources/sqlite.lisp index 57c450d..46e584e 100644 --- a/src/sources/sqlite.lisp +++ b/src/sources/sqlite.lisp @@ -20,8 +20,8 @@ (string-equal sqlite-type-name "nvarchar" :end1 8)) "text") ((string-equal sqlite-type-name "datetime") "timestamptz") - - ((string-equal sqlite-type-name "double") "double precision") + ((string-equal sqlite-type-name "double") "double precision") + ((string-equal sqlite-type-name "blob") "bytea") (t sqlite-type-name))) @@ -138,6 +138,9 @@ ((string-equal "text" coltype) nil) + ((string-equal "bytea" coltype) + #'pgloader.transforms::byte-vector-to-bytea) + (t (compile nil (lambda (c) (when c diff --git a/test/sqlite/sqlite.db b/test/sqlite/sqlite.db index c02a9da6339251a0359215ada278f584f677a321..53ebc3e5b9cde30a62b7c8e1bb420b442b9781dd 100644 GIT binary patch literal 40960 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 c_ts`;>c3{}|6jlV1p`@#ZvX%Q delta 54 zcmZoTz|`O{L0XWBfq?;pVSsU>jxj$IgYF|$UZ4;o|855U-J1mkeEB!;=64kU0PAZB Aod5s;