toolkit/components/places/PlacesDBUtils.jsm
author Wes Kocher <wkocher@mozilla.com>
Mon, 05 Jan 2015 17:08:49 -0800
changeset 222089 2a193b7f395c8e6f3c21e83777ce2f540e4c04fe
parent 213975 ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b
child 234606 687b6a735b3420cfa16cc30b55d7fd447e528fa5
permissions -rw-r--r--
Merge fx-team to m-c a=merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
190623
69d61e42d5dfbf4588b72449249ff3e7f2125304 Bug 914753: Make Emacs file variable header lines correct, or at least consistent. DONTBUILD r=ehsan
Jim Blandy <jimb@mozilla.com>
parents: 160657
diff changeset
     1
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
     2
 * vim: sw=2 ts=2 sts=2 expandtab filetype=javascript
94475
Gervase Markham <gerv@gerv.net>
parents: 91533
diff changeset
     3
 * This Source Code Form is subject to the terms of the Mozilla Public
Gervase Markham <gerv@gerv.net>
parents: 91533
diff changeset
     4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Gervase Markham <gerv@gerv.net>
parents: 91533
diff changeset
     5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
     6
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
     7
const Cc = Components.classes;
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
     8
const Ci = Components.interfaces;
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
     9
const Cr = Components.results;
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    10
const Cu = Components.utils;
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    11
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    12
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    13
Cu.import("resource://gre/modules/Services.jsm");
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    14
Cu.import("resource://gre/modules/PlacesUtils.jsm");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    15
111947
5ce71981e005a52d4cb0b831ad3db9284f2fb356 Bug 798491: Add an option to stick all chrome JSMs/JS components in the same compartment. r=mrbkap,philikon
Kyle Huey <khuey@kylehuey.com>
parents: 111876
diff changeset
    16
this.EXPORTED_SYMBOLS = [ "PlacesDBUtils" ];
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    17
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    18
////////////////////////////////////////////////////////////////////////////////
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    19
//// Constants
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    20
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    21
const FINISHED_MAINTENANCE_TOPIC = "places-maintenance-finished";
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    22
78371
b16c81fc5e94fa7ac444a4e105d54f51fe292f30 Bug 689142 - Places telemetry gets lost, due to being collected on idle-daily.
Marco Bonardo <mbonardo@mozilla.com>
parents: 76195
diff changeset
    23
const BYTES_PER_MEBIBYTE = 1048576;
b16c81fc5e94fa7ac444a4e105d54f51fe292f30 Bug 689142 - Places telemetry gets lost, due to being collected on idle-daily.
Marco Bonardo <mbonardo@mozilla.com>
parents: 76195
diff changeset
    24
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    25
////////////////////////////////////////////////////////////////////////////////
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    26
//// Smart getters
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    27
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    28
XPCOMUtils.defineLazyGetter(this, "DBConn", function() {
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    29
  return PlacesUtils.history.QueryInterface(Ci.nsPIPlacesDatabase).DBConnection;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
    30
});
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    31
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    32
////////////////////////////////////////////////////////////////////////////////
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    33
//// PlacesDBUtils
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    34
111947
5ce71981e005a52d4cb0b831ad3db9284f2fb356 Bug 798491: Add an option to stick all chrome JSMs/JS components in the same compartment. r=mrbkap,philikon
Kyle Huey <khuey@kylehuey.com>
parents: 111876
diff changeset
    35
