diff --git a/catalogue/MysqlCatalogue.cpp b/catalogue/MysqlCatalogue.cpp index 104b34164454a97ce02d2af58ba4cf499d205e19..0ad64512d700d2d181f138f9b0b5d5709ee87a25 100644 --- a/catalogue/MysqlCatalogue.cpp +++ b/catalogue/MysqlCatalogue.cpp @@ -382,6 +382,7 @@ void MysqlCatalogue::deleteArchiveFile(const std::string &diskInstanceName, cons "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -424,7 +425,11 @@ void MysqlCatalogue::deleteArchiveFile(const std::string &diskInstanceName, cons archiveFile->diskFileInfo.owner_uid = selectRset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = selectRset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = selectRset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + if(selectRset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, selectRset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = selectRset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = selectRset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = selectRset.columnUint64("RECONCILIATION_TIME"); diff --git a/catalogue/OracleCatalogue.cpp b/catalogue/OracleCatalogue.cpp index 1d7cfa164a6042972c03f10f0e01fc7d14fdbc77..de93816a706d4a7c195bb729062aecfb446623d4 100644 --- a/catalogue/OracleCatalogue.cpp +++ b/catalogue/OracleCatalogue.cpp @@ -82,6 +82,7 @@ namespace { rdbms::wrapper::OcciColumn diskFileGroup; rdbms::wrapper::OcciColumn size; rdbms::wrapper::OcciColumn checksumBlob; + rdbms::wrapper::OcciColumn checksumAdler32; rdbms::wrapper::OcciColumn storageClassName; rdbms::wrapper::OcciColumn creationTime; rdbms::wrapper::OcciColumn reconciliationTime; @@ -101,6 +102,7 @@ namespace { diskFileGroup("DISK_FILE_GID", nbRows), size("SIZE_IN_BYTES", nbRows), checksumBlob("CHECKSUM_BLOB", nbRows), + checksumAdler32("CHECKSUM_ADLER32", nbRows), storageClassName("STORAGE_CLASS_NAME", nbRows), creationTime("CREATION_TIME", nbRows), reconciliationTime("RECONCILIATION_TIME", nbRows) { @@ -558,6 +560,7 @@ void OracleCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, const "DISK_FILE_GID," "SIZE_IN_BYTES," "CHECKSUM_BLOB," + "CHECKSUM_ADLER32," "STORAGE_CLASS_ID," "CREATION_TIME," "RECONCILIATION_TIME)" @@ -570,6 +573,7 @@ void OracleCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, const ":DISK_FILE_GID," ":SIZE_IN_BYTES," ":CHECKSUM_BLOB," + ":CHECKSUM_ADLER32," "STORAGE_CLASS_ID," ":CREATION_TIME," ":RECONCILIATION_TIME " @@ -590,6 +594,7 @@ void OracleCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, const occiStmt.setColumn(archiveFileBatch.diskFileGroup); occiStmt.setColumn(archiveFileBatch.size); occiStmt.setColumn(archiveFileBatch.checksumBlob, oracle::occi::OCCI_SQLT_VBI); + occiStmt.setColumn(archiveFileBatch.checksumAdler32); occiStmt.setColumn(archiveFileBatch.storageClassName); occiStmt.setColumn(archiveFileBatch.creationTime); occiStmt.setColumn(archiveFileBatch.reconciliationTime); @@ -664,7 +669,8 @@ std::map<uint64_t, OracleCatalogue::FileSizeAndChecksum> OracleCatalogue::select "SELECT " "ARCHIVE_FILE.ARCHIVE_FILE_ID AS ARCHIVE_FILE_ID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," - "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB " + "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32 " "FROM " "ARCHIVE_FILE " "INNER JOIN TEMP_TAPE_FILE_BATCH ON " @@ -686,8 +692,11 @@ std::map<uint64_t, OracleCatalogue::FileSizeAndChecksum> OracleCatalogue::select FileSizeAndChecksum fileSizeAndChecksum; fileSizeAndChecksum.fileSize = rset.columnUint64("SIZE_IN_BYTES"); - fileSizeAndChecksum.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); - + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + fileSizeAndChecksum.checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + fileSizeAndChecksum.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } fileSizesAndChecksums[archiveFileId] = fileSizeAndChecksum; } @@ -758,6 +767,7 @@ void OracleCatalogue::deleteArchiveFile(const std::string &diskInstanceName, con "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -804,7 +814,11 @@ void OracleCatalogue::deleteArchiveFile(const std::string &diskInstanceName, con archiveFile->diskFileInfo.owner_uid = selectRset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = selectRset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = selectRset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + if(selectRset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, selectRset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = selectRset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = selectRset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = selectRset.columnUint64("RECONCILIATION_TIME"); diff --git a/catalogue/PostgresCatalogue.cpp b/catalogue/PostgresCatalogue.cpp index f23c1d9789d52233ee841b02e25963b56c01260f..4d941d36f62ac1f25a7d0b543ae18e925377d654 100644 --- a/catalogue/PostgresCatalogue.cpp +++ b/catalogue/PostgresCatalogue.cpp @@ -81,6 +81,7 @@ namespace { rdbms::wrapper::PostgresColumn diskFileGroup; rdbms::wrapper::PostgresColumn size; rdbms::wrapper::PostgresColumn checksumBlob; + rdbms::wrapper::PostgresColumn checksumAdler32; rdbms::wrapper::PostgresColumn storageClassName; rdbms::wrapper::PostgresColumn creationTime; rdbms::wrapper::PostgresColumn reconciliationTime; @@ -100,6 +101,7 @@ namespace { diskFileGroup("DISK_FILE_GID", nbRows), size("SIZE_IN_BYTES", nbRows), checksumBlob("CHECKSUM_BLOB", nbRows), + checksumAdler32("CHECKSUM_ADLER32", nbRows), storageClassName("STORAGE_CLASS_NAME", nbRows), creationTime("CREATION_TIME", nbRows), reconciliationTime("RECONCILIATION_TIME", nbRows) { @@ -509,6 +511,7 @@ void PostgresCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, "DISK_FILE_GID," "SIZE_IN_BYTES," "CHECKSUM_BLOB," + "CHECKSUM_ADLER32," "STORAGE_CLASS_NAME," "CREATION_TIME," "RECONCILIATION_TIME) " @@ -521,6 +524,7 @@ void PostgresCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, ":DISK_FILE_GID," ":SIZE_IN_BYTES," ":CHECKSUM_BLOB," + ":CHECKSUM_ADLER32," ":STORAGE_CLASS_NAME," ":CREATION_TIME," ":RECONCILIATION_TIME"; @@ -552,6 +556,7 @@ void PostgresCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, "DISK_FILE_GID," "SIZE_IN_BYTES," "CHECKSUM_BLOB," + "CHECKSUM_ADLER32," "STORAGE_CLASS_ID," "CREATION_TIME," "RECONCILIATION_TIME) " @@ -564,6 +569,7 @@ void PostgresCatalogue::idempotentBatchInsertArchiveFiles(rdbms::Conn &conn, "A.DISK_FILE_GID," "A.SIZE_IN_BYTES," "A.CHECKSUM_BLOB," + "A.CHECKSUM_ADLER32," "S.STORAGE_CLASS_ID," "A.CREATION_TIME," "A.RECONCILIATION_TIME " @@ -603,7 +609,8 @@ std::map<uint64_t, PostgresCatalogue::FileSizeAndChecksum> PostgresCatalogue::se "SELECT " "ARCHIVE_FILE.ARCHIVE_FILE_ID AS ARCHIVE_FILE_ID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," - "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB " + "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32 " "FROM " "ARCHIVE_FILE " "INNER JOIN TEMP_TAPE_FILE_BATCH ON " @@ -625,7 +632,11 @@ std::map<uint64_t, PostgresCatalogue::FileSizeAndChecksum> PostgresCatalogue::se FileSizeAndChecksum fileSizeAndChecksum; fileSizeAndChecksum.fileSize = rset.columnUint64("SIZE_IN_BYTES"); - fileSizeAndChecksum.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + fileSizeAndChecksum.checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + fileSizeAndChecksum.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } fileSizesAndChecksums[archiveFileId] = fileSizeAndChecksum; } @@ -689,6 +700,7 @@ void PostgresCatalogue::deleteArchiveFile(const std::string &diskInstanceName, c "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -733,7 +745,11 @@ void PostgresCatalogue::deleteArchiveFile(const std::string &diskInstanceName, c archiveFile->diskFileInfo.owner_uid = selectRset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = selectRset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = selectRset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + if(selectRset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, selectRset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(selectRset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = selectRset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = selectRset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = selectRset.columnUint64("RECONCILIATION_TIME"); diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp index bec7c400476b57f36282019695c07ebe80353d74..3a42339590bfcb987518b0b0241d61212f84be65 100644 --- a/catalogue/RdbmsCatalogue.cpp +++ b/catalogue/RdbmsCatalogue.cpp @@ -4297,6 +4297,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow & "DISK_FILE_GID," "SIZE_IN_BYTES," "CHECKSUM_BLOB," + "CHECKSUM_ADLER32," "STORAGE_CLASS_ID," "CREATION_TIME," "RECONCILIATION_TIME)" @@ -4309,6 +4310,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow & ":DISK_FILE_GID," ":SIZE_IN_BYTES," ":CHECKSUM_BLOB," + ":CHECKSUM_ADLER32," "STORAGE_CLASS_ID," ":CREATION_TIME," ":RECONCILIATION_TIME " @@ -4327,6 +4329,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow & stmt.bindUint64(":DISK_FILE_GID", row.diskFileGid); stmt.bindUint64(":SIZE_IN_BYTES", row.size); stmt.bindBlob (":CHECKSUM_BLOB", row.checksumBlob.serialize()); + stmt.bindBlob (":CHECKSUM_ADLER32", "0x" + checksum::ChecksumBlob::ByteArrayToHex(row.checksumBlob.at(checksum::ADLER32))); stmt.bindString(":STORAGE_CLASS_NAME", row.storageClassName); stmt.bindUint64(":CREATION_TIME", now); stmt.bindUint64(":RECONCILIATION_TIME", now); @@ -4463,6 +4466,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getFilesForRepack "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -4506,7 +4510,11 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getFilesForRepack archiveFile.diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile.diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile.fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile.checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile.storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile.creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile.reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -5410,6 +5418,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -5446,7 +5455,11 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF archiveFile->diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -5497,6 +5510,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -5536,7 +5550,11 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF archiveFile->diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -5641,6 +5659,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -5679,7 +5698,11 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF archiveFile->diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -5732,6 +5755,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," @@ -5773,7 +5797,11 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF archiveFile->diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile->diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile->fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile->checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile->checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile->storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile->creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile->reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); diff --git a/catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.cpp b/catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.cpp index 3cac6505fba455271dff2c1256d43876297b0171..9c6c3d8858053873abe8776c6575eb0f9de21963 100644 --- a/catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.cpp +++ b/catalogue/RdbmsCatalogueGetArchiveFilesForRepackItor.cpp @@ -47,7 +47,11 @@ namespace { archiveFile.diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile.diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile.fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile.checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile.storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile.creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile.reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -94,6 +98,7 @@ RdbmsCatalogueGetArchiveFilesForRepackItor::RdbmsCatalogueGetArchiveFilesForRepa "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," diff --git a/catalogue/RdbmsCatalogueGetArchiveFilesItor.cpp b/catalogue/RdbmsCatalogueGetArchiveFilesItor.cpp index bf12e694eee29f6be48776f02a75d2a97e90e75b..dfe7201047c6d37ebcc475556bdc2198a123577e 100644 --- a/catalogue/RdbmsCatalogueGetArchiveFilesItor.cpp +++ b/catalogue/RdbmsCatalogueGetArchiveFilesItor.cpp @@ -47,7 +47,11 @@ namespace { archiveFile.diskFileInfo.owner_uid = rset.columnUint64("DISK_FILE_UID"); archiveFile.diskFileInfo.gid = rset.columnUint64("DISK_FILE_GID"); archiveFile.fileSize = rset.columnUint64("SIZE_IN_BYTES"); - archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + if(rset.columnBlob("CHECKSUM_BLOB").empty()) { + archiveFile.checksumBlob.insert(checksum::ADLER32, rset.columnUint64("CHECKSUM_ADLER32")); + } else { + archiveFile.checksumBlob.deserialize(rset.columnBlob("CHECKSUM_BLOB")); + } archiveFile.storageClass = rset.columnString("STORAGE_CLASS_NAME"); archiveFile.creationTime = rset.columnUint64("ARCHIVE_FILE_CREATION_TIME"); archiveFile.reconciliationTime = rset.columnUint64("RECONCILIATION_TIME"); @@ -97,6 +101,7 @@ RdbmsCatalogueGetArchiveFilesItor::RdbmsCatalogueGetArchiveFilesItor( "ARCHIVE_FILE.DISK_FILE_GID AS DISK_FILE_GID," "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES," "ARCHIVE_FILE.CHECKSUM_BLOB AS CHECKSUM_BLOB," + "ARCHIVE_FILE.CHECKSUM_ADLER32 AS CHECKSUM_ADLER32," "STORAGE_CLASS.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME," "ARCHIVE_FILE.CREATION_TIME AS ARCHIVE_FILE_CREATION_TIME," "ARCHIVE_FILE.RECONCILIATION_TIME AS RECONCILIATION_TIME," diff --git a/catalogue/common_catalogue_schema.sql b/catalogue/common_catalogue_schema.sql index 939dade5937aeaf4341adda3497b74b85669fd31..8cee40622b5165361aecc57a9904041c1e0de88e 100644 --- a/catalogue/common_catalogue_schema.sql +++ b/catalogue/common_catalogue_schema.sql @@ -167,6 +167,7 @@ CREATE TABLE ARCHIVE_FILE( DISK_FILE_GID NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_DFGID_NN NOT NULL, SIZE_IN_BYTES NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_SIB_NN NOT NULL, CHECKSUM_BLOB CHECKSUM_BLOB_TYPE CONSTRAINT ARCHIVE_FILE_CB1_NN NOT NULL, + CHECKSUM_ADLER32 NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_CB2_NN NOT NULL, STORAGE_CLASS_ID NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_SCI_NN NOT NULL, CREATION_TIME NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_CT2_NN NOT NULL, RECONCILIATION_TIME NUMERIC(20, 0) CONSTRAINT ARCHIVE_FILE_RT_NN NOT NULL,