diff --git a/sql/schema.sql b/sql/schema.sql index 939e661631..82cb6a6fc9 100644 --- a/sql/schema.sql +++ b/sql/schema.sql @@ -2645,11 +2645,11 @@ WHERE "date" = updateday LIMIT 1; IF NOT FOUND THEN - IF checkdata THEN - RAISE EXCEPTION 'raw_adu not updated for %',updateday; - ELSE - RETURN FALSE; - END IF; + IF checkdata THEN + RAISE EXCEPTION 'raw_adu not updated for %',updateday; + ELSE + RETURN FALSE; + END IF; END IF; -- check if ADU has already been run for the date @@ -2657,7 +2657,7 @@ PERFORM 1 FROM product_adu WHERE adu_date = updateday LIMIT 1; IF FOUND THEN IF checkdata THEN - RAISE NOTICE 'update_adu has already been run for %', updateday; + RAISE NOTICE 'update_adu has already been run for %', updateday; END IF; RETURN FALSE; END IF; @@ -2667,96 +2667,99 @@ END IF; -- and that we need to strip the {} out of the guids INSERT INTO product_adu ( product_version_id, os_name, - adu_date, adu_count ) -SELECT product_version_id, coalesce(os_name,'Unknown') as os, - updateday, - coalesce(sum(adu_count), 0) + adu_date, adu_count ) +SELECT product_version_id + , coalesce(os_name,'Unknown') as os + , updateday + , coalesce(sum(adu_count), 0) FROM product_versions - LEFT OUTER JOIN ( - SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext - as product_name, raw_adu.product_version::citext as product_version, - raw_adu.build_channel::citext as build_channel, - raw_adu.adu_count, - os_name_matches.os_name - FROM raw_adu - LEFT OUTER JOIN product_productid_map as prodmap - ON raw_adu.product_guid = btrim(prodmap.productid, '{}') - LEFT OUTER JOIN os_name_matches - ON raw_adu.product_os_platform ILIKE os_name_matches.match_string - WHERE raw_adu.date = updateday - ) as prod_adu - ON product_versions.product_name = prod_adu.product_name - AND product_versions.version_string = prod_adu.product_version - AND product_versions.build_type = prod_adu.build_channel -WHERE updateday BETWEEN build_date AND ( sunset_date + 1 ) - AND product_versions.build_type IN ('release','nightly','aurora') + LEFT OUTER JOIN ( + SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext + as product_name, raw_adu.product_version::citext as product_version, + raw_adu.build_channel::citext as build_channel, + raw_adu.adu_count, + os_name_matches.os_name + FROM raw_adu + LEFT OUTER JOIN product_productid_map as prodmap + ON raw_adu.product_guid = btrim(prodmap.productid, '{}') + LEFT OUTER JOIN os_name_matches + ON raw_adu.product_os_platform ILIKE os_name_matches.match_string + WHERE raw_adu.date = updateday + ) as prod_adu + ON product_versions.product_name = prod_adu.product_name + AND product_versions.version_string = prod_adu.product_version + AND product_versions.build_type = prod_adu.build_channel +WHERE product_versions.build_type IN ('release','nightly','aurora') + AND product_versions.build_date >= ( current_date - interval '2 years' ) GROUP BY product_version_id, os; -- insert ESRs -- need a separate query here because the ESR version number doesn't match INSERT INTO product_adu ( product_version_id, os_name, - adu_date, adu_count ) -SELECT product_version_id, coalesce(os_name,'Unknown') as os, - updateday, - coalesce(sum(adu_count), 0) + adu_date, adu_count ) +SELECT product_version_id + , coalesce(os_name,'Unknown') as os + , updateday + , coalesce(sum(adu_count), 0) FROM product_versions - LEFT OUTER JOIN ( - SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext - as product_name, raw_adu.product_version::citext as product_version, - raw_adu.build_channel::citext as build_channel, - raw_adu.adu_count, - os_name_matches.os_name - FROM raw_adu - LEFT OUTER JOIN product_productid_map as prodmap - ON raw_adu.product_guid = btrim(prodmap.productid, '{}') - LEFT OUTER JOIN os_name_matches - ON raw_adu.product_os_platform ILIKE os_name_matches.match_string - WHERE raw_adu.date = updateday - and raw_adu.build_channel ILIKE 'esr' - ) as prod_adu - ON product_versions.product_name = prod_adu.product_name - AND product_versions.version_string - = ( prod_adu.product_version || 'esr' ) - AND product_versions.build_type = prod_adu.build_channel -WHERE updateday BETWEEN build_date AND ( sunset_date + 1 ) - AND product_versions.build_type = 'ESR' + LEFT OUTER JOIN ( + SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext + as product_name, raw_adu.product_version::citext as product_version, + raw_adu.build_channel::citext as build_channel, + raw_adu.adu_count, + os_name_matches.os_name + FROM raw_adu + LEFT OUTER JOIN product_productid_map as prodmap + ON raw_adu.product_guid = btrim(prodmap.productid, '{}') + LEFT OUTER JOIN os_name_matches + ON raw_adu.product_os_platform ILIKE os_name_matches.match_string + WHERE raw_adu.date = updateday + and raw_adu.build_channel = 'esr' + ) as prod_adu + ON product_versions.product_name = prod_adu.product_name + AND product_versions.version_string + = ( prod_adu.product_version || 'esr' ) + AND product_versions.build_type = prod_adu.build_channel +WHERE product_versions.build_type = 'ESR' + AND product_versions.build_date >= ( current_date - interval '2 years' ) GROUP BY product_version_id, os; -- insert betas INSERT INTO product_adu ( product_version_id, os_name, - adu_date, adu_count ) -SELECT product_version_id, coalesce(os_name,'Unknown') as os, - updateday, - coalesce(sum(adu_count), 0) + adu_date, adu_count ) +SELECT product_version_id + , coalesce(os_name,'Unknown') as os + , updateday + , coalesce(sum(adu_count), 0) FROM product_versions JOIN products USING ( product_name ) - LEFT OUTER JOIN ( - SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext - as product_name, raw_adu.product_version::citext as product_version, - raw_adu.build_channel::citext as build_channel, - raw_adu.adu_count, - os_name_matches.os_name, - build_numeric(raw_adu.build) as build_id - FROM raw_adu - LEFT OUTER JOIN product_productid_map as prodmap - ON raw_adu.product_guid = btrim(prodmap.productid, '{}') - LEFT OUTER JOIN os_name_matches - ON raw_adu.product_os_platform ILIKE os_name_matches.match_string - WHERE raw_adu.date = updateday - AND raw_adu.build_channel = 'beta' - ) as prod_adu - ON product_versions.product_name = prod_adu.product_name - AND product_versions.release_version = prod_adu.product_version - AND product_versions.build_type = prod_adu.build_channel -WHERE updateday BETWEEN build_date AND ( sunset_date + 1 ) - AND product_versions.build_type = 'Beta' + LEFT OUTER JOIN ( + SELECT COALESCE(prodmap.product_name, raw_adu.product_name)::citext + as product_name, raw_adu.product_version::citext as product_version, + raw_adu.build_channel::citext as build_channel, + raw_adu.adu_count, + os_name_matches.os_name, + build_numeric(raw_adu.build) as build_id + FROM raw_adu + LEFT OUTER JOIN product_productid_map as prodmap + ON raw_adu.product_guid = btrim(prodmap.productid, '{}') + LEFT OUTER JOIN os_name_matches + ON raw_adu.product_os_platform ILIKE os_name_matches.match_string + WHERE raw_adu.date = updateday + AND raw_adu.build_channel = 'beta' + ) as prod_adu + ON product_versions.product_name = prod_adu.product_name + AND product_versions.release_version = prod_adu.product_version + AND product_versions.build_type = prod_adu.build_channel +WHERE product_versions.build_type = 'Beta' AND EXISTS ( SELECT 1 FROM product_version_builds WHERE product_versions.product_version_id = product_version_builds.product_version_id AND product_version_builds.build_id = prod_adu.build_id ) + AND product_versions.build_date >= ( current_date - interval '2 years' ) GROUP BY product_version_id, os; @@ -3037,27 +3040,28 @@ INSERT INTO crashes_by_user ( product_version_id, report_date, report_count, adu, os_short_name, crash_type_id ) -SELECT product_version_id, updateday, - coalesce(report_count,0), coalesce(adu_sum, 0), - os_short_name, crash_type_id +SELECT product_version_id + , updateday + , coalesce(report_count,0) + , coalesce(adu_sum, 0) + , os_short_name + , crash_type_id FROM ( select product_versions.product_version_id, count(reports_clean.uuid) as report_count, os_names.os_name, os_short_name, crash_type_id FROM product_versions - CROSS JOIN crash_types - CROSS JOIN os_names - LEFT OUTER JOIN reports_clean ON - product_versions.product_version_id = reports_clean.product_version_id - and utc_day_is(date_processed, updateday) - AND reports_clean.process_type = crash_types.process_type - AND ( reports_clean.hang_id IS NOT NULL ) = crash_types.has_hang_id - AND reports_clean.os_name = os_names.os_name - WHERE - -- only keep accumulating data for a year - build_date >= ( current_date - interval '1 year' ) + CROSS JOIN crash_types + CROSS JOIN os_names + LEFT OUTER JOIN reports_clean ON + product_versions.product_version_id = reports_clean.product_version_id + and utc_day_is(date_processed, updateday) + AND reports_clean.process_type = crash_types.process_type + AND ( reports_clean.hang_id IS NOT NULL ) = crash_types.has_hang_id + AND reports_clean.os_name = os_names.os_name + WHERE product_versions.build_date >= ( current_date - interval '2 years' ) GROUP BY product_versions.product_version_id, - os_names.os_name, os_short_name, crash_type_id - ) as count_reports + os_names.os_name, os_short_name, crash_type_id + ) as count_reports JOIN ( select product_version_id, sum(adu_count) as adu_sum, @@ -3073,13 +3077,16 @@ INSERT INTO crashes_by_user ( product_version_id, report_date, report_count, adu, os_short_name, crash_type_id ) -SELECT product_versions.rapid_beta_id, updateday, - sum(report_count), sum(adu), - os_short_name, crash_type_id +SELECT product_versions.rapid_beta_id + , updateday + , sum(report_count) + , sum(adu) + , os_short_name + , crash_type_id FROM crashes_by_user - JOIN product_versions USING ( product_version_id ) + JOIN product_versions USING ( product_version_id ) WHERE rapid_beta_id IS NOT NULL - AND report_date = updateday + AND report_date = updateday GROUP BY rapid_beta_id, os_short_name, crash_type_id; RETURN TRUE;