Skip to content
Snippets Groups Projects
Commit 4443bc35 authored by Cedric Caffy's avatar Cedric Caffy
Browse files

Modified TapeStatisticsUpdater SQL query so that it takes into account

multiple copies of a file in the same tape (rare case)
parent ff7ed375
Branches
Tags
No related merge requests found
......@@ -43,36 +43,43 @@ void TapeStatisticsUpdater::updateTapeStatistics() {
"("
"SELECT "
"'0' AS DIRTY,"
"COALESCE(NON_EMPTY_TAPE_STATS.NB_MASTER_FILES, 0) AS COMPUTED_NB_MASTER_FILES,"
"COALESCE(NON_EMPTY_TAPE_STATS.MASTER_DATA_IN_BYTES, 0) AS COMPUTED_MASTER_DATA_IN_BYTES,"
"COALESCE(NON_EMPTY_TAPE_STATS.NB_COPY_NB_1,0) AS NB_COPY_NB_1,"
"COALESCE(NON_EMPTY_TAPE_STATS.COPY_NB_1_IN_BYTES,0) AS COPY_NB_1_IN_BYTES,"
"COALESCE(NON_EMPTY_TAPE_STATS.NB_COPY_NB_GT_1,0) AS NB_COPY_NB_GT_1,"
"COALESCE(NON_EMPTY_TAPE_STATS.COPY_NB_GT_1_IN_BYTES,0) AS COPY_NB_GT_1_IN_BYTES "
"COALESCE(SUM(SUMMARIZED_STATS.NB_COPY_NB_1) + SUM(SUMMARIZED_STATS.NB_COPY_NB_GT_1),0) AS NB_MASTER_FILES,"
"COALESCE(SUM(SUMMARIZED_STATS.COPY_NB_1_IN_BYTES) + SUM(SUMMARIZED_STATS.COPY_NB_GT_1_IN_BYTES),0) AS MASTER_DATA_IN_BYTES,"
"COALESCE(SUM(SUMMARIZED_STATS.NB_COPY_NB_1),0) AS NB_COPY_NB_1,"
"COALESCE(SUM(SUMMARIZED_STATS.COPY_NB_1_IN_BYTES),0) AS COPY_NB_1_IN_BYTES,"
"COALESCE(SUM(SUMMARIZED_STATS.NB_COPY_NB_GT_1),0) AS NB_COPY_NB_GT_1,"
"COALESCE(SUM(SUMMARIZED_STATS.COPY_NB_GT_1_IN_BYTES),0) AS COPY_NB_GT_1_IN_BYTES "
"FROM "
"TAPE T "
"LEFT OUTER JOIN "
"("
"SELECT "
"TAPE_FILE.VID,"
"'0' AS DIRTY,"
"COUNT(TAPE_FILE.FSEQ) AS NB_MASTER_FILES,"
"SUM(ARCHIVE_FILE.SIZE_IN_BYTES) AS MASTER_DATA_IN_BYTES,"
"CASE WHEN TAPE_FILE.COPY_NB = 1 THEN COUNT(TAPE_FILE.FSEQ) ELSE 0 END AS NB_COPY_NB_1,"
"CASE WHEN TAPE_FILE.COPY_NB = 1 THEN SUM(ARCHIVE_FILE.SIZE_IN_BYTES) ELSE 0 END AS COPY_NB_1_IN_BYTES,"
"CASE WHEN TAPE_FILE.COPY_NB > 1 THEN COUNT(TAPE_FILE.FSEQ) ELSE 0 END AS NB_COPY_NB_GT_1,"
"CASE WHEN TAPE_FILE.COPY_NB > 1 THEN SUM(ARCHIVE_FILE.SIZE_IN_BYTES) ELSE 0 END AS COPY_NB_GT_1_IN_BYTES "
"STATS.VID AS VID,"
"CASE WHEN COPY_NB = 1 THEN STATS.NB_FILES ELSE 0 END AS NB_COPY_NB_1,"
"CASE WHEN COPY_NB = 1 THEN STATS.DATA_IN_BYTES ELSE 0 END AS COPY_NB_1_IN_BYTES,"
"CASE WHEN COPY_NB > 1 THEN STATS.NB_FILES ELSE 0 END AS NB_COPY_NB_GT_1,"
"CASE WHEN COPY_NB > 1 THEN STATS.DATA_IN_BYTES ELSE 0 END AS COPY_NB_GT_1_IN_BYTES "
"FROM "
"TAPE_FILE "
"INNER JOIN ARCHIVE_FILE ON "
"TAPE_FILE.ARCHIVE_FILE_ID = ARCHIVE_FILE.ARCHIVE_FILE_ID "
"WHERE "
"TAPE_FILE.SUPERSEDED_BY_VID IS NULL AND "
"TAPE_FILE.SUPERSEDED_BY_FSEQ IS NULL "
"GROUP BY TAPE_FILE.VID, TAPE_FILE.COPY_NB"
") NON_EMPTY_TAPE_STATS ON "
"T.VID = NON_EMPTY_TAPE_STATS.VID "
"WHERE T.VID = TAPE_TO_UPDATE.VID"
"("
"SELECT "
"TAPE_FILE.VID AS VID,"
"TAPE_FILE.COPY_NB AS COPY_NB,"
"COUNT(TAPE_FILE.FSEQ) AS NB_FILES,"
"SUM(ARCHIVE_FILE.SIZE_IN_BYTES) AS DATA_IN_BYTES "
"FROM "
"TAPE_FILE "
"INNER JOIN "
"ARCHIVE_FILE "
"ON "
"TAPE_FILE.ARCHIVE_FILE_ID = ARCHIVE_FILE.ARCHIVE_FILE_ID "
"WHERE "
"TAPE_FILE.SUPERSEDED_BY_VID IS NULL AND TAPE_FILE.SUPERSEDED_BY_FSEQ IS NULL AND TAPE_FILE.VID = TAPE_TO_UPDATE.VID "
"GROUP BY TAPE_FILE.VID, TAPE_FILE.COPY_NB"
") STATS "
"GROUP BY STATS.VID, STATS.COPY_NB, STATS.NB_FILES, STATS.DATA_IN_BYTES"
") SUMMARIZED_STATS ON SUMMARIZED_STATS.VID = TAPE_TO_UPDATE.VID "
"WHERE T.VID = TAPE_TO_UPDATE.VID "
"GROUP BY T.VID"
") "
"WHERE TAPE_TO_UPDATE.DIRTY='1'";
try {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment