Skip to content

Commit

Permalink
Added 4.0 feature: new column in TCBS.
Browse files Browse the repository at this point in the history
  • Loading branch information
jberkus committed Mar 23, 2012
1 parent 2e30da4 commit 5aca303
Show file tree
Hide file tree
Showing 4 changed files with 116 additions and 0 deletions.
12 changes: 12 additions & 0 deletions sql/upgrade/4.0/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
4.0 Database Updates
====================

This batch makes the following database changes:

bug 738323
add column for startup crash count to TCBS

...

The above changes should take only a few minutes to deploy.
This upgrade does not require a downtime.
4 changes: 4 additions & 0 deletions sql/upgrade/4.0/add_startup_crashes_col.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
\set ON_ERROR_STOP 1

alter table tcbs add column startup_count int;

76 changes: 76 additions & 0 deletions sql/upgrade/4.0/update_tcbs.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
\set ON_ERROR_STOP 1

create or replace function update_tcbs (
updateday date, checkdata boolean default true )
RETURNS BOOLEAN
LANGUAGE plpgsql
SET work_mem = '512MB'
SET temp_buffers = '512MB'
AS $f$
BEGIN
-- this procedure goes throught the daily TCBS update for the
-- new TCBS table
-- designed to be run only once for each day
-- this new version depends on reports_clean

-- check that it hasn't already been run

IF checkdata THEN
PERFORM 1 FROM tcbs
WHERE report_date = updateday LIMIT 1;
IF FOUND THEN
RAISE EXCEPTION 'TCBS has already been run for the day %.',updateday;
END IF;
END IF;

-- check if reports_clean is complete
IF NOT reports_clean_done(updateday) THEN
IF checkdata THEN
RAISE EXCEPTION 'Reports_clean has not been updated to the end of %',updateday;
ELSE
RETURN TRUE;
END IF;
END IF;

-- populate the matview

INSERT INTO tcbs (
signature_id, report_date, product_version_id,
process_type, release_channel,
report_count, win_count, mac_count, lin_count, hang_count,
startup_count
)
SELECT signature_id, updateday, product_version_id,
process_type, release_channel,
count(*),
sum(case when os_name = 'Windows' THEN 1 else 0 END),
sum(case when os_name = 'Mac OS X' THEN 1 else 0 END),
sum(case when os_name = 'Linux' THEN 1 else 0 END),
count(hang_id),
sum(case when uptime < INTERVAL '1 minute' THEN 1 else 0 END)
FROM reports_clean
JOIN product_versions USING (product_version_id)
WHERE utc_day_is(date_processed, updateday)
AND tstz_between(date_processed, build_date, sunset_date)
GROUP BY signature_id, updateday, product_version_id,
process_type, release_channel;

ANALYZE tcbs;

-- tcbs_ranking removed until it's being used

-- done
RETURN TRUE;
END;
$f$;











24 changes: 24 additions & 0 deletions sql/upgrade/4.0/upgrade.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash
#please see README

set -e

CURDIR=$(dirname $0)
VERSION=4.0

#echo '*********************************************************'
#echo 'support functions'
#psql -f ${CURDIR}/support_functions.sql breakpad

echo '*********************************************************'
echo 'add startup crash count to TCBS'
echo 'bug 738323'
psql -f ${CURDIR}/add_startup_crashes_col.sql breakpad
psql -f ${CURDIR}/update_tcbs.sql breakpad

#change version in DB
psql -c "SELECT update_socorro_db_version( '$VERSION' )" breakpad

echo "$VERSION upgrade done"

exit 0

0 comments on commit 5aca303

Please sign in to comment.