code: function massageSQLResult(sql, insertId, rowsAffected, rows) {
    if (/^\s*UPDATE\b/i.test(sql)) {
      // insertId is always undefined for "UPDATE" statements
      insertId = void 0;
    } else if (/^\s*CREATE\s+TABLE\b/i.test(sql)) {
      // WebSQL always returns an insertId of 0 for "CREATE TABLE" statements
      insertId = 0;
      rowsAffected = 0;
    } else if (/^\s*DROP\s+TABLE\b/i.test(sql)) {
      // WebSQL always returns insertId=undefined and rowsAffected=0
      // for "DROP TABLE" statements. Go figure.
      insertId = void 0;
      rowsAffected = 0;
    } else if (!/^\s*INSERT\b/i.test(sql)) {
      // for all non-inserts (deletes, etc.) insertId is always undefined
      // ¯\_(ツ)_/¯
      insertId = void 0;
    }
    return new WebSQLResultSet(insertId, rowsAffected, rows);
  }
docs: WebSQL has some bizarre behavior regarding insertId/rowsAffected. To try to match the observed behavior of Chrome/Safari as much as possible, we sniff the SQL message to try to massage the returned insertId/rowsAffected. This helps us pass the tests, although it's error-prone and should probably be revised.