this.PlacesDBUtils = {
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    36
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    37
   * Executes a list of maintenance tasks.
106894
7530e96d9af635c68430a1d1cd97f67f74efaa0d Bug 751813 - Stop spewing to the console about Places Maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 94475
diff changeset
    38
   * Once finished it will pass a array log to the callback attached to tasks.
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    39
   * FINISHED_MAINTENANCE_TOPIC is notified through observer service on finish.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    40
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    41
   * @param aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    42
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    43
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    44
  _executeTasks: function PDBU__executeTasks(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    45
  {
85528
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    46
    if (PlacesDBUtils._isShuttingDown) {
86187
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    47
      aTasks.log("- We are shutting down. Will not schedule the tasks.");
85528
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    48
      aTasks.clear();
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    49
    }
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    50
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    51
    let task = aTasks.pop();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    52
    if (task) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    53
      task.call(PlacesDBUtils, aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    54
    }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    55
    else {
86187
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    56
      // All tasks have been completed.
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    57
      // Telemetry the time it took for maintenance, if a start time exists.
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    58
      if (aTasks._telemetryStart) {
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    59
        Services.telemetry.getHistogramById("PLACES_IDLE_MAINTENANCE_TIME_MS")
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    60
                          .add(Date.now() - aTasks._telemetryStart);
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    61
        aTasks._telemetryStart = 0;
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    62
      }
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    63
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    64
      if (aTasks.callback) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    65
        let scope = aTasks.scope || Cu.getGlobalForObject(aTasks.callback);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    66
        aTasks.callback.call(scope, aTasks.messages);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    67
      }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    68
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    69
      // Notify observers that maintenance finished.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    70
      Services.prefs.setIntPref("places.database.lastMaintenance", parseInt(Date.now() / 1000));
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    71
      Services.obs.notifyObservers(null, FINISHED_MAINTENANCE_TOPIC, null);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    72
    }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    73
  },
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
    74
85528
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    75
  _isShuttingDown : false,
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    76
  shutdown: function PDBU_shutdown() {
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    77
    PlacesDBUtils._isShuttingDown = true;
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    78
  },
91cbd6eb803c5d679c812eeec40e25c4c79ba976 Bug 719438 - PDBU_maintenanceOnIdle can try use the places database after it is closed. r=mak.
Rafael Ávila de Espíndola <respindola@mozilla.com>
parents: 83908
diff changeset
    79
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    80
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    81
   * Executes integrity check and common maintenance tasks.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    82
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    83
   * @param [optional] aCallback
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    84
   *        Callback to be invoked when done.  The callback will get a array
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    85
   *        of log messages.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    86
   * @param [optional] aScope
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    87
   *        Scope for the callback.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    88
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    89
  maintenanceOnIdle: function PDBU_maintenanceOnIdle(aCallback, aScope)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    90
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    91
    let tasks = new Tasks([
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    92
      this.checkIntegrity
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    93
    , this.checkCoherence
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    94
    , this._refreshUI
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    95
    ]);
86187
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
    96
    tasks._telemetryStart = Date.now();
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    97
    tasks.callback = aCallback;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    98
    tasks.scope = aScope;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
    99
    this._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   100
  },
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   101
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   102
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   103
   * Executes integrity check, common and advanced maintenance tasks (like
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   104
   * expiration and vacuum).  Will also collect statistics on the database.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   105
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   106
   * @param [optional] aCallback
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   107
   *        Callback to be invoked when done.  The callback will get a array
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   108
   *        of log messages.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   109
   * @param [optional] aScope
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   110
   *        Scope for the callback.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   111
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   112
  checkAndFixDatabase: function PDBU_checkAndFixDatabase(aCallback, aScope)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   113
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   114
    let tasks = new Tasks([
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   115
      this.checkIntegrity
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   116
    , this.checkCoherence
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   117
    , this.expire
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   118
    , this.vacuum
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   119
    , this.stats
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   120
    , this._refreshUI
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   121
    ]);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   122
    tasks.callback = aCallback;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   123
    tasks.scope = aScope;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   124
    this._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   125
  },
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   126
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   127
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   128
   * Forces a full refresh of Places views.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   129
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   130
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   131
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   132
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   133
  _refreshUI: function PDBU__refreshUI(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   134
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   135
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   136
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   137
    // Send batch update notifications to update the UI.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   138
    PlacesUtils.history.runInBatchMode({
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   139
      runBatched: function (aUserData) {}
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   140
    }, null);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   141
    PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   142
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   143
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   144
  _handleError: function PDBU__handleError(aError)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   145
  {
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   146
    Cu.reportError("Async statement execution returned with '" +
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   147
                   aError.result + "', '" + aError.message + "'");
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   148
  },
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   149
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   150
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   151
   * Tries to execute a REINDEX on the database.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   152
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   153
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   154
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   155
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   156
  reindex: function PDBU_reindex(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   157
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   158
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   159
    tasks.log("> Reindex");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   160
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   161
    let stmt = DBConn.createAsyncStatement("REINDEX");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   162
    stmt.executeAsync({
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   163
      handleError: PlacesDBUtils._handleError,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   164
      handleResult: function () {},
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   165
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   166
      handleCompletion: function (aReason)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   167
      {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   168
        if (aReason == Ci.mozIStorageStatementCallback.REASON_FINISHED) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   169
          tasks.log("+ The database has been reindexed");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   170
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   171
        else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   172
          tasks.log("- Unable to reindex database");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   173
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   174
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   175
        PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   176
      }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   177
    });
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   178
    stmt.finalize();
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   179
  },
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   180
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   181
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   182
   * Checks integrity but does not try to fix the database through a reindex.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   183
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   184
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   185
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   186
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   187
  _checkIntegritySkipReindex: function PDBU__checkIntegritySkipReindex(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   188
    this.checkIntegrity(aTasks, true),
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   189
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   190
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   191
   * Checks integrity and tries to fix the database through a reindex.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   192
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   193
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   194
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   195
   * @param [optional] aSkipdReindex
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   196
   *        Whether to try to reindex database or not.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   197
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   198
  checkIntegrity: function PDBU_checkIntegrity(aTasks, aSkipReindex)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   199
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   200
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   201
    tasks.log("> Integrity check");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   202
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   203
    // Run a integrity check, but stop at the first error.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   204
    let stmt = DBConn.createAsyncStatement("PRAGMA integrity_check(1)");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   205
    stmt.executeAsync({
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   206
      handleError: PlacesDBUtils._handleError,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   207
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   208
      _corrupt: false,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   209
      handleResult: function (aResultSet)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   210
      {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   211
        let row = aResultSet.getNextRow();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   212
        this._corrupt = row.getResultByIndex(0) != "ok";
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   213
      },
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   214
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   215
      handleCompletion: function (aReason)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   216
      {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   217
        if (aReason == Ci.mozIStorageStatementCallback.REASON_FINISHED) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   218
          if (this._corrupt) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   219
            tasks.log("- The database is corrupt");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   220
            if (aSkipReindex) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   221
              tasks.log("- Unable to fix corruption, database will be replaced on next startup");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   222
              Services.prefs.setBoolPref("places.database.replaceOnStartup", true);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   223
              tasks.clear();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   224
            }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   225
            else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   226
              // Try to reindex, this often fixed simple indices corruption.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   227
              // We insert from the top of the queue, they will run inverse.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   228
              tasks.push(PlacesDBUtils._checkIntegritySkipReindex);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   229
              tasks.push(PlacesDBUtils.reindex);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   230
            }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   231
          }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   232
          else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   233
            tasks.log("+ The database is sane");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   234
          }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   235
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   236
        else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   237
          tasks.log("- Unable to check database status");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   238
          tasks.clear();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   239
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   240
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   241
        PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   242
      }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   243
    });
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   244
    stmt.finalize();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   245
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   246
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   247
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   248
   * Checks data coherence and tries to fix most common errors.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   249
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   250
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   251
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   252
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   253
  checkCoherence: function PDBU_checkCoherence(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   254
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   255
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   256
    tasks.log("> Coherence check");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   257
86337
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
   258
    let stmts = PlacesDBUtils._getBoundCoherenceStatements();
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   259
    DBConn.executeAsync(stmts, stmts.length, {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   260
      handleError: PlacesDBUtils._handleError,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   261
      handleResult: function () {},
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   262
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   263
      handleCompletion: function (aReason)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   264
      {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   265
        if (aReason == Ci.mozIStorageStatementCallback.REASON_FINISHED) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   266
          tasks.log("+ The database is coherent");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   267
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   268
        else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   269
          tasks.log("- Unable to check database coherence");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   270
          tasks.clear();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   271
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   272
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   273
        PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   274
      }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   275
    });
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   276
    stmts.forEach(function (aStmt) aStmt.finalize());
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   277
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   278
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   279
  _getBoundCoherenceStatements: function PDBU__getBoundCoherenceStatements()
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   280
  {
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   281
    let cleanupStatements = [];
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   282
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   283
    // MOZ_ANNO_ATTRIBUTES
76195
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   284
    // A.1 remove obsolete annotations from moz_annos.
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   285
    // The 'weave0' idiom exploits character ordering (0 follows /) to
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   286
    // efficiently select all annos with a 'weave/' prefix.
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   287
    let deleteObsoleteAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   288
      `DELETE FROM moz_annos
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   289
       WHERE anno_attribute_id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   290
         SELECT id FROM moz_anno_attributes
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   291
         WHERE name BETWEEN 'weave/' AND 'weave0'
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   292
       )`);
76195
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   293
    cleanupStatements.push(deleteObsoleteAnnos);
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   294
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   295
    // A.2 remove obsolete annotations from moz_items_annos.
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   296
    let deleteObsoleteItemsAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   297
      `DELETE FROM moz_items_annos
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   298
       WHERE anno_attribute_id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   299
         SELECT id FROM moz_anno_attributes
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   300
         WHERE name = 'sync/children'
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   301
            OR name = 'placesInternal/GUID'
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   302
            OR name BETWEEN 'weave/' AND 'weave0'
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   303
       )`);
