mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-29 18:18:27 +00:00
import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 951651 - Make bookmarkProperties, Star UI and Library info pane work with PlacesTransactions. r=mak (6d0127aa5) - Bug 547623 - Add a button to about:support to enter safe mode. r=adw (1a0481412) - Bug 728813 - Switch Help menu item to allow leaving Safe Mode when it's enabled. r=MattN (cfeae5bf8) - Bug 1125115 - Write a new keywords pseudo-API in PlacesUtils. r=ttaubert (afc6f00c9)
This commit is contained in:
@@ -735,6 +735,13 @@ Database::InitSchema(bool* aDatabaseMigrated)
|
||||
|
||||
// Firefox 37 uses schema version 26.
|
||||
|
||||
if (currentSchemaVersion < 27) {
|
||||
rv = MigrateV27Up();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
// Firefox 38 uses schema version 27.
|
||||
|
||||
// Schema Upgrades must add migration code here.
|
||||
|
||||
rv = UpdateBookmarkRootTitles();
|
||||
@@ -801,6 +808,8 @@ Database::InitSchema(bool* aDatabaseMigrated)
|
||||
// moz_keywords.
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_MOZ_KEYWORDS);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_IDX_MOZ_KEYWORDS_PLACEPOSTDATA);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// moz_favicons.
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_MOZ_FAVICONS);
|
||||
@@ -951,11 +960,18 @@ Database::InitTempTriggers()
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_PLACES_AFTERUPDATE_TYPED_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_FOREIGNCOUNT_AFTERDELETE_TRIGGER);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_BOOKMARKS_FOREIGNCOUNT_AFTERDELETE_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_FOREIGNCOUNT_AFTERINSERT_TRIGGER);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_BOOKMARKS_FOREIGNCOUNT_AFTERINSERT_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_FOREIGNCOUNT_AFTERUPDATE_TRIGGER);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_BOOKMARKS_FOREIGNCOUNT_AFTERUPDATE_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_KEYWORDS_FOREIGNCOUNT_AFTERDELETE_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_KEYWORDS_FOREIGNCOUNT_AFTERINSERT_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_KEYWORDS_FOREIGNCOUNT_AFTERUPDATE_TRIGGER);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
@@ -1487,6 +1503,66 @@ Database::MigrateV26Up() {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
Database::MigrateV27Up() {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
// Change keywords store, moving their relation from bookmarks to urls.
|
||||
nsCOMPtr<mozIStorageStatement> stmt;
|
||||
nsresult rv = mMainConn->CreateStatement(NS_LITERAL_CSTRING(
|
||||
"SELECT place_id FROM moz_keywords"
|
||||
), getter_AddRefs(stmt));
|
||||
if (NS_FAILED(rv)) {
|
||||
// Even if these 2 columns have a unique constraint, we allow NULL values
|
||||
// for backwards compatibility. NULL never breaks a unique constraint.
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"ALTER TABLE moz_keywords ADD COLUMN place_id INTEGER"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"ALTER TABLE moz_keywords ADD COLUMN post_data TEXT"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(CREATE_IDX_MOZ_KEYWORDS_PLACEPOSTDATA);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
// Associate keywords with uris. A keyword could be associated to multiple
|
||||
// bookmarks uris, or multiple keywords could be associated to the same uri.
|
||||
// The new system only allows multiple uris per keyword, provided they have
|
||||
// a different post_data value.
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"INSERT OR REPLACE INTO moz_keywords (id, keyword, place_id, post_data) "
|
||||
"SELECT k.id, k.keyword, h.id, MAX(a.content) "
|
||||
"FROM moz_places h "
|
||||
"JOIN moz_bookmarks b ON b.fk = h.id "
|
||||
"JOIN moz_keywords k ON k.id = b.keyword_id "
|
||||
"LEFT JOIN moz_items_annos a ON a.item_id = b.id "
|
||||
"LEFT JOIN moz_anno_attributes n ON a.anno_attribute_id = n.id "
|
||||
"AND n.name = 'bookmarkProperties/POSTData'"
|
||||
"WHERE k.place_id ISNULL "
|
||||
"GROUP BY keyword"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Remove any keyword that points to a non-existing place id.
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"DELETE FROM moz_keywords "
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM moz_places WHERE id = moz_keywords.place_id)"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"UPDATE moz_bookmarks SET keyword_id = NULL "
|
||||
"WHERE NOT EXISTS (SELECT 1 FROM moz_keywords WHERE id = moz_bookmarks.keyword_id)"));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Adjust foreign_count for all the rows.
|
||||
rv = mMainConn->ExecuteSimpleSQL(NS_LITERAL_CSTRING(
|
||||
"UPDATE moz_places SET foreign_count = "
|
||||
"(SELECT count(*) FROM moz_bookmarks WHERE fk = moz_places.id) + "
|
||||
"(SELECT count(*) FROM moz_keywords WHERE place_id = moz_places.id) "
|
||||
));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
Database::Shutdown()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user