monotone/monotone-sqlite-3.7.3.patch
2010-10-28 01:15:28 +02:00

48 lines
2.2 KiB
Diff

#
#
# patch "database.cc"
# from [0bc6ce7bb27323c3724ee95f099985a3abad21f3]
# to [b2b6048b199175b85cdf2c290302cb8da095c12a]
#
# patch "tests/fail_cleanly_on_unreadable_db/__driver__.lua"
# from [1ec557d1aef9eac9ee53a22d07f4ba0f3456da5e]
# to [8875c78a070bef87904bb840ed3cffa0acba4399]
#
============================================================
--- database.cc 0bc6ce7bb27323c3724ee95f099985a3abad21f3
+++ database.cc b2b6048b199175b85cdf2c290302cb8da095c12a
@@ -1489,12 +1489,19 @@ database_impl::fetch(results & res,
vector<string> row;
for (int col = 0; col < ncol; col++)
{
+ // We never store NULLs, so we should never see one.
+ int const datatype = sqlite3_column_type(i->second.stmt(), col);
+ E(datatype != SQLITE_NULL, origin::database,
+ F("null result in query: %s") % query.sql_cmd);
const char * value = (const char*)sqlite3_column_blob(i->second.stmt(), col);
int bytes = sqlite3_column_bytes(i->second.stmt(), col);
- E(value, origin::database,
- F("null result in query: %s") % query.sql_cmd);
- row.push_back(string(value, value + bytes));
- //L(FL("row %d col %d value='%s'") % nrow % col % value);
+ if (value) {
+ row.push_back(string(value, value + bytes));
+ } else {
+ // sqlite3_column_blob() returns null for zero-length
+ I(bytes == 0);
+ row.push_back(string());
+ }
}
res.push_back(row);
}
============================================================
--- tests/fail_cleanly_on_unreadable_db/__driver__.lua 1ec557d1aef9eac9ee53a22d07f4ba0f3456da5e
+++ tests/fail_cleanly_on_unreadable_db/__driver__.lua 8875c78a070bef87904bb840ed3cffa0acba4399
@@ -48,7 +48,6 @@ check(mtn("--db=subdir/foo.db", "db", "v
check(mtn("--db=subdir/foo.db", "ls", "branches"), 0, false, false)
check(mtn("--db=subdir/foo.db", "db", "info"), 0, false, false)
check(mtn("--db=subdir/foo.db", "db", "version"), 0, false, false)
-check(mtn("--db=subdir/foo.db", "db", "migrate"), 1, false, false)
check(mtn("--db=subdir/bar.db", "db", "load"), 1, false, false)
check(mtn("--db=subdir/baz.db", "db", "init"), 1, false, false)
check({"chmod", "a+w", "subdir"})