PostgreSchedDB:

    - David's code compiles again, we can safely merge: 
       https://gitlab.cern.ch/cta/CTA/-/merge_requests/356

    - PGSCHED pipelines: 
           * fails default unit tests: https://gitlab.cern.ch/cta/CTA/-/pipelines/6257712
              default CTA unitTests were not adjusted to be run with PGSCHED

           * disabled unit tests: https://gitlab.cern.ch/cta/CTA/-/pipelines/6257951
              /opt/run/bin/init.sh: line 58: cta-objectstore-initialize: command not found

TO-DO-LIST: 
    - create new/extend existing pipeline scripts + fix init pod in Error when configuring objectstore in CI
    - adapt first unit tests to run using PGSCHED
    - code has ~120 methods marked as 'not implemented'  [1] --> to be implemented if needed
    - discover what else might be needed during testing 


[1]
scheduler/PostgresSchedDB/ArchiveJob.cpp
   void ArchiveJob::failTransfer(const std::string & failureReason, log::LogContext & lc)
   void ArchiveJob::failReport(const std::string & failureReason, log::LogContext & lc)
   void ArchiveJob::bumpUpTapeFileCount(uint64_t newFileCount)

scheduler/PostgresSchedDB/ArchiveJobQueueItor.cpp
   ArchiveJobQueueItor::ArchiveJobQueueItor()
   const std::string &ArchiveJobQueueItor::qid() const
   bool ArchiveJobQueueItor::end() const
   void ArchiveJobQueueItor::operator++()
   const common::dataStructures::ArchiveJob &ArchiveJobQueueItor::operator*() const

scheduler/PostgresSchedDB/ArchiveMount.cpp
   const SchedulerDatabase::ArchiveMount::MountInfo &ArchiveMount::getMountInfo()
   void ArchiveMount::setDriveStatus(common::dataStructures::DriveStatus status, common::dataStructures::MountType mountType,time_t completionTime, const std::optional<std::string>& reason)
   void ArchiveMount::setTapeSessionStats(const castor::tape::tapeserver::daemon::TapeSessionStats &stats)
   void ArchiveMount::setJobBatchTransferred(std::list<std::unique_ptr<SchedulerDatabase::ArchiveJob>> & jobsBatch, log::LogContext & lc)