76195
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   304
    cleanupStatements.push(deleteObsoleteItemsAnnos);
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   305
4ce9a64d1ddfe3ef353130e4d310039c898f846e Bug 615413 - Part 1: Clear out old weave/ and sync/ annotations. r=mak
Richard Newman <rnewman@mozilla.com>
parents: 73637
diff changeset
   306
    // A.3 remove unused attributes.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   307
    let deleteUnusedAnnoAttributes = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   308
      `DELETE FROM moz_anno_attributes WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   309
         SELECT id FROM moz_anno_attributes n
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   310
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   311
             (SELECT id FROM moz_annos WHERE anno_attribute_id = n.id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   312
           AND NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   313
             (SELECT id FROM moz_items_annos WHERE anno_attribute_id = n.id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   314
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   315
    cleanupStatements.push(deleteUnusedAnnoAttributes);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   316
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   317
    // MOZ_ANNOS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   318
    // B.1 remove annos with an invalid attribute
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   319
    let deleteInvalidAttributeAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   320
      `DELETE FROM moz_annos WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   321
         SELECT id FROM moz_annos a
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   322
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   323
           (SELECT id FROM moz_anno_attributes
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   324
             WHERE id = a.anno_attribute_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   325
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   326
    cleanupStatements.push(deleteInvalidAttributeAnnos);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   327
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   328
    // B.2 remove orphan annos
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   329
    let deleteOrphanAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   330
      `DELETE FROM moz_annos WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   331
         SELECT id FROM moz_annos a
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   332
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   333
           (SELECT id FROM moz_places WHERE id = a.place_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   334
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   335
    cleanupStatements.push(deleteOrphanAnnos);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   336
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   337
    // Bookmarks roots
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   338
    // C.1 fix missing Places root
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   339
    //     Bug 477739 shows a case where the root could be wrongly removed
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   340
    //     due to an endianness issue.  We try to fix broken roots here.
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   341
    let selectPlacesRoot = DBConn.createStatement(
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   342
      "SELECT id FROM moz_bookmarks WHERE id = :places_root");
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   343
    selectPlacesRoot.params["places_root"] = PlacesUtils.placesRootId;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   344
    if (!selectPlacesRoot.executeStep()) {
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   345
      // We are missing the root, try to recreate it.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   346
      let createPlacesRoot = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   347
        `INSERT INTO moz_bookmarks (id, type, fk, parent, position, title,
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   348
                                    guid)
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   349
         VALUES (:places_root, 2, NULL, 0, 0, :title, :guid)`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   350
      createPlacesRoot.params["places_root"] = PlacesUtils.placesRootId;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   351
      createPlacesRoot.params["title"] = "";
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   352
      createPlacesRoot.params["guid"] = PlacesUtils.bookmarks.rootGuid;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   353
      cleanupStatements.push(createPlacesRoot);
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   354
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   355
      // Now ensure that other roots are children of Places root.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   356
      let fixPlacesRootChildren = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   357
        `UPDATE moz_bookmarks SET parent = :places_root WHERE guid IN
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   358
           ( :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   359
      fixPlacesRootChildren.params["places_root"] = PlacesUtils.placesRootId;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   360
      fixPlacesRootChildren.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   361
      fixPlacesRootChildren.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   362
      fixPlacesRootChildren.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   363
      fixPlacesRootChildren.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   364
      cleanupStatements.push(fixPlacesRootChildren);
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   365
    }
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   366
    selectPlacesRoot.finalize();
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   367
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   368
    // C.2 fix roots titles
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   369
    //     some alpha version has wrong roots title, and this also fixes them if
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   370
    //     locale has changed.
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   371
    let updateRootTitleSql = `UPDATE moz_bookmarks SET title = :title
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   372
                              WHERE id = :root_id AND title <> :title`;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   373
    // root
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   374
    let fixPlacesRootTitle = DBConn.createAsyncStatement(updateRootTitleSql);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   375
    fixPlacesRootTitle.params["root_id"] = PlacesUtils.placesRootId;
27919
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   376
    fixPlacesRootTitle.params["title"] = "";
313b7c5a27f5949e6c7b8ebfd32c84e2b63e7b40 Bug 484019 - Fix corrupt or wrong roots titles in the database and in the Library, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 27716
diff changeset
   377
    cleanupStatements.push(fixPlacesRootTitle);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   378
    // bookmarks menu
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   379
    let fixBookmarksMenuTitle = DBConn.createAsyncStatement(updateRootTitleSql);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   380
    fixBookmarksMenuTitle.params["root_id"] = PlacesUtils.bookmarksMenuFolderId;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   381
    fixBookmarksMenuTitle.params["title"] =
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   382
      PlacesUtils.getString("BookmarksMenuFolderTitle");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   383
    cleanupStatements.push(fixBookmarksMenuTitle);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   384
    // bookmarks toolbar
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   385
    let fixBookmarksToolbarTitle = DBConn.createAsyncStatement(updateRootTitleSql);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   386
    fixBookmarksToolbarTitle.params["root_id"] = PlacesUtils.toolbarFolderId;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   387
    fixBookmarksToolbarTitle.params["title"] =
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   388
      PlacesUtils.getString("BookmarksToolbarFolderTitle");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   389
    cleanupStatements.push(fixBookmarksToolbarTitle);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   390
    // unsorted bookmarks
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   391
    let fixUnsortedBookmarksTitle = DBConn.createAsyncStatement(updateRootTitleSql);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   392
    fixUnsortedBookmarksTitle.params["root_id"] = PlacesUtils.unfiledBookmarksFolderId;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   393
    fixUnsortedBookmarksTitle.params["title"] =
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   394
      PlacesUtils.getString("UnsortedBookmarksFolderTitle");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   395
    cleanupStatements.push(fixUnsortedBookmarksTitle);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   396
    // tags
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   397
    let fixTagsRootTitle = DBConn.createAsyncStatement(updateRootTitleSql);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   398
    fixTagsRootTitle.params["root_id"] = PlacesUtils.tagsFolderId;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   399
    fixTagsRootTitle.params["title"] =
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   400
      PlacesUtils.getString("TagsFolderTitle");
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   401
    cleanupStatements.push(fixTagsRootTitle);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   402
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   403
    // MOZ_BOOKMARKS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   404
    // D.1 remove items without a valid place
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   405
    // if fk IS NULL we fix them in D.7
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   406
    let deleteNoPlaceItems = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   407
      `DELETE FROM moz_bookmarks WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   408
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   409
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   410
         SELECT b.id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   411
         WHERE fk NOT NULL AND b.type = :bookmark_type
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   412
           AND NOT EXISTS (SELECT url FROM moz_places WHERE id = b.fk LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   413
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   414
    deleteNoPlaceItems.params["bookmark_type"] = PlacesUtils.bookmarks.TYPE_BOOKMARK;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   415
    deleteNoPlaceItems.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   416
    deleteNoPlaceItems.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   417
    deleteNoPlaceItems.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   418
    deleteNoPlaceItems.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   419
    deleteNoPlaceItems.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   420
    cleanupStatements.push(deleteNoPlaceItems);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   421
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   422
    // D.2 remove items that are not uri bookmarks from tag containers
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   423
    let deleteBogusTagChildren = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   424
      `DELETE FROM moz_bookmarks WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   425
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   426
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   427
         SELECT b.id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   428
         WHERE b.parent IN
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   429
           (SELECT id FROM moz_bookmarks WHERE parent = :tags_folder)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   430
           AND b.type <> :bookmark_type
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   431
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   432
    deleteBogusTagChildren.params["tags_folder"] = PlacesUtils.tagsFolderId;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   433
    deleteBogusTagChildren.params["bookmark_type"] = PlacesUtils.bookmarks.TYPE_BOOKMARK;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   434
    deleteBogusTagChildren.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   435
    deleteBogusTagChildren.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   436
    deleteBogusTagChildren.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   437
    deleteBogusTagChildren.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   438
    deleteBogusTagChildren.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   439
    cleanupStatements.push(deleteBogusTagChildren);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   440
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   441
    // D.3 remove empty tags
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   442
    let deleteEmptyTags = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   443
      `DELETE FROM moz_bookmarks WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   444
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   445
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   446
         SELECT b.id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   447
         WHERE b.id IN
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   448
           (SELECT id FROM moz_bookmarks WHERE parent = :tags_folder)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   449
           AND NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   450
             (SELECT id from moz_bookmarks WHERE parent = b.id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   451
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   452
    deleteEmptyTags.params["tags_folder"] = PlacesUtils.tagsFolderId;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   453
    deleteEmptyTags.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   454
    deleteEmptyTags.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   455
    deleteEmptyTags.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   456
    deleteEmptyTags.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   457
    deleteEmptyTags.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   458
    cleanupStatements.push(deleteEmptyTags);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   459
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   460
    // D.4 move orphan items to unsorted folder
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   461
    let fixOrphanItems = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   462
      `UPDATE moz_bookmarks SET parent = :unsorted_folder WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   463
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   464
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   465
         SELECT b.id FROM moz_bookmarks b
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   466
         WHERE NOT EXISTS
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   467
           (SELECT id FROM moz_bookmarks WHERE id = b.parent LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   468
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   469
    fixOrphanItems.params["unsorted_folder"] = PlacesUtils.unfiledBookmarksFolderId;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   470
    fixOrphanItems.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   471
    fixOrphanItems.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   472
    fixOrphanItems.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   473
    fixOrphanItems.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   474
    fixOrphanItems.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   475
    cleanupStatements.push(fixOrphanItems);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   476
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   477
    // D.5 fix wrong keywords
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   478
    let fixInvalidKeywords = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   479
      `UPDATE moz_bookmarks SET keyword_id = NULL WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   480
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   481
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   482
         SELECT id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   483
         WHERE keyword_id NOT NULL
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   484
           AND NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   485
             (SELECT id FROM moz_keywords WHERE id = b.keyword_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   486
       )`);
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   487
    fixInvalidKeywords.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   488
    fixInvalidKeywords.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   489
    fixInvalidKeywords.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   490
    fixInvalidKeywords.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   491
    fixInvalidKeywords.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   492
    cleanupStatements.push(fixInvalidKeywords);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   493
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   494
    // D.6 fix wrong item types
80916
457b6bafbf3a237cc1c115ceac6484f2b7b96b0c Bug 700296 (Places) - Remove dynamic containers implementation from Places.
Marco Bonardo <mbonardo@mozilla.com>
parents: 78484
diff changeset
   495
    //     Folders and separators should not have an fk.
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   496
    //     If they have a valid fk convert them to bookmarks. Later in D.9 we
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   497
    //     will move eventual children to unsorted bookmarks.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   498
    let fixBookmarksAsFolders = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   499
      `UPDATE moz_bookmarks SET type = :bookmark_type WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   500
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   501
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   502
         SELECT id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   503
         WHERE type IN (:folder_type, :separator_type)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   504
           AND fk NOTNULL
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   505
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   506
    fixBookmarksAsFolders.params["bookmark_type"] = PlacesUtils.bookmarks.TYPE_BOOKMARK;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   507
    fixBookmarksAsFolders.params["folder_type"] = PlacesUtils.bookmarks.TYPE_FOLDER;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   508
    fixBookmarksAsFolders.params["separator_type"] = PlacesUtils.bookmarks.TYPE_SEPARATOR;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   509
    fixBookmarksAsFolders.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   510
    fixBookmarksAsFolders.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   511
    fixBookmarksAsFolders.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   512
    fixBookmarksAsFolders.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   513
    fixBookmarksAsFolders.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   514
    cleanupStatements.push(fixBookmarksAsFolders);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   515
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   516
    // D.7 fix wrong item types
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   517
    //     Bookmarks should have an fk, if they don't have any, convert them to
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   518
    //     folders.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   519
    let fixFoldersAsBookmarks = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   520
      `UPDATE moz_bookmarks SET type = :folder_type WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   521
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   522
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   523
         SELECT id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   524
         WHERE type = :bookmark_type
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   525
           AND fk IS NULL
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   526
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   527
    fixFoldersAsBookmarks.params["bookmark_type"] = PlacesUtils.bookmarks.TYPE_BOOKMARK;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   528
    fixFoldersAsBookmarks.params["folder_type"] = PlacesUtils.bookmarks.TYPE_FOLDER;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   529
    fixFoldersAsBookmarks.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   530
    fixFoldersAsBookmarks.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   531
    fixFoldersAsBookmarks.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   532
    fixFoldersAsBookmarks.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   533
    fixFoldersAsBookmarks.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   534
    cleanupStatements.push(fixFoldersAsBookmarks);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   535
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   536
    // D.9 fix wrong parents
80916
457b6bafbf3a237cc1c115ceac6484f2b7b96b0c Bug 700296 (Places) - Remove dynamic containers implementation from Places.
Marco Bonardo <mbonardo@mozilla.com>
parents: 78484
diff changeset
   537
    //     Items cannot have separators or other bookmarks
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   538
    //     as parent, if they have bad parent move them to unsorted bookmarks.
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   539
    let fixInvalidParents = DBConn.createAsyncStatement(
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   540
      `UPDATE moz_bookmarks SET parent = :unsorted_folder WHERE guid NOT IN (
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   541
         :rootGuid, :menuGuid, :toolbarGuid, :unfiledGuid, :tagsGuid  /* skip roots */
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   542
       ) AND id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   543
         SELECT id FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   544
         WHERE EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   545
           (SELECT id FROM moz_bookmarks WHERE id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   546
             AND type IN (:bookmark_type, :separator_type)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   547
             LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   548
       )`);
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   549
    fixInvalidParents.params["unsorted_folder"] = PlacesUtils.unfiledBookmarksFolderId;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   550
    fixInvalidParents.params["bookmark_type"] = PlacesUtils.bookmarks.TYPE_BOOKMARK;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   551
    fixInvalidParents.params["separator_type"] = PlacesUtils.bookmarks.TYPE_SEPARATOR;
213975
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   552
    fixInvalidParents.params["rootGuid"] = PlacesUtils.bookmarks.rootGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   553
    fixInvalidParents.params["menuGuid"] = PlacesUtils.bookmarks.menuGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   554
    fixInvalidParents.params["toolbarGuid"] = PlacesUtils.bookmarks.toolbarGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   555
    fixInvalidParents.params["unfiledGuid"] = PlacesUtils.bookmarks.unfiledGuid;
ad5327aa82fdc4d0cf37d5e0e043fe4a9347975b Bug 1071505 - use constant GUIDs for Places roots. r=mano
Marco Bonardo <mbonardo@mozilla.com>
parents: 208459
diff changeset
   556
    fixInvalidParents.params["tagsGuid"] = PlacesUtils.bookmarks.tagsGuid;
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   557
    cleanupStatements.push(fixInvalidParents);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   558
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   559
    // D.10 recalculate positions
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   560
    //      This requires multiple related statements.
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   561
    //      We can detect a folder with bad position values comparing the sum of
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   562
    //      all distinct position values (+1 since position is 0-based) with the
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   563
    //      triangular numbers obtained by the number of children (n).
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   564
    //      SUM(DISTINCT position + 1) == (n * (n + 1) / 2).
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   565
    cleanupStatements.push(DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   566
      `CREATE TEMP TABLE IF NOT EXISTS moz_bm_reindex_temp (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   567
         id INTEGER PRIMARY_KEY
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   568
       , parent INTEGER
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   569
       , position INTEGER
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   570
       )`
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   571
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   572
    cleanupStatements.push(DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   573
      `INSERT INTO moz_bm_reindex_temp
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   574
       SELECT id, parent, 0
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   575
       FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   576
       WHERE parent IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   577
         SELECT parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   578
         FROM moz_bookmarks
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   579
         GROUP BY parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   580
         HAVING (SUM(DISTINCT position + 1) - (count(*) * (count(*) + 1) / 2)) <> 0
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   581
       )
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   582
       ORDER BY parent ASC, position ASC, ROWID ASC`
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   583
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   584
    cleanupStatements.push(DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   585
      `CREATE INDEX IF NOT EXISTS moz_bm_reindex_temp_index
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   586
       ON moz_bm_reindex_temp(parent)`
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   587
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   588
    cleanupStatements.push(DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   589
      `UPDATE moz_bm_reindex_temp SET position = (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   590
         ROWID - (SELECT MIN(t.ROWID) FROM moz_bm_reindex_temp t
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   591
                  WHERE t.parent = moz_bm_reindex_temp.parent)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   592
       )`
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   593
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   594
    cleanupStatements.push(DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   595
      `CREATE TEMP TRIGGER IF NOT EXISTS moz_bm_reindex_temp_trigger
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   596
       BEFORE DELETE ON moz_bm_reindex_temp
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   597
       FOR EACH ROW
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   598
       BEGIN
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   599
         UPDATE moz_bookmarks SET position = OLD.position WHERE id = OLD.id;
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   600
       END`
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   601
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   602
    cleanupStatements.push(DBConn.createAsyncStatement(
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   603
      "DELETE FROM moz_bm_reindex_temp "
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   604
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   605
    cleanupStatements.push(DBConn.createAsyncStatement(
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   606
      "DROP INDEX moz_bm_reindex_temp_index "
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   607
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   608
    cleanupStatements.push(DBConn.createAsyncStatement(
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   609
      "DROP TRIGGER moz_bm_reindex_temp_trigger "
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   610
    ));
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   611
    cleanupStatements.push(DBConn.createAsyncStatement(
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   612
      "DROP TABLE moz_bm_reindex_temp "
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   613
    ));
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   614
55934
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   615
    // D.12 Fix empty-named tags.
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   616
    //      Tags were allowed to have empty names due to a UI bug.  Fix them
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   617
    //      replacing their title with "(notitle)".
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   618
    let fixEmptyNamedTags = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   619
      `UPDATE moz_bookmarks SET title = :empty_title
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   620
       WHERE length(title) = 0 AND type = :folder_type
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   621
         AND parent = :tags_folder`
55934
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   622
    );
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   623
    fixEmptyNamedTags.params["empty_title"] = "(notitle)";
56083
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   624
    fixEmptyNamedTags.params["folder_type"] = PlacesUtils.bookmarks.TYPE_FOLDER;
84abb3a647d9f002167383929b5829cd95c262fc Bug 570387 - PlacesDBUtils should register itself in the idle-daily category. r+a=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 55934
diff changeset
   625
    fixEmptyNamedTags.params["tags_folder"] = PlacesUtils.tagsFolderId;
55934
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   626
    cleanupStatements.push(fixEmptyNamedTags);
4e05764294ec85b60c626140ef56e4433ac0bb53 Bug 458026 (part 2) - Do not allow creation of empty-named tags. r=mano sr=rs a=blocking
Marco Bonardo <mbonardo@mozilla.com>
parents: 49240
diff changeset
   627
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   628
    // MOZ_FAVICONS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   629
    // E.1 remove orphan icons
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   630
    let deleteOrphanIcons = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   631
      `DELETE FROM moz_favicons WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   632
         SELECT id FROM moz_favicons f
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   633
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   634
           (SELECT id FROM moz_places WHERE favicon_id = f.id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   635
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   636
    cleanupStatements.push(deleteOrphanIcons);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   637
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   638
    // MOZ_HISTORYVISITS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   639
    // F.1 remove orphan visits
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   640
    let deleteOrphanVisits = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   641
      `DELETE FROM moz_historyvisits WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   642
         SELECT id FROM moz_historyvisits v
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   643
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   644
           (SELECT id FROM moz_places WHERE id = v.place_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   645
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   646
    cleanupStatements.push(deleteOrphanVisits);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   647
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   648
    // MOZ_INPUTHISTORY
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   649
    // G.1 remove orphan input history
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   650
    let deleteOrphanInputHistory = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   651
      `DELETE FROM moz_inputhistory WHERE place_id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   652
         SELECT place_id FROM moz_inputhistory i
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   653
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   654
           (SELECT id FROM moz_places WHERE id = i.place_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   655
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   656
    cleanupStatements.push(deleteOrphanInputHistory);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   657
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   658
    // MOZ_ITEMS_ANNOS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   659
    // H.1 remove item annos with an invalid attribute
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   660
    let deleteInvalidAttributeItemsAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   661
      `DELETE FROM moz_items_annos WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   662
         SELECT id FROM moz_items_annos t
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   663
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   664
           (SELECT id FROM moz_anno_attributes
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   665
             WHERE id = t.anno_attribute_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   666
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   667
    cleanupStatements.push(deleteInvalidAttributeItemsAnnos);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   668
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   669
    // H.2 remove orphan item annos
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   670
    let deleteOrphanItemsAnnos = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   671
      `DELETE FROM moz_items_annos WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   672
         SELECT id FROM moz_items_annos t
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   673
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   674
           (SELECT id FROM moz_bookmarks WHERE id = t.item_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   675
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   676
    cleanupStatements.push(deleteOrphanItemsAnnos);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   677
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   678
    // MOZ_KEYWORDS
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   679
    // I.1 remove unused keywords
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   680
    let deleteUnusedKeywords = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   681
      `DELETE FROM moz_keywords WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   682
         SELECT id FROM moz_keywords k
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   683
         WHERE NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   684
           (SELECT id FROM moz_bookmarks WHERE keyword_id = k.id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   685
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   686
    cleanupStatements.push(deleteUnusedKeywords);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   687
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   688
    // MOZ_PLACES
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   689
    // L.1 fix wrong favicon ids
62859
51b61720bc3507de21b1408ffd8dfeb15514d3a0 Bug 626341 - Fix bogus bookmarks position values with PlacesDBUtils.
Marco Bonardo <mbonardo@mozilla.com>
parents: 62746
diff changeset
   690
    let fixInvalidFaviconIds = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   691
      `UPDATE moz_places SET favicon_id = NULL WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   692
         SELECT id FROM moz_places h
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   693
         WHERE favicon_id NOT NULL
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   694
           AND NOT EXISTS
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   695
             (SELECT id FROM moz_favicons WHERE id = h.favicon_id LIMIT 1)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   696
       )`);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   697
    cleanupStatements.push(fixInvalidFaviconIds);
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   698
78484
339749acfdbc23bfd3971abbe37e538baf4bdaf7 Bug 692493 - Add maintenance for visit_count and last_visit_date.
Marco Bonardo <mbonardo@mozilla.com>
parents: 78371
diff changeset
   699
    // L.2 recalculate visit_count and last_visit_date
339749acfdbc23bfd3971abbe37e538baf4bdaf7 Bug 692493 - Add maintenance for visit_count and last_visit_date.
Marco Bonardo <mbonardo@mozilla.com>
parents: 78371
diff changeset
   700
    let fixVisitStats = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   701
      `UPDATE moz_places
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   702
       SET visit_count = (SELECT count(*) FROM moz_historyvisits
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   703
                          WHERE place_id = moz_places.id AND visit_type NOT IN (0,4,7,8)),
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   704
           last_visit_date = (SELECT MAX(visit_date) FROM moz_historyvisits
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   705
                              WHERE place_id = moz_places.id)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   706
       WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   707
         SELECT h.id FROM moz_places h
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   708
         WHERE visit_count <> (SELECT count(*) FROM moz_historyvisits v
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   709
                               WHERE v.place_id = h.id AND visit_type NOT IN (0,4,7,8))
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   710
            OR last_visit_date <> (SELECT MAX(visit_date) FROM moz_historyvisits v
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   711
                                   WHERE v.place_id = h.id)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   712
       )`);
78484
339749acfdbc23bfd3971abbe37e538baf4bdaf7 Bug 692493 - Add maintenance for visit_count and last_visit_date.
Marco Bonardo <mbonardo@mozilla.com>
parents: 78371
diff changeset
   713
    cleanupStatements.push(fixVisitStats);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   714
91206
b94616a8d514973c005d75a9692f00f024102725 Bug 737841 - Part 3: remove no more useful redirectsMode query option.
Marco Bonardo <mbonardo@mozilla.com>
parents: 87646
diff changeset
   715
    // L.3 recalculate hidden for redirects.
b94616a8d514973c005d75a9692f00f024102725 Bug 737841 - Part 3: remove no more useful redirectsMode query option.
Marco Bonardo <mbonardo@mozilla.com>
parents: 87646
diff changeset
   716
    let fixRedirectsHidden = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   717
      `UPDATE moz_places
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   718
       SET hidden = 1
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   719
       WHERE id IN (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   720
         SELECT h.id FROM moz_places h
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   721
         JOIN moz_historyvisits src ON src.place_id = h.id
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   722
         JOIN moz_historyvisits dst ON dst.from_visit = src.id AND dst.visit_type IN (5,6)
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   723
         LEFT JOIN moz_bookmarks on fk = h.id AND fk ISNULL
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   724
         GROUP BY src.place_id HAVING count(*) = visit_count
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   725
       )`);
91206
b94616a8d514973c005d75a9692f00f024102725 Bug 737841 - Part 3: remove no more useful redirectsMode query option.
Marco Bonardo <mbonardo@mozilla.com>
parents: 87646
diff changeset
   726
    cleanupStatements.push(fixRedirectsHidden);
b94616a8d514973c005d75a9692f00f024102725 Bug 737841 - Part 3: remove no more useful redirectsMode query option.
Marco Bonardo <mbonardo@mozilla.com>
parents: 87646
diff changeset
   727
197326
a8708a05018ea6e3a654810ce3add88a5435cd08 Bug 1017502 - Add a foreign_count column to moz_places r=mak
Althaf Hameez <althaf.mozilla@gmail.com>
parents: 193129
diff changeset
   728
    // L.4 recalculate foreign_count.
a8708a05018ea6e3a654810ce3add88a5435cd08 Bug 1017502 - Add a foreign_count column to moz_places r=mak
Althaf Hameez <althaf.mozilla@gmail.com>
parents: 193129
diff changeset
   729
    let fixForeignCount = DBConn.createAsyncStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   730
      `UPDATE moz_places SET foreign_count =
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   731
       (SELECT count(*) FROM moz_bookmarks WHERE fk = moz_places.id )`);
197326
a8708a05018ea6e3a654810ce3add88a5435cd08 Bug 1017502 - Add a foreign_count column to moz_places r=mak
Althaf Hameez <althaf.mozilla@gmail.com>
parents: 193129
diff changeset
   732
    cleanupStatements.push(fixForeignCount);
a8708a05018ea6e3a654810ce3add88a5435cd08 Bug 1017502 - Add a foreign_count column to moz_places r=mak
Althaf Hameez <althaf.mozilla@gmail.com>
parents: 193129
diff changeset
   733
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   734
    // MAINTENANCE STATEMENTS SHOULD GO ABOVE THIS POINT!
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   735
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   736
    return cleanupStatements;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   737
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   738
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   739
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   740
   * Tries to vacuum the database.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   741
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   742
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   743
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   744
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   745
  vacuum: function PDBU_vacuum(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   746
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   747
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   748
    tasks.log("> Vacuum");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   749
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   750
    let DBFile = Services.dirsvc.get("ProfD", Ci.nsILocalFile);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   751
    DBFile.append("places.sqlite");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   752
    tasks.log("Initial database size is " +
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   753
              parseInt(DBFile.fileSize / 1024) + " KiB");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   754
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   755
    let stmt = DBConn.createAsyncStatement("VACUUM");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   756
    stmt.executeAsync({
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   757
      handleError: PlacesDBUtils._handleError,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   758
      handleResult: function () {},
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   759
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   760
      handleCompletion: function (aReason)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   761
      {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   762
        if (aReason == Ci.mozIStorageStatementCallback.REASON_FINISHED) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   763
          tasks.log("+ The database has been vacuumed");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   764
          let vacuumedDBFile = Services.dirsvc.get("ProfD", Ci.nsILocalFile);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   765
          vacuumedDBFile.append("places.sqlite");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   766
          tasks.log("Final database size is " +
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   767
                    parseInt(vacuumedDBFile.fileSize / 1024) + " KiB");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   768
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   769
        else {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   770
          tasks.log("- Unable to vacuum database");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   771
          tasks.clear();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   772
        }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   773
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   774
        PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   775
      }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   776
    });
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   777
    stmt.finalize();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   778
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   779
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   780
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   781
   * Forces a full expiration on the database.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   782
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   783
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   784
   *        Tasks object to execute.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   785
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   786
  expire: function PDBU_expire(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   787
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   788
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   789
    tasks.log("> Orphans expiration");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   790
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   791
    let expiration = Cc["@mozilla.org/places/expiration;1"].
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   792
                     getService(Ci.nsIObserver);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   793
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   794
    Services.obs.addObserver(function (aSubject, aTopic, aData) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   795
      Services.obs.removeObserver(arguments.callee, aTopic);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   796
      tasks.log("+ Database cleaned up");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   797
      PlacesDBUtils._executeTasks(tasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   798
    }, PlacesUtils.TOPIC_EXPIRATION_FINISHED, false);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   799
71263
ea9b8e556091fde2146e95f3c23f556d6b12a2c6 Bug 663344 - Maintenance may cause history loss.
Marco Bonardo <mbonardo@mozilla.com>
parents: 67882
diff changeset
   800
    // Force an orphans expiration step.
ea9b8e556091fde2146e95f3c23f556d6b12a2c6 Bug 663344 - Maintenance may cause history loss.
Marco Bonardo <mbonardo@mozilla.com>
parents: 67882
diff changeset
   801
    expiration.observe(null, "places-debug-start-expiration", 0);
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
   802
  },
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   803
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   804
  /**
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   805
   * Collects statistical data on the database.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   806
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   807
   * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   808
   *        Tasks object to execute.
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   809
   */
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   810
  stats: function PDBU_stats(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   811
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   812
    let tasks = new Tasks(aTasks);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   813
    tasks.log("> Statistics");
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   814
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   815
    let DBFile = Services.dirsvc.get("ProfD", Ci.nsILocalFile);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   816
    DBFile.append("places.sqlite");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   817
    tasks.log("Database size is " + parseInt(DBFile.fileSize / 1024) + " KiB");
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   818
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   819
    [ "user_version"
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   820
    , "page_size"
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   821
    , "cache_size"
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   822
    , "journal_mode"
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   823
    , "synchronous"
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   824
    ].forEach(function (aPragma) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   825
      let stmt = DBConn.createStatement("PRAGMA " + aPragma);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   826
      stmt.executeStep();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   827
      tasks.log(aPragma + " is " + stmt.getString(0));
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   828
      stmt.finalize();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   829
    });
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   830
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   831
    // Get maximum number of unique URIs.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   832
    try {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   833
      let limitURIs = Services.prefs.getIntPref(
37236
2bdf21a8a3d6882ac98218cea2ac918ce0bf5a1e Bug 520165 - Part14: Add a maintenance task to print pages limit and run expiration, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 33460
diff changeset
   834
        "places.history.expiration.transient_current_max_pages");
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   835
      tasks.log("History can store a maximum of " + limitURIs + " unique pages");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   836
    } catch(ex) {}
37236
2bdf21a8a3d6882ac98218cea2ac918ce0bf5a1e Bug 520165 - Part14: Add a maintenance task to print pages limit and run expiration, r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 33460
diff changeset
   837
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   838
    let stmt = DBConn.createStatement(
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   839
      "SELECT name FROM sqlite_master WHERE type = :type");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   840
    stmt.params.type = "table";
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   841
    while (stmt.executeStep()) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   842
      let tableName = stmt.getString(0);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   843
      let countStmt = DBConn.createStatement(
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   844
        `SELECT count(*) FROM ${tableName}`);
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   845
      countStmt.executeStep();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   846
      tasks.log("Table " + tableName + " has " + countStmt.getInt32(0) + " records");
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   847
      countStmt.finalize();
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   848
    }
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   849
    stmt.reset();
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   850
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   851
    stmt.params.type = "index";
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   852
    while (stmt.executeStep()) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   853
      tasks.log("Index " + stmt.getString(0));
33460
77e5bfb0ef739effa5fc9d215677cd6309f32f8e Bug 516932 - Add an advanced maintenance task to vacuum and check integrity, for support purposes r=dietrich
Marco Bonardo <mbonardo@mozilla.com>
parents: 32217
diff changeset
   854
    }
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   855
    stmt.reset();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   856
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   857
    stmt.params.type = "trigger";
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   858
    while (stmt.executeStep()) {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   859
      tasks.log("Trigger " + stmt.getString(0));
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   860
    }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   861
    stmt.finalize();
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   862
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
   863
    PlacesDBUtils._executeTasks(tasks);
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   864
  },
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   865
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   866
  /**
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   867
   * Collects telemetry data.
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   868
   *
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   869
   * There are essentially two modes of collection and the mode is
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   870
   * determined by the presence of aHealthReportCallback. If
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   871
   * aHealthReportCallback is not defined (the default) then we are in
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   872
   * "Telemetry" mode. Results will be reported to Telemetry. If we are
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   873
   * in "Health Report" mode only the probes with a true healthreport
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   874
   * flag will be collected and the results will be reported to the
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   875
   * aHealthReportCallback.
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   876
   *
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   877
   * @param [optional] aTasks
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   878
   *        Tasks object to execute.
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   879
   * @param [optional] aHealthReportCallback
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   880
   *        Function to receive data relevant for Firefox Health Report.
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   881
   */
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   882
  telemetry: function PDBU_telemetry(aTasks, aHealthReportCallback=null)
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   883
  {
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   884
    let tasks = new Tasks(aTasks);
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   885
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   886
    let isTelemetry = !aHealthReportCallback;
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   887
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   888
    // This will be populated with one integer property for each probe result,
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   889
    // using the histogram name as key.
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   890
    let probeValues = {};
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   891
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   892
    // The following array contains an ordered list of entries that are
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   893
    // processed to collect telemetry data.  Each entry has these properties:
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   894
    //
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   895
    //  histogram: Name of the telemetry histogram to update.
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   896
    //  query:     This is optional.  If present, contains a database command
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   897
    //             that will be executed asynchronously, and whose result will
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   898
    //             be added to the telemetry histogram.
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   899
    //  callback:  This is optional.  If present, contains a function that must
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   900
    //             return the value that will be added to the telemetry
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   901
    //             histogram. If a query is also present, its result is passed
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   902
    //             as the first argument of the function.  If the function
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   903
    //             raises an exception, no data is added to the histogram.
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   904
    //  healthreport: Boolean indicating whether this probe is relevant
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   905
    //                to Firefox Health Report.
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   906
    //
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   907
    // Since all queries are executed in order by the database backend, the
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   908
    // callbacks can also use the result of previous queries stored in the
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   909
    // probeValues object.
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   910
    let probes = [
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   911
      { histogram: "PLACES_PAGES_COUNT",
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   912
        healthreport: true,
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   913
        query:     "SELECT count(*) FROM moz_places" },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   914
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   915
      { histogram: "PLACES_BOOKMARKS_COUNT",
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
   916
        healthreport: true,
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   917
        query:     `SELECT count(*) FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   918
                    JOIN moz_bookmarks t ON t.id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   919
                    AND t.parent <> :tags_folder
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   920
                    WHERE b.type = :type_bookmark` },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   921
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   922
      { histogram: "PLACES_TAGS_COUNT",
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   923
        query:     `SELECT count(*) FROM moz_bookmarks
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   924
                    WHERE parent = :tags_folder` },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   925
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   926
      { histogram: "PLACES_KEYWORDS_COUNT",
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   927
        query:     "SELECT count(*) FROM moz_keywords" },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   928
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   929
      { histogram: "PLACES_SORTED_BOOKMARKS_PERC",
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   930
        query:     `SELECT IFNULL(ROUND((
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   931
                      SELECT count(*) FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   932
                      JOIN moz_bookmarks t ON t.id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   933
                      AND t.parent <> :tags_folder AND t.parent > :places_root
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   934
                      WHERE b.type  = :type_bookmark
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   935
                      ) * 100 / (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   936
                      SELECT count(*) FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   937
                      JOIN moz_bookmarks t ON t.id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   938
                      AND t.parent <> :tags_folder
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   939
                      WHERE b.type = :type_bookmark
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   940
                    )), 0)` },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   941
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   942
      { histogram: "PLACES_TAGGED_BOOKMARKS_PERC",
201791
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   943
        query:     `SELECT IFNULL(ROUND((
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   944
                      SELECT count(*) FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   945
                      JOIN moz_bookmarks t ON t.id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   946
                      AND t.parent = :tags_folder
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   947
                      ) * 100 / (
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   948
                      SELECT count(*) FROM moz_bookmarks b
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   949
                      JOIN moz_bookmarks t ON t.id = b.parent
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   950
                      AND t.parent <> :tags_folder
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   951
                      WHERE b.type = :type_bookmark
2f31abffddbbcce74e47eaed604dfa5f88239338 Bug 1057782 - Use template strings for multi-line SQL statements. r=ttaubert
Michael Pruett <michael@68k.org>
parents: 197326
diff changeset
   952
                    )), 0)` },
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   953
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   954
      { histogram: "PLACES_DATABASE_FILESIZE_MB",
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   955
        callback: function () {
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   956
          let DBFile = Services.dirsvc.get("ProfD", Ci.nsILocalFile);
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   957
          DBFile.append("places.sqlite");
78371
b16c81fc5e94fa7ac444a4e105d54f51fe292f30 Bug 689142 - Places telemetry gets lost, due to being collected on idle-daily.
Marco Bonardo <mbonardo@mozilla.com>
parents: 76195
diff changeset
   958
          return parseInt(DBFile.fileSize / BYTES_PER_MEBIBYTE);
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   959
        }
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   960
      },
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   961
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   962
      { histogram: "PLACES_DATABASE_PAGESIZE_B",
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   963
        query:     "PRAGMA page_size /* PlacesDBUtils.jsm PAGESIZE_B */" },
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   964
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   965
      { histogram: "PLACES_DATABASE_SIZE_PER_PAGE_B",
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   966
        query:     "PRAGMA page_count",
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   967
        callback: function (aDbPageCount) {
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   968
          // Note that the database file size would not be meaningful for this
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   969
          // calculation, because the file grows in fixed-size chunks.
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   970
          let dbPageSize = probeValues.PLACES_DATABASE_PAGESIZE_B;
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   971
          let placesPageCount = probeValues.PLACES_PAGES_COUNT;
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   972
          return Math.round((dbPageSize * aDbPageCount) / placesPageCount);
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   973
        }
86339
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   974
      },
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   975
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   976
      { histogram: "PLACES_ANNOS_BOOKMARKS_COUNT",
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   977
        query:     "SELECT count(*) FROM moz_items_annos" },
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   978
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   979
      { histogram: "PLACES_ANNOS_PAGES_COUNT",
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   980
        query:     "SELECT count(*) FROM moz_annos" },
7cdf565448694b50d226646e61b4654066aa03bf Bug 723925 - Telemetry for number and size of annotations.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86337
diff changeset
   981
208030
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   982
      { histogram: "PLACES_MAINTENANCE_DAYSFROMLAST",
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   983
        callback: function () {
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   984
          try {
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   985
            let lastMaintenance = Services.prefs.getIntPref("places.database.lastMaintenance");
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   986
            let nowSeconds = parseInt(Date.now() / 1000);
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   987
            return parseInt((nowSeconds - lastMaintenance) / 86400);
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   988
          } catch (ex) {
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   989
            return 60;
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   990
          }
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   991
        }
9687a6f92e7d054dfcbf5dfe3f1013867c3a4ae8 Bug 1065285 - Add telemetry for the last maintenance time. r=mak
Manu Jain <manu.jain13@gmail.com>
parents: 201791
diff changeset
   992
      },
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
   993
    ];
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   994
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   995
    let params = {
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   996
      tags_folder: PlacesUtils.tagsFolderId,
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   997
      type_folder: PlacesUtils.bookmarks.TYPE_FOLDER,
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   998
      type_bookmark: PlacesUtils.bookmarks.TYPE_BOOKMARK,
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
   999
      places_root: PlacesUtils.placesRootId
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1000
    };
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1001
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1002
    let outstandingProbes = [];
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1003
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
  1004
    for (let i = 0; i < probes.length; i++) {
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
  1005
      let probe = probes[i];
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1006
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1007
      if (!isTelemetry && !probe.healthreport) {
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1008
        continue;
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1009
      }
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1010
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1011
      let promiseDone = new Promise((resolve, reject) => {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1012
        if (!("query" in probe)) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1013
          resolve([probe]);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1014
          return;
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1015
        }
120934
4654abd41ddf4fa5198f6f393fdf23c0a577df34 Bug 828546 - Part 1: Support Health Report mode when gathering Places Telemetry; r=mak
Gregory Szorc <gps@mozilla.com>
parents: 111947
diff changeset
  1016
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1017
        let stmt = DBConn.createAsyncStatement(probe.query);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1018
        for (let param in params) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1019
          if (probe.query.indexOf(":" + param) > 0) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1020
            stmt.params[param] = params[param];
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1021
          }
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1022
        }
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
  1023
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1024
        try {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1025
          stmt.executeAsync({
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1026
            handleError: reject,
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1027
            handleResult: function (aResultSet) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1028
              let row = aResultSet.getNextRow();
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1029
              resolve([probe, row.getResultByIndex(0)]);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1030
            },
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1031
            handleCompletion: function () {}
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1032
          });
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1033
        } finally{
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1034
          stmt.finalize();
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1035
        }
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1036
      });
86059
2aaa19ec8815c1599312e5c37a3723af81bd560b Bug 722242 - Avoid thread contention on idle maintenance. r=mak
Paolo Amadini <paolo.mozmail@amadzone.org>
parents: 85528
diff changeset
  1037
193129
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1038
      // Report the result of the probe through Telemetry.
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1039
      // The resulting promise cannot reject.
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1040
      promiseDone = promiseDone.then(
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1041
        // On success
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1042
        ([aProbe, aValue]) => {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1043
          let value = aValue;
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1044
          try {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1045
            if ("callback" in aProbe) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1046
              value = aProbe.callback(value);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1047
            }
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1048
            probeValues[aProbe.histogram] = value;
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1049
            Services.telemetry.getHistogramById(aProbe.histogram).add(value);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1050
          } catch (ex) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1051
            Components.utils.reportError("Error adding value " + value +
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1052
                                         " to histogram " + aProbe.histogram +
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1053
                                         ": " + ex);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1054
          }
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1055
        },
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1056
        // On failure
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1057
        this._handleError);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1058
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1059
      outstandingProbes.push(promiseDone);
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1060
    }
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1061
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1062
    if (aHealthReportCallback) {
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1063
      Promise.all(outstandingProbes).then(() =>
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1064
        aHealthReportCallback(probeValues)
2a980866313faa3c3f3a87daccab632e439b7ce7 Bug 1030266 - Ensuring that PlacesDBUtils.telemetry calls its callbacks even in case of error. r=mak
David Rajchenbach-Teller <dteller@mozilla.com>
parents: 190623
diff changeset
  1065
      );
73637
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1066
    }
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1067
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1068
    PlacesDBUtils._executeTasks(tasks);
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1069
  },
