# HG changeset patch # User Sebastien Jodogne # Date 1680678467 -7200 # Node ID cd2258ca7894582c8ea73aa3d9a63cb9be5b3c5b # Parent 5e0db9eac1f875616f0fa37e5839c3468ebc9f8c log about missing support for labels diff -r 5e0db9eac1f8 -r cd2258ca7894 OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp --- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp Tue Apr 04 21:43:37 2023 +0200 +++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.cpp Wed Apr 05 09:07:47 2023 +0200 @@ -607,7 +607,7 @@ Transaction transaction(db_, *factory_, TransactionType_ReadOnly); // TODO - Only if not "TransactionType_Implicit" { - ReadOnlyTransaction t(transaction.GetDatabaseTransaction(), transaction.GetContext()); + ReadOnlyTransaction t(transaction.GetDatabaseTransaction(), transaction.GetContext(), db_.HasLabelsSupport()); readOperations->Apply(t); } transaction.Commit(); @@ -618,7 +618,7 @@ Transaction transaction(db_, *factory_, TransactionType_ReadWrite); { - ReadWriteTransaction t(transaction.GetDatabaseTransaction(), transaction.GetContext()); + ReadWriteTransaction t(transaction.GetDatabaseTransaction(), transaction.GetContext(), db_.HasLabelsSupport()); writeOperations->Apply(t); } transaction.Commit(); @@ -938,7 +938,8 @@ } } - if (expandFlags & ExpandResourceFlags_IncludeLabels) + if ((expandFlags & ExpandResourceFlags_IncludeLabels) && + transaction.HasLabelsSupport()) { transaction.ListLabels(target.labels_, internalId); } diff -r 5e0db9eac1f8 -r cd2258ca7894 OrthancServer/Sources/Database/StatelessDatabaseOperations.h --- a/OrthancServer/Sources/Database/StatelessDatabaseOperations.h Tue Apr 04 21:43:37 2023 +0200 +++ b/OrthancServer/Sources/Database/StatelessDatabaseOperations.h Wed Apr 05 09:07:47 2023 +0200 @@ -166,14 +166,17 @@ { private: ITransactionContext& context_; + bool hasLabelsSupport_; protected: IDatabaseWrapper::ITransaction& transaction_; public: explicit ReadOnlyTransaction(IDatabaseWrapper::ITransaction& transaction, - ITransactionContext& context) : + ITransactionContext& context, + bool hasLabelsSupport) : context_(context), + hasLabelsSupport_(hasLabelsSupport), transaction_(transaction) { } @@ -183,6 +186,11 @@ return context_; } + bool HasLabelsSupport() const + { + return hasLabelsSupport_; + } + /** * Higher-level constructions **/ @@ -367,8 +375,9 @@ { public: ReadWriteTransaction(IDatabaseWrapper::ITransaction& transaction, - ITransactionContext& context) : - ReadOnlyTransaction(transaction, context) + ITransactionContext& context, + bool hasLabelsSupport) : + ReadOnlyTransaction(transaction, context, hasLabelsSupport) { } diff -r 5e0db9eac1f8 -r cd2258ca7894 OrthancServer/Sources/main.cpp --- a/OrthancServer/Sources/main.cpp Tue Apr 04 21:43:37 2023 +0200 +++ b/OrthancServer/Sources/main.cpp Wed Apr 05 09:07:47 2023 +0200 @@ -1664,8 +1664,12 @@ } } - bool success = ConfigureServerContext - (database, storageArea, plugins, loadJobsFromDatabase); + if (!database.HasLabelsSupport()) + { + LOG(WARNING) << "The custom database back-end has *no* support for labels"; + } + + bool success = ConfigureServerContext(database, storageArea, plugins, loadJobsFromDatabase); database.Close();