scheduler/PostgresSchedDB/ArchiveRequest.cpp
   void ArchiveRequest::update() {
   std::list<ArchiveRequest::JobDump> ArchiveRequest::dumpJobs() {

scheduler/PostgresSchedDB/PostgresSchedDB.cpp
   void PostgresSchedDB::waitSubthreadsComplete()
   void PostgresSchedDB::ping()
   std::map<std::string, std::list<common::dataStructures::ArchiveJob>, std::less<void> > PostgresSchedDB::getArchiveJobs() const
   std::list<cta::common::dataStructures::ArchiveJob> PostgresSchedDB::getArchiveJobs(const std::string& tapePoolName) const
   std::unique_ptr<SchedulerDatabase::IArchiveJobQueueItor> PostgresSchedDB::getArchiveJobQueueItor(const std::string &tapePoolName,
       common::dataStructures::JobQueueType queueType) const
   std::list<std::unique_ptr<SchedulerDatabase::ArchiveJob> > PostgresSchedDB::getNextArchiveJobsToReportBatch(uint64_t filesRequested,
        log::LogContext & logContext)
   SchedulerDatabase::JobsFailedSummary PostgresSchedDB::getArchiveJobsFailedSummary(log::LogContext &logContext)
   std::list<std::unique_ptr<SchedulerDatabase::RetrieveJob>> PostgresSchedDB::getNextRetrieveJobsToTransferBatch(const std::string & vid, uint64_t filesRequested,     log::LogContext &lc)
   void PostgresSchedDB::requeueRetrieveRequestJobs(std::list<cta::SchedulerDatabase::RetrieveJob *> &jobs, log::LogContext &lc)
   void PostgresSchedDB::reserveRetrieveQueueForCleanup(const std::string & vid, std::optional<uint64_t> cleanupHeartBeatValue)
   void PostgresSchedDB::tickRetrieveQueueCleanupHeartbeat(const std::string & vid)
   void PostgresSchedDB::setArchiveJobBatchReported(std::list<SchedulerDatabase::ArchiveJob*> & jobsBatch,
        log::TimingList & timingList, utils::Timer & t, log::LogContext & lc)
   std::list<SchedulerDatabase::RetrieveQueueStatistics> PostgresSchedDB::getRetrieveQueueStatistics(
       const cta::common::dataStructures::RetrieveFileQueueCriteria& criteria, const std::set<std::string>& vidsToConsider)
   void PostgresSchedDB::cancelRetrieve(const std::string& instanceName, const cta::common::dataStructures::CancelRetrieveRequest& rqst,
       log::LogContext& lc)
   std::map<std::string, std::list<RetrieveRequestDump> > PostgresSchedDB::getRetrieveRequests() const
   std::list<RetrieveRequestDump> PostgresSchedDB::getRetrieveRequestsByVid(const std::string& vid) const
   std::list<RetrieveRequestDump> PostgresSchedDB::getRetrieveRequestsByRequester(const std::string& vid) const
   void PostgresSchedDB::deleteRetrieveRequest(const common::dataStructures::SecurityIdentity& requester,
       const std::string& remoteFile)
   void PostgresSchedDB::cancelArchive(const common::dataStructures::DeleteArchiveRequest& request, log::LogContext & lc)
   void PostgresSchedDB::deleteFailed(const std::string &objectId, log::LogContext &lc)
   std::map<std::string, std::list<common::dataStructures::RetrieveJob>, std::less<void> > PostgresSchedDB::getRetrieveJobs() const
   std::list<cta::common::dataStructures::RetrieveJob> PostgresSchedDB::getRetrieveJobs(const std::string &vid) const
   std::unique_ptr<SchedulerDatabase::IRetrieveJobQueueItor> PostgresSchedDB::getRetrieveJobQueueItor(const std::string &vid,
       common::dataStructures::JobQueueType queueType) const
   // PostgresSchedDB::repackExists()
   bool PostgresSchedDB::repackExists() {
   std::list<common::dataStructures::RepackInfo> PostgresSchedDB::getRepackInfo()
   common::dataStructures::RepackInfo PostgresSchedDB::getRepackInfo(const std::string& vid)
   void PostgresSchedDB::cancelRepack(const std::string& vid, log::LogContext & lc)
   std::unique_ptr<SchedulerDatabase::RepackRequestStatistics> PostgresSchedDB::getRepackStatistics()
   std::unique_ptr<SchedulerDatabase::RepackRequestStatistics> PostgresSchedDB::getRepackStatisticsNoLock()
   std::unique_ptr<SchedulerDatabase::RepackRequest> PostgresSchedDB::getNextRepackJobToExpand()
   std::list<std::unique_ptr<SchedulerDatabase::RetrieveJob>> PostgresSchedDB::getNextRetrieveJobsToReportBatch(
       uint64_t filesRequested, log::LogContext &logContext)
   std::list<std::unique_ptr<SchedulerDatabase::RetrieveJob>> PostgresSchedDB::getNextRetrieveJobsFailedBatch(
       uint64_t filesRequested, log::LogContext &logContext)
   std::unique_ptr<SchedulerDatabase::RepackReportBatch> PostgresSchedDB::getNextRepackReportBatch(log::LogContext& lc)
   std::unique_ptr<SchedulerDatabase::RepackReportBatch> PostgresSchedDB::getNextSuccessfulRetrieveRepackReportBatch(log::LogContext& lc)
   std::unique_ptr<SchedulerDatabase::RepackReportBatch> PostgresSchedDB::getNextSuccessfulArchiveRepackReportBatch(log::LogContext& lc)
   std::unique_ptr<SchedulerDatabase::RepackReportBatch> PostgresSchedDB::getNextFailedRetrieveRepackReportBatch(log::LogContext& lc)
   std::unique_ptr<SchedulerDatabase::RepackReportBatch> PostgresSchedDB::getNextFailedArchiveRepackReportBatch(log::LogContext &lc)
   std::list<std::unique_ptr<SchedulerDatabase::RepackReportBatch>> PostgresSchedDB::getRepackReportBatches(log::LogContext &lc)
   void PostgresSchedDB::setRetrieveJobBatchReportedToUser(std::list<SchedulerDatabase::RetrieveJob*> & jobsBatch,
        log::TimingList & timingList, utils::Timer & t, log::LogContext & lc)
   SchedulerDatabase::JobsFailedSummary PostgresSchedDB::getRetrieveJobsFailedSummary(log::LogContext &logContext)
   void PostgresSchedDB::trimEmptyQueues(log::LogContext& lc)
   void PostgresSchedDB::setThreadNumber(uint64_t threadNumber, const std::optional<size_t> &stackSize)
   void PostgresSchedDB::setBottomHalfQueueSize(uint64_t tasksNumber)
   std::list<SchedulerDatabase::RetrieveQueueCleanupInfo> PostgresSchedDB::getRetrieveQueuesCleanupInfo(log::LogContext& logContext)
   void PostgresSchedDB::setRetrieveQueueCleanupFlag(const std::string&vid, bool val, log::LogContext& logContext)

scheduler/PostgresSchedDB/RepackReportBatch.cpp
   RepackReportBatch::RepackReportBatch()
   void RepackReportBatch::report(log::LogContext & lc)

scheduler/PostgresSchedDB/RepackRequest.cpp
   uint64_t RepackRequest::getLastExpandedFSeq()
   void RepackRequest::setLastExpandedFSeq(uint64_t fseq)
   void RepackRequest::reportRetrieveCreationFailures(std::list<Subrequest> ¬CreatedSubrequests) {
   void RepackRequest::expandDone()
   void RepackRequest::fail()
   void RepackRequest::requeueInToExpandQueue(log::LogContext &lc)
   void RepackRequest::setExpandStartedAndChangeStatus()
   void RepackRequest::fillLastExpandedFSeqAndTotalStatsFile(uint64_t &fSeq, TotalStatsFiles &totalStatsFiles)
   void RepackRequest::update()

scheduler/PostgresSchedDB/RepackRequestPromotionStatistics.cpp
   RepackRequestPromotionStatistics::RepackRequestPromotionStatistics()
   SchedulerDatabase::RepackRequestStatistics::PromotionToToExpandResult RepackRequestPromotionStatistics::promotePendingRequestsForExpansion(size_t requestCount,
     log::LogContext &lc)

scheduler/PostgresSchedDB/RetrieveJob.cpp
   RetrieveJob::RetrieveJob()
   void RetrieveJob::asyncSetSuccessful()
   void RetrieveJob::failTransfer(const std::string &failureReason, log::LogContext &lc)
   void RetrieveJob::failReport(const std::string &failureReason, log::LogContext &lc)
   void RetrieveJob::abort(const std::string &abortReason, log::LogContext &lc)
   void RetrieveJob::fail()

scheduler/PostgresSchedDB/RetrieveJobQueueItor.cpp
   RetrieveJobQueueItor::RetrieveJobQueueItor()
   const std::string &RetrieveJobQueueItor::qid() const
   bool RetrieveJobQueueItor::end() const
   void RetrieveJobQueueItor::operator++()
   const common::dataStructures::RetrieveJob &RetrieveJobQueueItor::operator*() const

scheduler/PostgresSchedDB/RetrieveMount.cpp
   const SchedulerDatabase::RetrieveMount::MountInfo &RetrieveMount::getMountInfo()
   bool RetrieveMount::reserveDiskSpace(const cta::DiskSpaceReservationRequest &request,
         const std::string &externalFreeDiskSpaceScript, log::LogContext& logContext)
   bool RetrieveMount::testReserveDiskSpace(const cta::DiskSpaceReservationRequest &request,
         const std::string &externalFreeDiskSpaceScript, log::LogContext& logContext)
   void RetrieveMount::requeueJobBatch(std::list<std::unique_ptr<SchedulerDatabase::RetrieveJob>>& jobBatch,
         log::LogContext& logContext)
   void RetrieveMount::setDriveStatus(common::dataStructures::DriveStatus status, common::dataStructures::MountType mountType,
                                   time_t completionTime, const std::optional<std::string> & reason)
   void RetrieveMount::setTapeSessionStats(const castor::tape::tapeserver::daemon::TapeSessionStats &stats)
   void RetrieveMount::flushAsyncSuccessReports(std::list<SchedulerDatabase::RetrieveJob *> & jobsBatch, log::LogContext & lc)
   void RetrieveMount::addDiskSystemToSkip(const DiskSystemToSkip &diskSystemToSkip)
   void RetrieveMount::putQueueToSleep(const std::string &diskSystemName, const uint64_t sleepTime, log::LogContext &logContext)

scheduler/PostgresSchedDB/RetrieveRequest.cpp
   void RetrieveRequest::update() {
   void RetrieveRequest::setFailureReason(const std::string & reason) {
   bool RetrieveRequest::addJobFailure(uint32_t copyNumber, uint64_t mountId, const std::string & failureReason, log::LogContext & lc) {
   void RetrieveRequest::setRepackInfo(const cta::postgresscheddb::RetrieveRequest::RetrieveReqRepackInfo & repackInfo) {
   void RetrieveRequest::setJobStatus(uint32_t copyNumber, const cta::postgresscheddb::RetrieveJobStatus &status) {
   void RetrieveRequest::setFirstSelectedTime(const uint64_t firstSelectedTime) {
   void RetrieveRequest::setCompletedTime(const uint64_t completedTime) {
   void RetrieveRequest::setReportedTime(const uint64_t reportedTime) {
   void RetrieveRequest::setFailed() {
   std::list<RetrieveRequest::RetrieveReqJobDump> RetrieveRequest::dumpJobs() {