638c7c0953da38c9ef5532efc8a50449da95b356 Bug 671001 - Use telemetry to collect common Places stats.
Marco Bonardo <mbonardo@mozilla.com>
parents: 71263
diff changeset
  1070
86337
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1071
  /**
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1072
   * Runs a list of tasks, notifying log messages to the callback.
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1073
   *
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1074
   * @param aTasks
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1075
   *        Array of tasks to be executed, in form of pointers to methods in
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1076
   *        this module.
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1077
   * @param [optional] aCallback
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1078
   *        Callback to be invoked when done.  It will receive an array of
106894
7530e96d9af635c68430a1d1cd97f67f74efaa0d Bug 751813 - Stop spewing to the console about Places Maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 94475
diff changeset
  1079
   *        log messages.
86337
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1080
   */
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1081
  runTasks: function PDBU_runTasks(aTasks, aCallback) {
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1082
    let tasks = new Tasks(aTasks);
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1083
    tasks.callback = aCallback;
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1084
    PlacesDBUtils._executeTasks(tasks);
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1085
  }
22552
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
  1086
};
5f7a0e667bc4bc8c570ade67bd04c873bb40c9de Bug 431558 - implement preventive maintenance for places.sqlite, r=dietrich
Marco Bonardo <mak77@bonardo.net>
parents:
diff changeset
  1087
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1088
/**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1089
 * LIFO tasks stack.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1090
 *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1091
 * @param [optional] aTasks
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1092
 *        Array of tasks or another Tasks object to clone.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1093
 */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1094
