v3.0.4
Fixes Resolve-ImageStoreSimilarFiles failing with:
Unable to cast object of type 'System.Double' to type 'System.Single'.
What was wrong
ExecuteScalar returns a boxed double for a REAL column, and unboxing that directly to float throws. Unlike a data reader, ExecuteScalar has no typed accessor that would hide the difference, so the conversion pass for the SQLite move — which covered every reader[N] — missed this one call site.
Swept the rest
Rather than fixing the single line, every place a database value is read was rechecked:
- All typed getters (
GetGuid,GetBoolean,GetInt32,GetFloat,GetString) feed matching types. - The remaining
reader[N]uses are all BLOB columns —byte[]is the one type that unboxes cleanly. - Nullable columns go through
DBNullableReader. - The only other
ExecuteScalaralready usedConvert.ToInt64.
The migration tool was verified too, using its exact parameter handling — including the awkward case of one reused parameter bound to NULL on one row and a blob on the next. Guids, bools, floats, ints, unicode text and 40/20-byte blobs all round-trip exactly, and COLLATE NOCASE still applies to migrated text. Data produced by the migrator is sound; if you already migrated, there is nothing to redo.