diff --git a/basis/db/queries/queries.factor b/basis/db/queries/queries.factor index 2730340bfc..c4aa47d383 100755 --- a/basis/db/queries/queries.factor +++ b/basis/db/queries/queries.factor @@ -4,7 +4,7 @@ USING: accessors kernel math namespaces make sequences random strings math.parser math.intervals combinators math.bitwise nmake db db.tuples db.types classes words shuffle arrays destructors continuations db.tuples.private prettyprint -db.private ; +db.private byte-arrays ; IN: db.queries GENERIC: where ( specs obj -- ) @@ -115,6 +115,9 @@ M: sequence where ( spec obj -- ) [ " or " 0% ] [ dupd where ] interleave drop ] in-parens ; +M: byte-array where ( spec obj -- ) + over column-name>> 0% " = " 0% bind# ; + M: NULL where ( spec obj -- ) drop column-name>> 0% " is NULL" 0% ; diff --git a/basis/db/tuples/tuples-tests.factor b/basis/db/tuples/tuples-tests.factor index 50d7f044d1..d4a58fa4fc 100644 --- a/basis/db/tuples/tuples-tests.factor +++ b/basis/db/tuples/tuples-tests.factor @@ -634,3 +634,22 @@ compound-foo "COMPOUND_FOO" [ test-compound-primary-key ] test-sqlite [ test-compound-primary-key ] test-postgresql + + +TUPLE: example id data ; + +example "EXAMPLE" +{ + { "id" "ID" +db-assigned-id+ } + { "data" "DATA" BLOB } +} define-persistent + +: test-blob-select ( -- ) + example ensure-table + [ ] [ example new B{ 1 2 3 4 5 } >>data insert-tuple ] unit-test + [ + T{ example { id 1 } { data B{ 1 2 3 4 5 } } } + ] [ example new B{ 1 2 3 4 5 } >>data select-tuple ] unit-test ; + +[ test-blob-select ] test-sqlite +[ test-blob-select ] test-postgresql