http://www.perlmonks.org?node_id=863835


in reply to Re^2: SQLite and Storable: is "Text" okay?
in thread SQLite and Storable: is "Text" okay?

The way that I read the Storable doc, it seemed to indicate that it stored data in UTF8. Looking at it again, it only indicates that strings are stored that way. In light of that fact, BLOB would definitely be the right choice.

It looks like SQLite has started to actually make different data types matter recently. I started using it in version 2, when it said "everything is stored as string anyway". The version 3 docs don't make any such claims, but the main differences do appear to be with non store-fetch operations.

  • Comment on Re^3: SQLite and Storable: is "Text" okay?

Replies are listed 'Best First'.
Re^4: SQLite and Storable: is "Text" okay?
by ikegami (Patriarch) on Oct 06, 2010 at 17:43 UTC

    The way I read it, SQLite values are like Perl scalars. Stored in a convenient format, and coerced appropriately when required (by comparisons). The storage format is based on the value itself, whereas the coercion is based on the column type.

    it only indicates that strings are stored that way.

    Whatever it indicates, it's doesn't do that. It stores the string as it appears in the scalar.

    $ perl -MStorable=freeze -e' utf8::upgrade( $_="abc\x{80}def" ); print freeze(\$_); ' | od -c 0000000 004 \a 004 1 2 3 4 004 004 004 \b 027 \b a b +c 0000020 302 200 d e f 0000025 $ perl -MStorable=freeze -e' utf8::downgrade( $_="abc\x{80}def" ); print freeze(\$_); ' | od -c 0000000 004 \a 004 1 2 3 4 004 004 004 \b \n \a a b +c 0000020 200 d e f 0000024