diff --git a/catalogue/CatalogueTest.cpp b/catalogue/CatalogueTest.cpp index a164fb318a3977dd803c804ad27c6ed61019f51d..e31180211e84fa5a3d23c13fe9d5bc5d2174c191 100644 --- a/catalogue/CatalogueTest.cpp +++ b/catalogue/CatalogueTest.cpp @@ -3749,19 +3749,6 @@ TEST_P(cta_catalogue_CatalogueTest, createTape_many_tapes) { ASSERT_FALSE(vidToTape.begin()->second.full); } - { - catalogue::TapeSearchCriteria searchCriteria; - std::vector<std::string> diskFileIds; - diskFileIds.push_back("1"); - searchCriteria.diskFileIds = diskFileIds; - const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(searchCriteria); - ASSERT_EQ(1, tapes.size()); - const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes); - ASSERT_EQ(1, vidToTape.size()); - ASSERT_EQ("vid1", vidToTape.begin()->first); - ASSERT_EQ("vid1", vidToTape.begin()->second.vid); - } - { catalogue::TapeSearchCriteria searchCriteria; searchCriteria.vid = "non_existent_vid"; @@ -3959,6 +3946,20 @@ TEST_P(cta_catalogue_CatalogueTest, createTape_1_tape_with_write_log_1_tape_with m_catalogue->filesWrittenToTape(file1WrittenSet); } + { + // Check that a lookup of diskFileId 5678 returns 1 tape + catalogue::TapeSearchCriteria searchCriteria; + std::vector<std::string> diskFileIds; + diskFileIds.push_back("5678"); + searchCriteria.diskFileIds = diskFileIds; + const std::list<common::dataStructures::Tape> tapes = m_catalogue->getTapes(searchCriteria); + ASSERT_EQ(1, tapes.size()); + const std::map<std::string, common::dataStructures::Tape> vidToTape = tapeListToMap(tapes); + ASSERT_EQ(1, vidToTape.size()); + ASSERT_EQ("vid1", vidToTape.begin()->first); + ASSERT_EQ("vid1", vidToTape.begin()->second.vid); + } + { const auto pools = m_catalogue->getTapePools(); ASSERT_EQ(1, pools.size()); diff --git a/catalogue/RdbmsCatalogue.cpp b/catalogue/RdbmsCatalogue.cpp index 5fcaea0d9e4f307524bed5681f50e22112881cb9..87b44fcd1174a5399ab0e2a4e9176c56839acaaf 100644 --- a/catalogue/RdbmsCatalogue.cpp +++ b/catalogue/RdbmsCatalogue.cpp @@ -2462,7 +2462,7 @@ std::list<common::dataStructures::Tape> RdbmsCatalogue::getTapes(rdbms::Conn &co if(searchCriteria.diskFileIds) { if(addedAWhereConstraint) sql += " AND "; sql += " VID IN (" - "SELECT UNIQUE A.VID " + "SELECT DISTINCT A.VID " "FROM " "TAPE_FILE A, ARCHIVE_FILE B " "WHERE "