Hi All,
Find the attached patch and log.
This patch makes SQLITE_ERR to check for any expected value instead of
only 'SQLITE_OK'.
With regards
Kamesh Jayachandran
[[[
Patch by: Kamesh Jayachandran <kamesh@collab.net>
SQLITE_ERR has been made to check for expected value instead of
SQLITE_OK.
* subversion/libsvn_fs_fs/fs.h
(SQLITE_ERR): accepts 'expected_val' and checks against the first argument.
* subversion/libsvn_fs_fs/tree.c
(parse_mergeinfo_from_db): Adjust for above SQLITE_ERR change.
(get_merge_info_for_path): Adjust for above SQLITE_ERR change.
(fs_get_merge_info): Adjust for above SQLITE_ERR change.
* subversion/libsvn_fs_fs/fs_fs.c
(index_path_merge_info): Adjust for above SQLITE_ERR change.
(update_merge_info_index): Adjust for above SQLITE_ERR change.
(svn_fs_fs__create): Adjust for above SQLITE_ERR change.
]]]
Index: subversion/libsvn_fs_fs/tree.c
===================================================================
--- subversion/libsvn_fs_fs/tree.c (revision 21362)
+++ subversion/libsvn_fs_fs/tree.c (working copy)
@@ -1107,26 +1107,23 @@
SQLITE_ERR(sqlite3_prepare(db, "SELECT MAX(revision) from mergeinfo_changed"
" where path = ? and revision <= ?;",
- -1, &stmt, NULL), db);
- SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT), db);
- SQLITE_ERR(sqlite3_bind_int64(stmt, 2, rev), db);
- sqlite_result = sqlite3_step(stmt);
- if (sqlite_result != SQLITE_ROW)
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(db));
-
+ -1, &stmt, NULL), SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT), SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_bind_int64(stmt, 2, rev), SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_step(stmt), SQLITE_ROW, db);
lastchanged_rev = sqlite3_column_int64(stmt, 0);
- SQLITE_ERR(sqlite3_finalize(stmt), db);
+ SQLITE_ERR(sqlite3_finalize(stmt), SQLITE_OK, db);
SQLITE_ERR(sqlite3_prepare(db,
"SELECT mergedfrom, mergedrevstart,"
"mergedrevend from mergeinfo "
"where mergedto = ? and revision = ? "
"order by mergedfrom;",
- -1, &stmt, NULL), db);
- SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT), db);
- SQLITE_ERR(sqlite3_bind_int64(stmt, 2, lastchanged_rev), db);
+ -1, &stmt, NULL), SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT),
+ SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_bind_int64(stmt, 2, lastchanged_rev), SQLITE_OK, db);
sqlite_result = sqlite3_step(stmt);
/* It is possible the mergeinfo changed because of a delete, and
@@ -1171,17 +1168,13 @@
}
apr_hash_set(*result, mergedfrom, APR_HASH_KEY_STRING, pathranges);
- if (sqlite_result != SQLITE_DONE)
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(db));
+ SQLITE_ERR(sqlite_result, SQLITE_DONE, db);
}
else
- {
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(db));
- }
- SQLITE_ERR(sqlite3_finalize(stmt), db);
+ SQLITE_ERR(sqlite_result, !sqlite_result, db);
+ SQLITE_ERR(sqlite3_finalize(stmt), SQLITE_OK, db);
+
return SVN_NO_ERROR;
}
@@ -1243,17 +1236,15 @@
then it can't have mergeinfo. */
SQLITE_ERR(sqlite3_prepare(db, "SELECT COUNT(*) from mergeinfo_changed"
" where path = ? and revision <= ?;",
- -1, &stmt, NULL), db);
+ -1, &stmt, NULL), SQLITE_OK, db);
- SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT), db);
- SQLITE_ERR(sqlite3_bind_int64(stmt, 2, rev), db);
- sqlite_result = sqlite3_step(stmt);
- if (sqlite_result != SQLITE_ROW)
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(db));
+ SQLITE_ERR(sqlite3_bind_text(stmt, 1, path, -1, SQLITE_TRANSIENT),
+ SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_bind_int64(stmt, 2, rev), SQLITE_OK, db);
+ SQLITE_ERR(sqlite3_step(stmt), SQLITE_ROW, db);
count = sqlite3_column_int64(stmt, 0);
- SQLITE_ERR(sqlite3_finalize(stmt), db);
+ SQLITE_ERR(sqlite3_finalize(stmt), SQLITE_OK, db);
/* If we've got mergeinfo data, transform it from the db into a
mergeinfo hash */
@@ -1344,7 +1335,7 @@
rev = svn_fs_revision_root_revision(root);
SQLITE_ERR(sqlite3_open(svn_path_join(root->fs->path, "mergeinfo.db", pool),
- &db), db);
+ &db), SQLITE_OK, db);
#ifdef SQLITE3_DEBUG
sqlite3_trace (db, sqlite_tracer, db);
#endif
@@ -1373,7 +1364,7 @@
apr_hash_set(*mergeinfo, path, APR_HASH_KEY_STRING, mergestring->data);
}
}
- SQLITE_ERR(sqlite3_close(db), db);
+ SQLITE_ERR(sqlite3_close(db), SQLITE_OK, db);
return SVN_NO_ERROR;
}
Index: subversion/libsvn_fs_fs/fs_fs.c
===================================================================
--- subversion/libsvn_fs_fs/fs_fs.c (revision 21362)
+++ subversion/libsvn_fs_fs/fs_fs.c (working copy)
@@ -4024,44 +4024,39 @@
int i;
SQLITE_ERR(sqlite3_prepare(ftd->mtd,
"INSERT INTO mergeinfo (revision, mergedto, mergedfrom, mergedrevstart, mergedrevend) VALUES (?, ?, ?, ?, ?);",
- -1, &stmt, NULL), ftd->mtd);
- SQLITE_ERR(sqlite3_bind_int64(stmt, 1, new_rev), ftd->mtd);
+ -1, &stmt, NULL), SQLITE_OK, ftd->mtd);
+ SQLITE_ERR(sqlite3_bind_int64(stmt, 1, new_rev), SQLITE_OK, ftd->mtd);
SQLITE_ERR(sqlite3_bind_text(stmt, 2, path, -1, SQLITE_TRANSIENT),
- ftd->mtd);
+ SQLITE_OK, ftd->mtd);
SQLITE_ERR(sqlite3_bind_text(stmt, 3, from, -1, SQLITE_TRANSIENT),
- ftd->mtd);
+ SQLITE_OK, ftd->mtd);
for (i = 0; i < revlist->nelts; i++)
{
svn_merge_range_t *range;
range = APR_ARRAY_IDX(revlist, i, svn_merge_range_t *);
SQLITE_ERR(sqlite3_bind_int64(stmt, 4, range->start),
- ftd->mtd);
+ SQLITE_OK, ftd->mtd);
SQLITE_ERR(sqlite3_bind_int64(stmt, 5, range->end),
- ftd->mtd);
- if (sqlite3_step(stmt) != SQLITE_DONE)
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(ftd->mtd));
-
- SQLITE_ERR(sqlite3_reset(stmt), ftd->mtd);
+ SQLITE_OK, ftd->mtd);
+ SQLITE_ERR(sqlite3_step(stmt), SQLITE_DONE, ftd->mtd);
+ SQLITE_ERR(sqlite3_reset(stmt), SQLITE_OK, ftd->mtd);
}
- SQLITE_ERR(sqlite3_finalize(stmt), ftd->mtd);
+ SQLITE_ERR(sqlite3_finalize(stmt), SQLITE_OK, ftd->mtd);
}
}
SQLITE_ERR (sqlite3_prepare(ftd->mtd,
"INSERT INTO mergeinfo_changed (revision, path) VALUES (?, ?);",
-1, &stmt, NULL),
- ftd->mtd);
- SQLITE_ERR(sqlite3_bind_int64(stmt, 1, new_rev), ftd->mtd);
+ SQLITE_OK, ftd->mtd);
+ SQLITE_ERR(sqlite3_bind_int64(stmt, 1, new_rev), SQLITE_OK, ftd->mtd);
SQLITE_ERR(sqlite3_bind_text(stmt, 2, path, -1, SQLITE_TRANSIENT),
- ftd->mtd);
+ SQLITE_OK, ftd->mtd);
- if (sqlite3_step(stmt) != SQLITE_DONE)
- return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL,
- sqlite3_errmsg(ftd->mtd));
+ SQLITE_ERR(sqlite3_step(stmt), SQLITE_DONE, ftd->mtd);
- SQLITE_ERR(sqlite3_finalize(stmt), ftd->mtd);
+ SQLITE_ERR(sqlite3_finalize(stmt), SQLITE_OK, ftd->mtd);
return SVN_NO_ERROR;
}
@@ -4117,7 +4112,7 @@
fs_txn_data_t *ftd = cb->txn->fsap_data;
SQLITE_ERR(sqlite3_open(path_mergeinfo_db(cb->fs, pool),
- &ftd->mtd), ftd->mtd);
+ &ftd->mtd), SQLITE_OK, ftd->mtd);
#ifdef SQLITE3_DEBUG
sqlite3_trace (ftd->mtd, sqlite_tracer, ftd->mtd);
#endif
@@ -4144,7 +4139,7 @@
the current file, we just end up with inaccessible data in the
database, not a real problem. */
SVN_ERR(fs_sqlite_exec(ftd->mtd, "commit transaction;", NULL, NULL));
- SQLITE_ERR(sqlite3_close(ftd->mtd), ftd->mtd);
+ SQLITE_ERR(sqlite3_close(ftd->mtd), SQLITE_OK, ftd->mtd);
return SVN_NO_ERROR;
}
@@ -4390,7 +4385,7 @@
fs->path = apr_pstrdup(pool, path);
SQLITE_ERR(sqlite3_open(path_mergeinfo_db(fs, pool), &ffd->mtd),
- ffd->mtd);
+ SQLITE_OK, ffd->mtd);
#ifdef SQLITE3_DEBUG
sqlite3_trace (ffd->mtd, sqlite_tracer, ffd->mtd);
#endif
@@ -4422,7 +4417,7 @@
(path_format(fs, pool), format, pool));
((fs_fs_data_t *) fs->fsap_data)->format = format;
- SQLITE_ERR(sqlite3_close(ffd->mtd), ffd->mtd);
+ SQLITE_ERR(sqlite3_close(ffd->mtd), SQLITE_OK, ffd->mtd);
ffd->mtd = NULL;
Index: subversion/libsvn_fs_fs/fs.h
===================================================================
--- subversion/libsvn_fs_fs/fs.h (revision 21362)
+++ subversion/libsvn_fs_fs/fs.h (working copy)
@@ -214,11 +214,11 @@
sqlite3_callback cb, void *data);
/* SQLITE->SVN quick error wrap, much like SVN_ERR.
- XXX: This macro probably belongs elsehwere, like svn_sqlite.h or
+ XXX: This macro probably belongs elsewhere, like svn_sqlite.h or
something. Later. */
-#define SQLITE_ERR(x, db) do \
+#define SQLITE_ERR(x, expected_val, db) do \
{ \
- if ((x) != SQLITE_OK) \
+ if ((x) != expected_val) \
return svn_error_create(SVN_ERR_FS_SQLITE_ERROR, NULL, \
sqlite3_errmsg((db))); \
} while (0)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Sep 6 13:58:47 2006