mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
bug 1047811 - Part 2 - Use async transactions in Places. r=Mano
This commit is contained in:
parent
8d53c1682e
commit
922edae9ac
@ -49,6 +49,9 @@
|
||||
|
||||
#define BYTES_PER_KIBIBYTE 1024
|
||||
|
||||
// How much time Sqlite can wait before returning a SQLITE_BUSY error.
|
||||
#define DATABASE_BUSY_TIMEOUT_MS 100
|
||||
|
||||
// Old Sync GUID annotation.
|
||||
#define SYNCGUID_ANNO NS_LITERAL_CSTRING("sync/guid")
|
||||
|
||||
@ -597,6 +600,10 @@ Database::InitSchema(bool* aDatabaseMigrated)
|
||||
(void)mMainConn->SetGrowthIncrement(growthIncrementKiB * BYTES_PER_KIBIBYTE, EmptyCString());
|
||||
}
|
||||
|
||||
nsAutoCString busyTimeoutPragma("PRAGMA busy_timeout = ");
|
||||
busyTimeoutPragma.AppendInt(DATABASE_BUSY_TIMEOUT_MS);
|
||||
(void)mMainConn->ExecuteSimpleSQL(busyTimeoutPragma);
|
||||
|
||||
// We use our functions during migration, so initialize them now.
|
||||
rv = InitFunctions();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
@ -1210,8 +1217,6 @@ Database::MigrateV7Up()
|
||||
return NS_ERROR_FILE_CORRUPTED;
|
||||
}
|
||||
|
||||
mozStorageTransaction transaction(mMainConn, false);
|
||||
|
||||
// We need an index on lastModified to catch quickly last modified bookmark
|
||||
// title for tag container's children. This will be useful for Sync, too.
|
||||
bool lastModIndexExists = false;
|
||||
@ -1391,7 +1396,7 @@ Database::MigrateV7Up()
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
return transaction.Commit();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -1399,7 +1404,6 @@ nsresult
|
||||
Database::MigrateV8Up()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mozStorageTransaction transaction(mMainConn, false);
|
||||
|
||||
nsresult rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"DROP TRIGGER IF EXISTS moz_historyvisits_afterinsert_v1_trigger"));
|
||||
@ -1445,7 +1449,7 @@ Database::MigrateV8Up()
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
return transaction.Commit();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@ -1453,7 +1457,6 @@ nsresult
|
||||
Database::MigrateV9Up()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mozStorageTransaction transaction(mMainConn, false);
|
||||
// Added in Bug 488966. The last_visit_date column caches the last
|
||||
// visit date, this enhances SELECT performances when we
|
||||
// need to sort visits by visit date.
|
||||
@ -1485,7 +1488,7 @@ Database::MigrateV9Up()
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
return transaction.Commit();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2267,7 +2267,9 @@ nsresult
|
||||
nsNavHistory::BeginUpdateBatch()
|
||||
{
|
||||
if (mBatchLevel++ == 0) {
|
||||
mBatchDBTransaction = new mozStorageTransaction(mDB->MainConn(), false);
|
||||
mBatchDBTransaction = new mozStorageTransaction(mDB->MainConn(), false,
|
||||
mozIStorageConnection::TRANSACTION_DEFERRED,
|
||||
true);
|
||||
|
||||
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers,
|
||||
nsINavHistoryObserver, OnBeginUpdateBatch());
|
||||
@ -2332,7 +2334,9 @@ nsNavHistory::RemovePagesInternal(const nsCString& aPlaceIdsQueryString)
|
||||
if (aPlaceIdsQueryString.IsEmpty())
|
||||
return NS_OK;
|
||||
|
||||
mozStorageTransaction transaction(mDB->MainConn(), false);
|
||||
mozStorageTransaction transaction(mDB->MainConn(), false,
|
||||
mozIStorageConnection::TRANSACTION_DEFERRED,
|
||||
true);
|
||||
|
||||
// Delete all visits for the specified place ids.
|
||||
nsresult rv = mDB->MainConn()->ExecuteSimpleSQL(
|
||||
@ -2724,7 +2728,9 @@ nsNavHistory::RemoveVisitsByTimeframe(PRTime aBeginTime, PRTime aEndTime)
|
||||
// force a full refresh calling onEndUpdateBatch (will call Refresh())
|
||||
UpdateBatchScoper batch(*this); // sends Begin/EndUpdateBatch to observers
|
||||
|
||||
mozStorageTransaction transaction(mDB->MainConn(), false);
|
||||
mozStorageTransaction transaction(mDB->MainConn(), false,
|
||||
mozIStorageConnection::TRANSACTION_DEFERRED,
|
||||
true);
|
||||
|
||||
// Delete all visits within the timeframe.
|
||||
nsCOMPtr<mozIStorageStatement> deleteVisitsStmt = mDB->GetStatement(
|
||||
|
@ -11,7 +11,8 @@ added or removed and also the maintenance task to fix wrong counts.
|
||||
|
||||
const T_URI = NetUtil.newURI("https://www.mozilla.org/firefox/nightly/firstrun/");
|
||||
|
||||
function* getForeignCountForURL(conn, url){
|
||||
function* getForeignCountForURL(conn, url) {
|
||||
yield promiseAsyncUpdates();
|
||||
let url = url instanceof Ci.nsIURI ? url.spec : url;
|
||||
let rows = yield conn.executeCached(
|
||||
"SELECT foreign_count FROM moz_places WHERE url = :t_url ", { t_url: url });
|
||||
@ -106,4 +107,4 @@ add_task(function* add_remove_tags_test(){
|
||||
// Check foreign count is set to 0 when all tags are removed
|
||||
PlacesUtils.tagging.untagURI(T_URI, ["test tag", "one", "two"]);
|
||||
Assert.equal((yield getForeignCountForURL(conn, T_URI)), 0);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user