]> git.ipfire.org Git - thirdparty/public-inbox.git/commitdiff
sqlite: use `BLOB' column type instead of `VARBINARY'
authorEric Wong <e@80x24.org>
Wed, 4 Dec 2024 19:39:13 +0000 (19:39 +0000)
committerEric Wong <e@80x24.org>
Fri, 6 Dec 2024 20:07:18 +0000 (20:07 +0000)
`VARBINARY' isn't actually a documented type for SQLite but
rather the result of MySQL infecting my mind decades ago.
`BLOB' gives it the proper affinity and probably makes it easier
for 3rd-party and one-off scripts to deal with such columns and
should also make things more familiar to existing users.
Surprisingly, this appears to have no functional change with
forward or backwards compatibility since we ->bind_param binary
data with SQL_BLOB on INSERTs anyways to prevent the flexible
typing of SQLite from trying to guess types for us.

lib/PublicInbox/LeiMailSync.pm
lib/PublicInbox/OverIdx.pm
lib/PublicInbox/POP3D.pm
lib/PublicInbox/SharedKV.pm

index d23f6b4b13f14012df8bf7bf367e77be7223408e..fc7963a18ea1e6640dbdc3d3eeac529874768072 100644 (file)
@@ -61,13 +61,13 @@ sub create_tables {
        $dbh->do(<<'');
 CREATE TABLE IF NOT EXISTS folders (
        fid INTEGER PRIMARY KEY,
-       loc VARBINARY NOT NULL, /* URL;UIDVALIDITY=$N or $TYPE:/pathname */
+       loc BLOB NOT NULL, /* URL;UIDVALIDITY=$N or $TYPE:/pathname */
        UNIQUE (loc)
 )
 
        $dbh->do(<<'');
 CREATE TABLE IF NOT EXISTS blob2num (
-       oidbin VARBINARY NOT NULL,
+       oidbin BLOB NOT NULL,
        fid INTEGER NOT NULL, /* folder ID */
        uid INTEGER NOT NULL, /* NNTP article number, IMAP UID, MH number */
        /* not UNIQUE(fid, uid), since we may have broken servers */
@@ -80,9 +80,9 @@ CREATE INDEX IF NOT EXISTS idx_fid_uid ON blob2num(fid,uid)
 
        $dbh->do(<<'');
 CREATE TABLE IF NOT EXISTS blob2name (
-       oidbin VARBINARY NOT NULL,
+       oidbin BLOB NOT NULL,
        fid INTEGER NOT NULL, /* folder ID */
-       name VARBINARY NOT NULL, /* Maildir basename, JMAP blobId */
+       name BLOB NOT NULL, /* Maildir basename, JMAP blobId */
        /* not UNIQUE(fid, name), since we may have broken software */
        UNIQUE (oidbin, fid, name)
 )
index 10cf8c395ff932bfea5cecf148c44acf475d0aea..dea6f0fc2a60c63a7a3228eea0f9a3ec5a87fa24 100644 (file)
@@ -389,7 +389,7 @@ CREATE TABLE IF NOT EXISTS over (
        sid INTEGER, /* Subject ID (IMAP ORDEREDSUBJECT "threading") */
        ts INTEGER, /* IMAP INTERNALDATE (Received: header, git commit time) */
        ds INTEGER, /* RFC-2822 sent Date: header, git author time */
-       ddd VARBINARY /* doc-data-deflated (->to_doc_data, ->load_from_data) */
+       ddd BLOB /* doc-data-deflated (->to_doc_data, ->load_from_data) */
 )
 
        $dbh->do('CREATE INDEX IF NOT EXISTS idx_tid ON over (tid)');
@@ -543,7 +543,7 @@ CREATE TABLE IF NOT EXISTS xref3 (
        docid INTEGER NOT NULL, /* <=> over.num */
        ibx_id INTEGER NOT NULL, /* <=> inboxes.ibx_id */
        xnum INTEGER NOT NULL, /* NNTP article number in ibx */
-       oidbin VARBINARY NOT NULL, /* 20-byte SHA-1 or 32-byte SHA-256 */
+       oidbin BLOB NOT NULL, /* 20-byte SHA-1 or 32-byte SHA-256 */
        UNIQUE (docid, ibx_id, xnum, oidbin)
 )
 
index bd44043452b7f6ca8696fb5661d4d49777866292..1898c89d44434274acf4548e149e25946e90862f 100644 (file)
@@ -93,7 +93,7 @@ sub create_state_tables ($$) {
        $dbh->do(<<''); # map publicinbox.<name>.newsgroup to integers
 CREATE TABLE IF NOT EXISTS newsgroups (
        newsgroup_id INTEGER PRIMARY KEY NOT NULL,
-       newsgroup VARBINARY NOT NULL,
+       newsgroup BLOB NOT NULL,
        UNIQUE (newsgroup) )
 
        # the $NEWSGROUP_NAME.$SLICE_INDEX is part of the POP3 username;
@@ -108,7 +108,7 @@ CREATE TABLE IF NOT EXISTS mailboxes (
        $dbh->do(<<''); # actual users are differentiated by their UUID
 CREATE TABLE IF NOT EXISTS users (
        user_id INTEGER PRIMARY KEY NOT NULL,
-       uuid VARBINARY NOT NULL,
+       uuid BLOB NOT NULL,
        last_seen INTEGER NOT NULL, /* to expire idle accounts */
        UNIQUE (uuid) )
 
index 51ece48d8b0dd33563b9b81030da5db0c9adc20c..062d5e3e5280903f436177506a8cc4c270a2ea6f 100644 (file)
@@ -32,8 +32,8 @@ sub dbh {
                                ($opt->{journal_mode} // 'WAL'));
                $dbh->do(<<'');
 CREATE TABLE IF NOT EXISTS kv (
-       k VARBINARY PRIMARY KEY NOT NULL,
-       v VARBINARY NOT NULL,
+       k BLOB PRIMARY KEY NOT NULL,
+       v BLOB NOT NULL,
        UNIQUE (k)
 )