function Tasks(aTasks)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1095
{
67882
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1096
  if (aTasks) {
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1097
    if (Array.isArray(aTasks)) {
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1098
      this._list = aTasks.slice(0, aTasks.length);
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1099
    }
86337
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1100
    // This supports passing in a Tasks-like object, with a "list" property,
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1101
    // for compatibility reasons.
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1102
    else if (typeof(aTasks) == "object" &&
9422dadbfc7b262b204b49c1a9d0747be3e9738d Bug 724805 - Bug 723126 broke PlacesDBUtils add-ons compatibility.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86187
diff changeset
  1103
             (Tasks instanceof Tasks || "list" in aTasks)) {
67882
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1104
      this._list = aTasks.list;
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1105
      this._log = aTasks.messages;
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1106
      this.callback = aTasks.callback;
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1107
      this.scope = aTasks.scope;
86187
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
  1108
      this._telemetryStart = aTasks._telemetryStart;
67882
598855101f1258c76db07a7bef823c416d44f588 Bug 649211 - PlacesDBUtils console output is broken. r=sdwilsh
Marco Bonardo <mbonardo@mozilla.com>
parents: 63497
diff changeset
  1109
    }
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1110
  }
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1111
}
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1112
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1113
Tasks.prototype = {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1114
  _list: [],
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1115
  _log: [],
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1116
  callback: null,
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1117
  scope: null,
86187
a31efbfbba7bbcff4b06884c68d5b00193e12da3 Bug 723126 - Telemetry for time needed for idle maintenance.
Marco Bonardo <mbonardo@mozilla.com>
parents: 86059
diff changeset
  1118
  _telemetryStart: 0,
60945
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1119
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1120
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1121
   * Adds a task to the top of the list.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1122
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1123
   * @param aNewElt
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1124
   *        Task to be added.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1125
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1126
  push: function T_push(aNewElt)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1127
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1128
    this._list.unshift(aNewElt);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1129
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1130
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1131
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1132
   * Returns and consumes next task.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1133
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1134
   * @return next task or undefined if no task is left.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1135
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1136
  pop: function T_pop() this._list.shift(),
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1137
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1138
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1139
   * Removes all tasks.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1140
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1141
  clear: function T_clear()
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1142
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1143
    this._list.length = 0;
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1144
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1145
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1146
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1147
   * Returns array of tasks ordered from the next to be run to the latest.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1148
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1149
  get list() this._list.slice(0, this._list.length),
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1150
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1151
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1152
   * Adds a message to the log.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1153
   *
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1154
   * @param aMsg
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1155
   *        String message to be added.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1156
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1157
  log: function T_log(aMsg)
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1158
  {
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1159
    this._log.push(aMsg);
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1160
  },
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1161
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1162
  /**
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1163
   * Returns array of log messages ordered from oldest to newest.
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1164
   */
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1165
  get messages() this._log.slice(0, this._log.length),
3483b2d3112c0d51b44c1719c9731ca2342d63d5 Bug 609286 (Part 1) - Detect corrupt places.sqlite and replace it on next startup.
Marco Bonardo <mbonardo@mozilla.com>
parents: 59374
diff changeset
  1166
}