From e7b6749e2bc437ae7fc71b01dbf1213e2168782e Mon Sep 17 00:00:00 2001
From: Steven Murray <steven.murray@cern.ch>
Date: Thu, 11 Aug 2016 15:42:33 +0200
Subject: [PATCH] Appropriate DB column names now end with _IN_BYTES

---
 catalogue/OracleCatalogue.cpp         |   8 +++----
 catalogue/RdbmsCatalogue.cpp          |  32 +++++++++++++-------------
 catalogue/catalogue_common_schema.sql |  16 ++++++-------
 catalogue/catalogue_schema.pdf        | Bin 94410 -> 94364 bytes
 4 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/catalogue/OracleCatalogue.cpp b/catalogue/OracleCatalogue.cpp
index 5f879826e0..06a9e94c1e 100644
--- a/catalogue/OracleCatalogue.cpp
+++ b/catalogue/OracleCatalogue.cpp
@@ -62,7 +62,7 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(
         "ARCHIVE_FILE.DISK_FILE_USER AS DISK_FILE_USER,"
         "ARCHIVE_FILE.DISK_FILE_GROUP AS DISK_FILE_GROUP,"
         "ARCHIVE_FILE.DISK_FILE_RECOVERY_BLOB AS DISK_FILE_RECOVERY_BLOB,"
-        "ARCHIVE_FILE.FILE_SIZE AS FILE_SIZE,"
+        "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES,"
         "ARCHIVE_FILE.CHECKSUM_TYPE AS CHECKSUM_TYPE,"
         "ARCHIVE_FILE.CHECKSUM_VALUE AS CHECKSUM_VALUE,"
         "ARCHIVE_FILE.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME,"
@@ -71,7 +71,7 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(
         "TAPE_FILE.VID AS VID,"
         "TAPE_FILE.FSEQ AS FSEQ,"
         "TAPE_FILE.BLOCK_ID AS BLOCK_ID,"
-        "TAPE_FILE.COMPRESSED_SIZE AS COMPRESSED_SIZE,"
+        "TAPE_FILE.COMPRESSED_SIZE_IN_BYTES AS COMPRESSED_SIZE_IN_BYTES,"
         "TAPE_FILE.COPY_NB AS COPY_NB,"
         "TAPE_FILE.CREATION_TIME AS TAPE_FILE_CREATION_TIME "
       "FROM "
@@ -97,7 +97,7 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(
         archiveFile->diskFileInfo.owner = selectRset->columnString("DISK_FILE_USER");
         archiveFile->diskFileInfo.group = selectRset->columnString("DISK_FILE_GROUP");
         archiveFile->diskFileInfo.recoveryBlob = selectRset->columnString("DISK_FILE_RECOVERY_BLOB");
-        archiveFile->fileSize = selectRset->columnUint64("FILE_SIZE");
+        archiveFile->fileSize = selectRset->columnUint64("SIZE_IN_BYTES");
         archiveFile->checksumType = selectRset->columnString("CHECKSUM_TYPE");
         archiveFile->checksumValue = selectRset->columnString("CHECKSUM_VALUE");
         archiveFile->storageClass = selectRset->columnString("STORAGE_CLASS_NAME");
@@ -112,7 +112,7 @@ common::dataStructures::ArchiveFile OracleCatalogue::deleteArchiveFile(
         tapeFile.vid = selectRset->columnString("VID");
         tapeFile.fSeq = selectRset->columnUint64("FSEQ");
         tapeFile.blockId = selectRset->columnUint64("BLOCK_ID");
-        tapeFile.compressedSize = selectRset->columnUint64("COMPRESSED_SIZE");
+        tapeFile.compressedSize = selectRset->columnUint64("COMPRESSED_SIZE_IN_BYTES");
         tapeFile.copyNb = selectRset->columnUint64("COPY_NB");
         tapeFile.creationTime = selectRset->columnUint64("TAPE_FILE_CREATION_TIME");
         tapeFile.checksumType = archiveFile->checksumType; // Duplicated for convenience
diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp
index f5be4bd7e8..88ce043981 100644
--- a/catalogue/RdbmsCatalogue.cpp
+++ b/catalogue/RdbmsCatalogue.cpp
@@ -3281,7 +3281,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow &
         "DISK_FILE_USER,"
         "DISK_FILE_GROUP,"
         "DISK_FILE_RECOVERY_BLOB,"
-        "FILE_SIZE,"
+        "SIZE_IN_BYTES,"
         "CHECKSUM_TYPE,"
         "CHECKSUM_VALUE,"
         "STORAGE_CLASS_NAME,"
@@ -3295,7 +3295,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow &
         ":DISK_FILE_USER,"
         ":DISK_FILE_GROUP,"
         ":DISK_FILE_RECOVERY_BLOB,"
-        ":FILE_SIZE,"
+        ":SIZE_IN_BYTES,"
         ":CHECKSUM_TYPE,"
         ":CHECKSUM_VALUE,"
         ":STORAGE_CLASS_NAME,"
@@ -3310,7 +3310,7 @@ void RdbmsCatalogue::insertArchiveFile(rdbms::Conn &conn, const ArchiveFileRow &
     stmt->bindString(":DISK_FILE_USER", row.diskFileUser);
     stmt->bindString(":DISK_FILE_GROUP", row.diskFileGroup);
     stmt->bindString(":DISK_FILE_RECOVERY_BLOB", row.diskFileRecoveryBlob);
-    stmt->bindUint64(":FILE_SIZE", row.size);
+    stmt->bindUint64(":SIZE_IN_BYTES", row.size);
     stmt->bindString(":CHECKSUM_TYPE", row.checksumType);
     stmt->bindString(":CHECKSUM_VALUE", row.checksumValue);
     stmt->bindString(":STORAGE_CLASS_NAME", row.storageClassName);
@@ -3419,7 +3419,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
         "ARCHIVE_FILE.DISK_FILE_USER AS DISK_FILE_USER,"
         "ARCHIVE_FILE.DISK_FILE_GROUP AS DISK_FILE_GROUP,"
         "ARCHIVE_FILE.DISK_FILE_RECOVERY_BLOB AS DISK_FILE_RECOVERY_BLOB,"
-        "ARCHIVE_FILE.FILE_SIZE AS FILE_SIZE,"
+        "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES,"
         "ARCHIVE_FILE.CHECKSUM_TYPE AS CHECKSUM_TYPE,"
         "ARCHIVE_FILE.CHECKSUM_VALUE AS CHECKSUM_VALUE,"
         "ARCHIVE_FILE.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME,"
@@ -3428,7 +3428,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
         "TAPE_FILE.VID AS VID,"
         "TAPE_FILE.FSEQ AS FSEQ,"
         "TAPE_FILE.BLOCK_ID AS BLOCK_ID,"
-        "TAPE_FILE.COMPRESSED_SIZE AS COMPRESSED_SIZE,"
+        "TAPE_FILE.COMPRESSED_SIZE_IN_BYTES AS COMPRESSED_SIZE_IN_BYTES,"
         "TAPE_FILE.COPY_NB AS COPY_NB,"
         "TAPE_FILE.CREATION_TIME AS TAPE_FILE_CREATION_TIME, "
         "TAPE.TAPE_POOL_NAME AS TAPE_POOL_NAME "
@@ -3535,7 +3535,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
         archiveFile.diskFileInfo.owner = rset->columnString("DISK_FILE_USER");
         archiveFile.diskFileInfo.group = rset->columnString("DISK_FILE_GROUP");
         archiveFile.diskFileInfo.recoveryBlob = rset->columnString("DISK_FILE_RECOVERY_BLOB");
-        archiveFile.fileSize = rset->columnUint64("FILE_SIZE");
+        archiveFile.fileSize = rset->columnUint64("SIZE_IN_BYTES");
         archiveFile.checksumType = rset->columnString("CHECKSUM_TYPE");
         archiveFile.checksumValue = rset->columnString("CHECKSUM_VALUE");
         archiveFile.storageClass = rset->columnString("STORAGE_CLASS_NAME");
@@ -3553,7 +3553,7 @@ std::list<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveFilesFo
         tapeFile.vid = rset->columnString("VID");
         tapeFile.fSeq = rset->columnUint64("FSEQ");
         tapeFile.blockId = rset->columnUint64("BLOCK_ID");
-        tapeFile.compressedSize = rset->columnUint64("COMPRESSED_SIZE");
+        tapeFile.compressedSize = rset->columnUint64("COMPRESSED_SIZE_IN_BYTES");
         tapeFile.copyNb = rset->columnUint64("COPY_NB");
         tapeFile.creationTime = rset->columnUint64("TAPE_FILE_CREATION_TIME");
         tapeFile.checksumType = archiveFile.checksumType; // Duplicated for convenience
@@ -3577,8 +3577,8 @@ common::dataStructures::ArchiveFileSummary RdbmsCatalogue::getTapeFileSummary(
   try {
     std::string sql =
       "SELECT "
-        "COALESCE(SUM(ARCHIVE_FILE.FILE_SIZE), 0) AS TOTAL_BYTES,"
-        "COALESCE(SUM(TAPE_FILE.COMPRESSED_SIZE), 0) AS TOTAL_COMPRESSED_BYTES,"
+        "COALESCE(SUM(ARCHIVE_FILE.SIZE_IN_BYTES), 0) AS TOTAL_BYTES,"
+        "COALESCE(SUM(TAPE_FILE.COMPRESSED_SIZE_IN_BYTES), 0) AS TOTAL_COMPRESSED_BYTES,"
         "COUNT(ARCHIVE_FILE.ARCHIVE_FILE_ID) AS TOTAL_FILES "
       "FROM "
         "ARCHIVE_FILE "
@@ -4265,7 +4265,7 @@ void RdbmsCatalogue::insertTapeFile(
         "VID,"
         "FSEQ,"
         "BLOCK_ID,"
-        "COMPRESSED_SIZE,"
+        "COMPRESSED_SIZE_IN_BYTES,"
         "COPY_NB,"
         "CREATION_TIME,"
         "ARCHIVE_FILE_ID)"
@@ -4273,7 +4273,7 @@ void RdbmsCatalogue::insertTapeFile(
         ":VID,"
         ":FSEQ,"
         ":BLOCK_ID,"
-        ":COMPRESSED_SIZE,"
+        ":COMPRESSED_SIZE_IN_BYTES,"
         ":COPY_NB,"
         ":CREATION_TIME,"
         ":ARCHIVE_FILE_ID)";
@@ -4282,7 +4282,7 @@ void RdbmsCatalogue::insertTapeFile(
     stmt->bindString(":VID", tapeFile.vid);
     stmt->bindUint64(":FSEQ", tapeFile.fSeq);
     stmt->bindUint64(":BLOCK_ID", tapeFile.blockId);
-    stmt->bindUint64(":COMPRESSED_SIZE", tapeFile.compressedSize);
+    stmt->bindUint64(":COMPRESSED_SIZE_IN_BYTES", tapeFile.compressedSize);
     stmt->bindUint64(":COPY_NB", tapeFile.copyNb);
     stmt->bindUint64(":CREATION_TIME", now);
     stmt->bindUint64(":ARCHIVE_FILE_ID", archiveFileId);
@@ -4361,7 +4361,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF
         "ARCHIVE_FILE.DISK_FILE_USER AS DISK_FILE_USER,"
         "ARCHIVE_FILE.DISK_FILE_GROUP AS DISK_FILE_GROUP,"
         "ARCHIVE_FILE.DISK_FILE_RECOVERY_BLOB AS DISK_FILE_RECOVERY_BLOB,"
-        "ARCHIVE_FILE.FILE_SIZE AS FILE_SIZE,"
+        "ARCHIVE_FILE.SIZE_IN_BYTES AS SIZE_IN_BYTES,"
         "ARCHIVE_FILE.CHECKSUM_TYPE AS CHECKSUM_TYPE,"
         "ARCHIVE_FILE.CHECKSUM_VALUE AS CHECKSUM_VALUE,"
         "ARCHIVE_FILE.STORAGE_CLASS_NAME AS STORAGE_CLASS_NAME,"
@@ -4370,7 +4370,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF
         "TAPE_FILE.VID AS VID,"
         "TAPE_FILE.FSEQ AS FSEQ,"
         "TAPE_FILE.BLOCK_ID AS BLOCK_ID,"
-        "TAPE_FILE.COMPRESSED_SIZE AS COMPRESSED_SIZE,"
+        "TAPE_FILE.COMPRESSED_SIZE_IN_BYTES AS COMPRESSED_SIZE_IN_BYTES,"
         "TAPE_FILE.COPY_NB AS COPY_NB,"
         "TAPE_FILE.CREATION_TIME AS TAPE_FILE_CREATION_TIME "
       "FROM "
@@ -4394,7 +4394,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF
         archiveFile->diskFileInfo.owner = rset->columnString("DISK_FILE_USER");
         archiveFile->diskFileInfo.group = rset->columnString("DISK_FILE_GROUP");
         archiveFile->diskFileInfo.recoveryBlob = rset->columnString("DISK_FILE_RECOVERY_BLOB");
-        archiveFile->fileSize = rset->columnUint64("FILE_SIZE");
+        archiveFile->fileSize = rset->columnUint64("SIZE_IN_BYTES");
         archiveFile->checksumType = rset->columnString("CHECKSUM_TYPE");
         archiveFile->checksumValue = rset->columnString("CHECKSUM_VALUE");
         archiveFile->storageClass = rset->columnString("STORAGE_CLASS_NAME");
@@ -4409,7 +4409,7 @@ std::unique_ptr<common::dataStructures::ArchiveFile> RdbmsCatalogue::getArchiveF
         tapeFile.vid = rset->columnString("VID");
         tapeFile.fSeq = rset->columnUint64("FSEQ");
         tapeFile.blockId = rset->columnUint64("BLOCK_ID");
-        tapeFile.compressedSize = rset->columnUint64("COMPRESSED_SIZE");
+        tapeFile.compressedSize = rset->columnUint64("COMPRESSED_SIZE_IN_BYTES");
         tapeFile.copyNb = rset->columnUint64("COPY_NB");
         tapeFile.creationTime = rset->columnUint64("TAPE_FILE_CREATION_TIME");
         tapeFile.checksumType = archiveFile->checksumType; // Duplicated for convenience
diff --git a/catalogue/catalogue_common_schema.sql b/catalogue/catalogue_common_schema.sql
index 4e1fefbb0e..7fe14e49a9 100644
--- a/catalogue/catalogue_common_schema.sql
+++ b/catalogue/catalogue_common_schema.sql
@@ -163,7 +163,7 @@ CREATE TABLE ARCHIVE_FILE(
   DISK_FILE_USER          VARCHAR2(100)  NOT NULL,
   DISK_FILE_GROUP         VARCHAR2(100)  NOT NULL,
   DISK_FILE_RECOVERY_BLOB VARCHAR2(2000) NOT NULL,
-  FILE_SIZE               INTEGER        NOT NULL,
+  SIZE_IN_BYTES           INTEGER        NOT NULL,
   CHECKSUM_TYPE           VARCHAR2(100)  NOT NULL,
   CHECKSUM_VALUE          VARCHAR2(100)  NOT NULL,
   STORAGE_CLASS_NAME      VARCHAR2(100)  NOT NULL,
@@ -174,13 +174,13 @@ CREATE TABLE ARCHIVE_FILE(
     REFERENCES STORAGE_CLASS(DISK_INSTANCE_NAME, STORAGE_CLASS_NAME)
 );
 CREATE TABLE TAPE_FILE(
-  VID             VARCHAR2(100) NOT NULL,
-  FSEQ            INTEGER       NOT NULL,
-  BLOCK_ID        INTEGER       NOT NULL,
-  COMPRESSED_SIZE INTEGER       NOT NULL,
-  COPY_NB         INTEGER       NOT NULL,
-  CREATION_TIME   INTEGER       NOT NULL,
-  ARCHIVE_FILE_ID INTEGER       NOT NULL,
+  VID                      VARCHAR2(100) NOT NULL,
+  FSEQ                     INTEGER       NOT NULL,
+  BLOCK_ID                 INTEGER       NOT NULL,
+  COMPRESSED_SIZE_IN_BYTES INTEGER       NOT NULL,
+  COPY_NB                  INTEGER       NOT NULL,
+  CREATION_TIME            INTEGER       NOT NULL,
+  ARCHIVE_FILE_ID          INTEGER       NOT NULL,
   CONSTRAINT TAPE_FILE_PK PRIMARY KEY(VID, FSEQ),
   CONSTRAINT TAPE_FILE_TAPE_FK FOREIGN KEY(VID)
     REFERENCES TAPE(VID),
diff --git a/catalogue/catalogue_schema.pdf b/catalogue/catalogue_schema.pdf
index 3c3f3032aa19cf04b9c6b168bb899167b956f6f1..571bcd3b389d425db50ef25c7c8ae0fc5695b871 100644
GIT binary patch
delta 5771
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

delta 5821
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
FE&#_pzI*@x

-- 
GitLab