changeset 800:86555367e0e9

cppcheck
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 10 Apr 2026 18:40:26 +0200
parents ade27a46cee7
children f9e4d92b0e97
files Framework/Common/DatabaseManager.h Framework/Common/ImplicitTransaction.h Framework/Common/ResultBase.h Framework/MySQL/MySQLDatabase.cpp Framework/MySQL/MySQLDatabase.h Framework/MySQL/MySQLStatement.cpp Framework/MySQL/MySQLStatement.h Framework/MySQL/MySQLTransaction.h Framework/Odbc/OdbcDatabase.h Framework/Odbc/OdbcEnvironment.cpp Framework/Odbc/OdbcResult.h Framework/Plugins/DatabaseBackendAdapterV3.cpp Framework/Plugins/DatabaseBackendAdapterV4.cpp Framework/Plugins/DynamicIndexConnectionsPool.h Framework/Plugins/ISqlLookupFormatter.cpp Framework/Plugins/IndexBackend.cpp Framework/Plugins/IndexBackend.h Framework/Plugins/IndexConnectionsPool.h Framework/Plugins/IndexUnitTests.h Framework/Plugins/PluginInitialization.cpp Framework/Plugins/StorageBackend.cpp Framework/PostgreSQL/PostgreSQLDatabase.h Framework/PostgreSQL/PostgreSQLResult.cpp Framework/PostgreSQL/PostgreSQLStatement.cpp Framework/PostgreSQL/PostgreSQLStatement.h Framework/PostgreSQL/PostgreSQLTransaction.h Framework/SQLite/SQLiteStatement.cpp Framework/SQLite/SQLiteStatement.h PostgreSQL/Plugins/PostgreSQLIndex.cpp PostgreSQL/Plugins/PostgreSQLIndex.h
diffstat 30 files changed, 158 insertions(+), 154 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Common/DatabaseManager.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Common/DatabaseManager.h	Fri Apr 10 18:40:26 2026 +0200
@@ -269,7 +269,7 @@
                           const std::string& sql,
                           const Query::Parameters& parametersTypes);
 
-      virtual ~StandaloneStatement();
+      virtual ~StandaloneStatement() ORTHANC_OVERRIDE;
 
       void Execute()
       {
--- a/Framework/Common/ImplicitTransaction.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Common/ImplicitTransaction.h	Fri Apr 10 18:40:26 2026 +0200
@@ -53,7 +53,7 @@
   public:
     ImplicitTransaction();
 
-    virtual ~ImplicitTransaction();
+    virtual ~ImplicitTransaction() ORTHANC_OVERRIDE;
     
     virtual bool IsImplicit() const ORTHANC_OVERRIDE
     {
--- a/Framework/Common/ResultBase.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Common/ResultBase.h	Fri Apr 10 18:40:26 2026 +0200
@@ -50,7 +50,7 @@
     void SetFieldsCount(size_t count);
     
   public:
-    virtual ~ResultBase()
+    virtual ~ResultBase() ORTHANC_OVERRIDE
     {
       ClearFields();
     }
--- a/Framework/MySQL/MySQLDatabase.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/MySQL/MySQLDatabase.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -163,7 +163,7 @@
     {
       // Fallback to TCP connection if no UNIX socket is provided
       unsigned int protocol = MYSQL_PROTOCOL_TCP;
-      mysql_options(mysql_, MYSQL_OPT_PROTOCOL, (unsigned int *) &protocol);
+      mysql_options(mysql_, MYSQL_OPT_PROTOCOL, reinterpret_cast<const void*>(&protocol));
     }
 
     if (parameters_.IsSsl())
@@ -172,15 +172,15 @@
       {
 #if (MYSQL_VERSION_ID > 50110 && MYSQL_VERSION_ID < 80000)  // Removed in MySQL client 8.0
         my_bool verifyCert = 1;
-        mysql_options(mysql_, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, (void *) &verifyCert);
+        mysql_options(mysql_, MYSQL_OPT_SSL_VERIFY_SERVER_CERT, reinterpret_cast<const void*>(&verifyCert));
 #endif
         
-        mysql_options(mysql_, MYSQL_OPT_SSL_CA, (void *)(parameters_.GetSslCaCertificates()));
+        mysql_options(mysql_, MYSQL_OPT_SSL_CA, reinterpret_cast<const void*>(parameters_.GetSslCaCertificates()));
       }
 
 #if (MYSQL_VERSION_ID > 50110 && MYSQL_VERSION_ID < 80000)  // Removed in MySQL client 8.0
       my_bool enforceTls = 1;
-      mysql_options(mysql_, MYSQL_OPT_SSL_ENFORCE, (void *) &enforceTls);
+      mysql_options(mysql_, MYSQL_OPT_SSL_ENFORCE, reinterpret_cast<const void*>(&enforceTls));
 #endif
     }
 
@@ -402,7 +402,7 @@
   }
 
 
-  bool MySQLDatabase::DoesTableExist(MySQLTransaction& transaction,
+  bool MySQLDatabase::DoesTableExist(const MySQLTransaction& transaction,
                                      const std::string& name)
   {
     if (mysql_ == NULL)
@@ -434,7 +434,7 @@
   }
 
 
-  bool MySQLDatabase::DoesDatabaseExist(MySQLTransaction& transaction,
+  bool MySQLDatabase::DoesDatabaseExist(const MySQLTransaction& transaction,
                                         const std::string& name)
   {
     if (mysql_ == NULL)
@@ -464,7 +464,7 @@
   }
 
 
-  bool MySQLDatabase::DoesTriggerExist(MySQLTransaction& transaction,
+  bool MySQLDatabase::DoesTriggerExist(const MySQLTransaction& transaction,
                                        const std::string& name)
   {
     if (mysql_ == NULL)
--- a/Framework/MySQL/MySQLDatabase.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/MySQL/MySQLDatabase.h	Fri Apr 10 18:40:26 2026 +0200
@@ -54,7 +54,7 @@
   public:
     explicit MySQLDatabase(const MySQLParameters& parameters);
 
-    virtual ~MySQLDatabase();
+    virtual ~MySQLDatabase() ORTHANC_OVERRIDE;
 
     void LogError();
 
@@ -88,13 +88,13 @@
     void ExecuteMultiLines(const std::string& sql,
                            bool arobaseSeparator);
 
-    bool DoesTableExist(MySQLTransaction& transaction,
+    bool DoesTableExist(const MySQLTransaction& transaction,
                         const std::string& name);
 
-    bool DoesDatabaseExist(MySQLTransaction& transaction,
+    bool DoesDatabaseExist(const MySQLTransaction& transaction,
                            const std::string& name);
 
-    bool DoesTriggerExist(MySQLTransaction& transaction,
+    bool DoesTriggerExist(const MySQLTransaction& transaction,
                           const std::string& name);
 
     virtual Dialect GetDialect() const ORTHANC_OVERRIDE
--- a/Framework/MySQL/MySQLStatement.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/MySQL/MySQLStatement.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -295,7 +295,7 @@
     MYSQL_RES*              metadata_;
       
   public:
-    ResultMetadata(MySQLDatabase& db,
+    ResultMetadata(const MySQLDatabase& db,
                    MySQLStatement& statement) :
       metadata_(NULL)
     {
@@ -405,7 +405,7 @@
     if (query.IsReadOnly())
     {
       unsigned long type = (unsigned long) CURSOR_TYPE_READ_ONLY;
-      mysql_stmt_attr_set(statement_, STMT_ATTR_CURSOR_TYPE, (void*) &type);
+      mysql_stmt_attr_set(statement_, STMT_ATTR_CURSOR_TYPE, reinterpret_cast<void*>(&type));
     }
   }
 
@@ -450,7 +450,7 @@
   }
 
 
-  IResult* MySQLStatement::Execute(ITransaction& transaction,
+  IResult* MySQLStatement::Execute(const ITransaction& transaction,
                                    const Dictionary& parameters)
   {
     std::list<long long int>  int64Parameters;
@@ -554,7 +554,7 @@
   }
 
 
-  void MySQLStatement::ExecuteWithoutResult(ITransaction& transaction,
+  void MySQLStatement::ExecuteWithoutResult(const ITransaction& transaction,
                                             const Dictionary& parameters)
   {
     std::unique_ptr<IResult> dummy(Execute(transaction, parameters));
--- a/Framework/MySQL/MySQLStatement.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/MySQL/MySQLStatement.h	Fri Apr 10 18:40:26 2026 +0200
@@ -50,7 +50,7 @@
     MySQLStatement(MySQLDatabase& db,
                    const Query& query);
 
-    virtual ~MySQLStatement();
+    virtual ~MySQLStatement() ORTHANC_OVERRIDE;
 
     MYSQL_STMT* GetObject();
 
@@ -61,10 +61,10 @@
 
     IValue* FetchResultField(size_t i);
 
-    IResult* Execute(ITransaction& transaction,
+    IResult* Execute(const ITransaction& transaction,
                      const Dictionary& parameters);
 
-    void ExecuteWithoutResult(ITransaction& transaction,
+    void ExecuteWithoutResult(const ITransaction& transaction,
                               const Dictionary& parameters);
   };
 }
--- a/Framework/MySQL/MySQLTransaction.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/MySQL/MySQLTransaction.h	Fri Apr 10 18:40:26 2026 +0200
@@ -42,7 +42,7 @@
     explicit MySQLTransaction(MySQLDatabase& db,
                               TransactionType type);
 
-    virtual ~MySQLTransaction();
+    virtual ~MySQLTransaction() ORTHANC_OVERRIDE;
 
     virtual bool IsImplicit() const ORTHANC_OVERRIDE
     {
--- a/Framework/Odbc/OdbcDatabase.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Odbc/OdbcDatabase.h	Fri Apr 10 18:40:26 2026 +0200
@@ -48,7 +48,7 @@
     OdbcDatabase(OdbcEnvironment& environment,
                  const std::string& connectionString);
 
-    virtual ~OdbcDatabase();
+    virtual ~OdbcDatabase() ORTHANC_OVERRIDE;
 
     SQLHDBC GetHandle()
     {
--- a/Framework/Odbc/OdbcEnvironment.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Odbc/OdbcEnvironment.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -44,7 +44,7 @@
     }
       
     /* We want ODBC 3 support */
-    if (!SQL_SUCCEEDED(SQLSetEnvAttr(handle_, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0)))
+    if (!SQL_SUCCEEDED(SQLSetEnvAttr(handle_, SQL_ATTR_ODBC_VERSION, reinterpret_cast<void*>(SQL_OV_ODBC3), 0)))
     {
       SQLFreeHandle(SQL_HANDLE_ENV, handle_);
       throw Orthanc::OrthancException(Orthanc::ErrorCode_Database,
--- a/Framework/Odbc/OdbcResult.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Odbc/OdbcResult.h	Fri Apr 10 18:40:26 2026 +0200
@@ -59,7 +59,7 @@
     OdbcResult(OdbcStatement& statement,
                Dialect dialect);
     
-    virtual ~OdbcResult();
+    virtual ~OdbcResult() ORTHANC_OVERRIDE;
       
     virtual void SetExpectedType(size_t field,
                                  ValueType type) ORTHANC_OVERRIDE;
--- a/Framework/Plugins/DatabaseBackendAdapterV3.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/DatabaseBackendAdapterV3.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -645,7 +645,7 @@
     std::unique_ptr<Output>                          output_;
     
   public:
-    Transaction(IndexConnectionsPool& pool) :
+    explicit Transaction(IndexConnectionsPool& pool) :
       pool_(pool),
       accessor_(new IndexConnectionsPool::Accessor(pool)),
       output_(new Output)
@@ -677,7 +677,7 @@
                                                  uint32_t* target /* out */)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswersCount(*target);
   }
 
@@ -687,7 +687,7 @@
                                                      uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerAttachment(*target, index);
   }
 
@@ -697,7 +697,7 @@
                                                  uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerChange(*target, index);
   }
 
@@ -711,7 +711,7 @@
     assert(group != NULL);
     assert(element != NULL);
     assert(value != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerDicomTag(*group, *element, *value, index);
   }
 
@@ -721,7 +721,7 @@
                                                            uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerExportedResource(*target, index);
   }
 
@@ -731,7 +731,7 @@
                                                 uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerInt32(*target, index);
   }
 
@@ -741,7 +741,7 @@
                                                 uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerInt64(*target, index);
   }
 
@@ -751,7 +751,7 @@
                                                            uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerMatchingResource(*target, index);
   }
 
@@ -763,7 +763,7 @@
   {
     assert(metadata != NULL);
     assert(value != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerMetadata(*metadata, *value, index);
   }
 
@@ -773,7 +773,7 @@
                                                  uint32_t index)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadAnswerString(*target, index);
   }
 
@@ -782,7 +782,7 @@
                                                 uint32_t* target /* out */)
   {
     assert(target != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadEventsCount(*target);
   }
 
@@ -792,7 +792,7 @@
                                           uint32_t index)
   {
     assert(event != NULL);
-    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<const DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction& that = *reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
     return that.GetOutput().ReadEvent(*event, index);
   }
 
@@ -944,7 +944,7 @@
   
   static OrthancPluginErrorCode Rollback(OrthancPluginDatabaseTransaction* transaction)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -959,7 +959,7 @@
   static OrthancPluginErrorCode Commit(OrthancPluginDatabaseTransaction* transaction,
                                        int64_t fileSizeDelta /* TODO - not used? */)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -976,7 +976,7 @@
                                               const OrthancPluginAttachment* attachment,
                                               int64_t revision)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -990,7 +990,7 @@
   
   static OrthancPluginErrorCode ClearChanges(OrthancPluginDatabaseTransaction* transaction)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1004,7 +1004,7 @@
   
   static OrthancPluginErrorCode ClearExportedResources(OrthancPluginDatabaseTransaction* transaction)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1019,7 +1019,7 @@
   static OrthancPluginErrorCode ClearMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
                                                    int64_t resourceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1038,7 +1038,7 @@
                                                const char* hashSeries,
                                                const char* hashInstance)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1063,7 +1063,7 @@
                                                  int64_t id,
                                                  int32_t contentType)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1079,7 +1079,7 @@
                                                int64_t id,
                                                int32_t metadataType)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1094,7 +1094,7 @@
   static OrthancPluginErrorCode DeleteResource(OrthancPluginDatabaseTransaction* transaction,
                                                int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1109,7 +1109,7 @@
   static OrthancPluginErrorCode GetAllMetadata(OrthancPluginDatabaseTransaction* transaction,
                                                int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1132,7 +1132,7 @@
   static OrthancPluginErrorCode GetAllPublicIds(OrthancPluginDatabaseTransaction* transaction,
                                                 OrthancPluginResourceType resourceType)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1153,7 +1153,7 @@
                                                          uint64_t since,
                                                          uint64_t limit)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1174,7 +1174,7 @@
                                            int64_t since,
                                            uint32_t maxResults)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1193,7 +1193,7 @@
   static OrthancPluginErrorCode GetChildrenInternalId(OrthancPluginDatabaseTransaction* transaction,
                                                       int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1213,7 +1213,7 @@
                                                     int64_t resourceId,
                                                     int32_t metadata)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1232,7 +1232,7 @@
   static OrthancPluginErrorCode GetChildrenPublicId(OrthancPluginDatabaseTransaction* transaction,
                                                     int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1253,7 +1253,7 @@
                                                      int64_t since,
                                                      uint32_t maxResults)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1271,7 +1271,7 @@
   
   static OrthancPluginErrorCode GetLastChange(OrthancPluginDatabaseTransaction* transaction)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1286,7 +1286,7 @@
   static OrthancPluginErrorCode GetLastChangeIndex(OrthancPluginDatabaseTransaction* transaction,
                                                    int64_t* target)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1300,7 +1300,7 @@
   
   static OrthancPluginErrorCode GetLastExportedResource(OrthancPluginDatabaseTransaction* transaction)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1315,7 +1315,7 @@
   static OrthancPluginErrorCode GetMainDicomTags(OrthancPluginDatabaseTransaction* transaction,
                                                  int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1330,7 +1330,7 @@
   static OrthancPluginErrorCode GetPublicId(OrthancPluginDatabaseTransaction* transaction,
                                             int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1346,7 +1346,7 @@
                                                   uint64_t* target /* out */,
                                                   OrthancPluginResourceType resourceType)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1362,7 +1362,7 @@
                                                 OrthancPluginResourceType* target /* out */,
                                                 uint64_t resourceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1377,7 +1377,7 @@
   static OrthancPluginErrorCode GetTotalCompressedSize(OrthancPluginDatabaseTransaction* transaction,
                                                        uint64_t* target /* out */)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1392,7 +1392,7 @@
   static OrthancPluginErrorCode GetTotalUncompressedSize(OrthancPluginDatabaseTransaction* transaction,
                                                          uint64_t* target /* out */)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1408,7 +1408,7 @@
                                                 uint8_t* target,
                                                 uint64_t threshold)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1425,7 +1425,7 @@
                                                    uint8_t* target,
                                                    int64_t resourceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1442,7 +1442,7 @@
                                                    uint8_t* target,
                                                    int64_t resourceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1458,7 +1458,7 @@
   static OrthancPluginErrorCode ListAvailableAttachments(OrthancPluginDatabaseTransaction* transaction,
                                                          int64_t resourceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1479,7 +1479,7 @@
                                           OrthancPluginResourceType resourceType,
                                           const char* date)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1501,7 +1501,7 @@
                                                     const char* seriesInstanceUid,
                                                     const char* sopInstanceUid)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1519,7 +1519,7 @@
                                                  int64_t resourceId,
                                                  int32_t contentType)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1535,7 +1535,7 @@
                                                      const char* serverIdentifier,
                                                      int32_t property)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1558,7 +1558,7 @@
                                                int64_t id,
                                                int32_t metadata)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1581,7 +1581,7 @@
                                              int64_t* parentId /* out */,
                                              int64_t id)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1608,7 +1608,7 @@
                                                OrthancPluginResourceType* type /* out */,
                                                const char* publicId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1636,7 +1636,7 @@
                                                 uint32_t limit,
                                                 uint8_t requestSomeInstanceId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1664,7 +1664,7 @@
                                                         OrthancPluginResourceType* type /* out */,
                                                         const char* publicId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1695,7 +1695,7 @@
                                                        uint8_t* patientAvailable,
                                                        int64_t* patientId)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1721,7 +1721,7 @@
                                                         int64_t* patientId,
                                                         int64_t patientIdToAvoid)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1747,7 +1747,7 @@
                                                   int32_t property,
                                                   const char* value)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1765,7 +1765,7 @@
                                             const char* value,
                                             int64_t revision)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1781,7 +1781,7 @@
                                                     int64_t id,
                                                     uint8_t isProtected)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
@@ -1801,7 +1801,7 @@
                                                     uint32_t countMetadata,
                                                     const OrthancPluginResourcesContentMetadata* metadata)
   {
-    DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
+    const DatabaseBackendAdapterV3::Transaction* t = reinterpret_cast<DatabaseBackendAdapterV3::Transaction*>(transaction);
 
     try
     {
--- a/Framework/Plugins/DatabaseBackendAdapterV4.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/DatabaseBackendAdapterV4.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -129,63 +129,63 @@
     }
     
   public:
-    Output(Orthanc::DatabasePluginMessages::DeleteAttachment::Response& deleteAttachment)
+    explicit Output(Orthanc::DatabasePluginMessages::DeleteAttachment::Response& deleteAttachment)
     {
       Clear();
       deleteAttachment_ = &deleteAttachment;
     }
     
-    Output(Orthanc::DatabasePluginMessages::DeleteResource::Response& deleteResource)
+    explicit Output(Orthanc::DatabasePluginMessages::DeleteResource::Response& deleteResource)
     {
       Clear();
       deleteResource_ = &deleteResource;
     }
     
-    Output(Orthanc::DatabasePluginMessages::GetChanges::Response& getChanges)
+    explicit Output(Orthanc::DatabasePluginMessages::GetChanges::Response& getChanges)
     {
       Clear();
       getChanges_ = &getChanges;
     }
 
 #if ORTHANC_PLUGINS_HAS_CHANGES_EXTENDED == 1
-    Output(Orthanc::DatabasePluginMessages::GetChangesExtended::Response& getChangesExtended)
+    explicit Output(Orthanc::DatabasePluginMessages::GetChangesExtended::Response& getChangesExtended)
     {
       Clear();
       getChangesExtended_ = &getChangesExtended;
     }
 #endif
 
-    Output(Orthanc::DatabasePluginMessages::GetExportedResources::Response& getExportedResources)
+    explicit Output(Orthanc::DatabasePluginMessages::GetExportedResources::Response& getExportedResources)
     {
       Clear();
       getExportedResources_ = &getExportedResources;
     }
     
-    Output(Orthanc::DatabasePluginMessages::GetLastChange::Response& getLastChange)
+    explicit Output(Orthanc::DatabasePluginMessages::GetLastChange::Response& getLastChange)
     {
       Clear();
       getLastChange_ = &getLastChange;
     }
     
-    Output(Orthanc::DatabasePluginMessages::GetLastExportedResource::Response& getLastExportedResource)
+    explicit Output(Orthanc::DatabasePluginMessages::GetLastExportedResource::Response& getLastExportedResource)
     {
       Clear();
       getLastExportedResource_ = &getLastExportedResource;
     }
     
-    Output(Orthanc::DatabasePluginMessages::GetMainDicomTags::Response& getMainDicomTags)
+    explicit Output(Orthanc::DatabasePluginMessages::GetMainDicomTags::Response& getMainDicomTags)
     {
       Clear();
       getMainDicomTags_ = &getMainDicomTags;
     }
     
-    Output(Orthanc::DatabasePluginMessages::LookupAttachment::Response& lookupAttachment)
+    explicit Output(Orthanc::DatabasePluginMessages::LookupAttachment::Response& lookupAttachment)
     {
       Clear();
       lookupAttachment_ = &lookupAttachment;
     }
     
-    Output(Orthanc::DatabasePluginMessages::LookupResources::Response& lookupResources)
+    explicit Output(Orthanc::DatabasePluginMessages::LookupResources::Response& lookupResources)
     {
       Clear();
       lookupResources_ = &lookupResources;
@@ -1467,10 +1467,10 @@
       return OrthancPluginErrorCode_InternalError;
     }
 
-    BaseIndexConnectionsPool& pool = *reinterpret_cast<BaseIndexConnectionsPool*>(rawPool);
-
     try
     {
+      BaseIndexConnectionsPool& pool = *reinterpret_cast<BaseIndexConnectionsPool*>(rawPool);
+
       Orthanc::DatabasePluginMessages::Response response;
       
       switch (request.type())
@@ -1481,7 +1481,7 @@
           
         case Orthanc::DatabasePluginMessages::REQUEST_TRANSACTION:
         {
-          BaseIndexConnectionsPool::Accessor& transaction = *reinterpret_cast<BaseIndexConnectionsPool::Accessor*>(request.transaction_request().transaction());
+          const BaseIndexConnectionsPool::Accessor& transaction = *reinterpret_cast<const BaseIndexConnectionsPool::Accessor*>(request.transaction_request().transaction());
           ProcessTransactionOperation(*response.mutable_transaction_response(), request.transaction_request(),
                                       transaction.GetBackend(), transaction.GetManager());
           break;
--- a/Framework/Plugins/DynamicIndexConnectionsPool.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/DynamicIndexConnectionsPool.h	Fri Apr 10 18:40:26 2026 +0200
@@ -59,7 +59,7 @@
                                 size_t maxConnectionsCount,
                                 unsigned int houseKeepingDelaySeconds);
 
-    virtual ~DynamicIndexConnectionsPool();
+    virtual ~DynamicIndexConnectionsPool() ORTHANC_OVERRIDE;
 
     virtual void OpenConnections(bool hasIdentifierTags,
                                  const std::list<IdentifierTag>& identifierTags) ORTHANC_OVERRIDE;
--- a/Framework/Plugins/ISqlLookupFormatter.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/ISqlLookupFormatter.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -807,7 +807,7 @@
     assert(upperLevel <= queryLevel &&
            queryLevel <= lowerLevel);
 
-    std::string ordering;
+    std::string orderingSql;
     std::string orderingJoins;
 
     if (request.ordering_size() > 0)
@@ -869,22 +869,22 @@
 
       if (formatter.SupportsNullsLast())
       {
-        ordering = "ROW_NUMBER() OVER (ORDER BY " + orderByFieldsString + " NULLS LAST) AS rowNumber";
+        orderingSql = "ROW_NUMBER() OVER (ORDER BY " + orderByFieldsString + " NULLS LAST) AS rowNumber";
       }
       else
       {
-        ordering = "ROW_NUMBER() OVER (ORDER BY " + orderByFieldsString + ") AS rowNumber";
+        orderingSql = "ROW_NUMBER() OVER (ORDER BY " + orderByFieldsString + ") AS rowNumber";
       }
     }
     else
     {
-      ordering = "ROW_NUMBER() OVER (ORDER BY " + strQueryLevel + ".publicId) AS rowNumber";  // we need a default ordering in order to make default queries repeatable when using since&limit
+      orderingSql = "ROW_NUMBER() OVER (ORDER BY " + strQueryLevel + ".publicId) AS rowNumber";  // we need a default ordering in order to make default queries repeatable when using since&limit
     }
 
     sql = ("SELECT " +
            strQueryLevel + ".publicId, " +
            strQueryLevel + ".internalId, " +
-           ordering +
+           orderingSql +
            " FROM Resources AS " + strQueryLevel);
 
 
--- a/Framework/Plugins/IndexBackend.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/IndexBackend.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -163,7 +163,7 @@
 
   void IndexBackend::ReadChangesInternal(IDatabaseBackendOutput& output,
                                          bool& done,
-                                         DatabaseManager& manager,
+                                         const DatabaseManager& manager,
                                          DatabaseManager::CachedStatement& statement,
                                          const Dictionary& args,
                                          uint32_t limit,
@@ -1399,25 +1399,25 @@
       case OrthancPluginIdentifierConstraint_Equal:
         header += "d.value = ${value}";
         statement.reset(new DatabaseManager::CachedStatement(
-                          STATEMENT_FROM_HERE, manager, header.c_str()));
+                          STATEMENT_FROM_HERE, manager, header));
         break;
         
       case OrthancPluginIdentifierConstraint_SmallerOrEqual:
         header += "d.value <= ${value}";
         statement.reset(new DatabaseManager::CachedStatement(
-                          STATEMENT_FROM_HERE, manager, header.c_str()));
+                          STATEMENT_FROM_HERE, manager, header));
         break;
         
       case OrthancPluginIdentifierConstraint_GreaterOrEqual:
         header += "d.value >= ${value}";
         statement.reset(new DatabaseManager::CachedStatement(
-                          STATEMENT_FROM_HERE, manager, header.c_str()));
+                          STATEMENT_FROM_HERE, manager, header));
         break;
         
       case OrthancPluginIdentifierConstraint_Wildcard:
         header += "d.value LIKE ${value}";
         statement.reset(new DatabaseManager::CachedStatement(
-                          STATEMENT_FROM_HERE, manager, header.c_str()));
+                          STATEMENT_FROM_HERE, manager, header));
         break;
         
       default:
--- a/Framework/Plugins/IndexBackend.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/IndexBackend.h	Fri Apr 10 18:40:26 2026 +0200
@@ -73,7 +73,7 @@
   private:
     void ReadChangesInternal(IDatabaseBackendOutput& output,
                              bool& done,
-                             DatabaseManager& manager,
+                             const DatabaseManager& manager,
                              DatabaseManager::CachedStatement& statement,
                              const Dictionary& args,
                              uint32_t limit,
@@ -577,7 +577,7 @@
                                                         const std::list<IdentifierTag>& identifierTags);
 
 #if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1
-    ISqlLookupFormatter* CreateLookupFormatter(Dialect dialect);
+    static ISqlLookupFormatter* CreateLookupFormatter(Dialect dialect);
 #endif
   };
 }
--- a/Framework/Plugins/IndexConnectionsPool.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/IndexConnectionsPool.h	Fri Apr 10 18:40:26 2026 +0200
@@ -62,7 +62,7 @@
                          size_t countConnections,
                          unsigned int houseKeepingDelaySeconds);
 
-    virtual ~IndexConnectionsPool();
+    virtual ~IndexConnectionsPool() ORTHANC_OVERRIDE;
 
     virtual void OpenConnections(bool hasIdentifierTags,
                                  const std::list<IdentifierTag>& identifierTags) ORTHANC_OVERRIDE;
--- a/Framework/Plugins/IndexUnitTests.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/IndexUnitTests.h	Fri Apr 10 18:40:26 2026 +0200
@@ -359,16 +359,16 @@
     CheckBlob(blob);
   }
 
-  std::string s;
-  ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseSchemaVersion));
-  ASSERT_EQ("6", s);
+  std::string a;
+  ASSERT_TRUE(db.LookupGlobalProperty(a, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseSchemaVersion));
+  ASSERT_EQ("6", a);
 
   db.SetGlobalProperty(*manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9, "Hello");
-  ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9));
-  ASSERT_EQ("Hello", s);
+  ASSERT_TRUE(db.LookupGlobalProperty(a, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9));
+  ASSERT_EQ("Hello", a);
   db.SetGlobalProperty(*manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9, "HelloWorld");
-  ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9));
-  ASSERT_EQ("HelloWorld", s);
+  ASSERT_TRUE(db.LookupGlobalProperty(a, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal9));
+  ASSERT_EQ("HelloWorld", a);
 
   ASSERT_EQ(0u, db.GetAllResourcesCount(*manager));
   ASSERT_EQ(0u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Patient));
@@ -408,9 +408,9 @@
   ASSERT_EQ(1u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Study));
   ASSERT_EQ(2u, db.GetResourcesCount(*manager, OrthancPluginResourceType_Series));
 
-  ASSERT_FALSE(db.GetParentPublicId(s, *manager, studyId));
-  ASSERT_TRUE(db.GetParentPublicId(s, *manager, seriesId));  ASSERT_EQ("study", s);
-  ASSERT_TRUE(db.GetParentPublicId(s, *manager, series2Id));  ASSERT_EQ("study", s);
+  ASSERT_FALSE(db.GetParentPublicId(a, *manager, studyId));
+  ASSERT_TRUE(db.GetParentPublicId(a, *manager, seriesId));  ASSERT_EQ("study", a);
+  ASSERT_TRUE(db.GetParentPublicId(a, *manager, series2Id));  ASSERT_EQ("study", a);
 
   std::list<std::string> children;
   db.GetChildren(children, *manager, studyId);
@@ -449,9 +449,9 @@
   db.SetMetadata(*manager, studyId, Orthanc::MetadataType_ModifiedFrom, "modified", 42);
   db.SetMetadata(*manager, studyId, Orthanc::MetadataType_LastUpdate, "update2", 43);
   int64_t revision = -1;
-  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, seriesId, Orthanc::MetadataType_LastUpdate));
-  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
-  ASSERT_EQ("update2", s);
+  ASSERT_FALSE(db.LookupMetadata(a, revision, *manager, seriesId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_TRUE(db.LookupMetadata(a, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_EQ("update2", a);
 
 #if HAS_REVISIONS == 1
   ASSERT_EQ(43, revision);
@@ -460,8 +460,8 @@
 #endif
 
   db.SetMetadata(*manager, studyId, Orthanc::MetadataType_LastUpdate, reinterpret_cast<const char*>(UTF8), 44);
-  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
-  ASSERT_STREQ(reinterpret_cast<const char*>(UTF8), s.c_str());
+  ASSERT_TRUE(db.LookupMetadata(a, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_STREQ(reinterpret_cast<const char*>(UTF8), a.c_str());
 
 #if HAS_REVISIONS == 1
   ASSERT_EQ(44, revision);
@@ -496,11 +496,11 @@
   db.ListAvailableMetadata(md, *manager, seriesId);
   ASSERT_EQ(0u, md.size());
 
-  ASSERT_TRUE(db.LookupMetadata(s, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_TRUE(db.LookupMetadata(a, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
   db.DeleteMetadata(*manager, studyId, Orthanc::MetadataType_LastUpdate);
-  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_FALSE(db.LookupMetadata(a, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
   db.DeleteMetadata(*manager, seriesId, Orthanc::MetadataType_LastUpdate);
-  ASSERT_FALSE(db.LookupMetadata(s, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
+  ASSERT_FALSE(db.LookupMetadata(a, revision, *manager, studyId, Orthanc::MetadataType_LastUpdate));
 
   db.ListAvailableMetadata(md, *manager, studyId);
   ASSERT_EQ(1u, md.size());
@@ -786,12 +786,12 @@
     // column in "ServerProperties" is "TEXT" instead of "LONGTEXT"
     db.SetGlobalProperty(*manager, "some-server", Orthanc::GlobalProperty_DatabaseInternal8, longProperty.c_str());
 
-    ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal8));
-    ASSERT_EQ(longProperty, s);
+    ASSERT_TRUE(db.LookupGlobalProperty(a, *manager, MISSING_SERVER_IDENTIFIER, Orthanc::GlobalProperty_DatabaseInternal8));
+    ASSERT_EQ(longProperty, a);
 
-    s.clear();
-    ASSERT_TRUE(db.LookupGlobalProperty(s, *manager, "some-server", Orthanc::GlobalProperty_DatabaseInternal8));
-    ASSERT_EQ(longProperty, s);
+    a.clear();
+    ASSERT_TRUE(db.LookupGlobalProperty(a, *manager, "some-server", Orthanc::GlobalProperty_DatabaseInternal8));
+    ASSERT_EQ(longProperty, a);
   }
 
   for (size_t level = 0; level < 4; level++)
@@ -1069,7 +1069,7 @@
 #if ORTHANC_PLUGINS_HAS_RESERVE_QUEUE_VALUE == 1
   {
     std::string value;
-    uint64_t valueIdA, valueIdB, valueIdC, valueIdD, valueIdE, valueIdFail;
+    uint64_t valueIdA, valueIdB, valueIdC, valueIdD, valueIdE;
 
     {
       manager->StartTransaction(TransactionType_ReadWrite);
@@ -1111,6 +1111,8 @@
       ASSERT_EQ("d", value);
       ASSERT_TRUE(db.ReserveQueueValue(value, valueIdC, *manager, "test", false, 1));
       ASSERT_EQ("c", value);
+
+      uint64_t valueIdFail;
       ASSERT_FALSE(db.ReserveQueueValue(value, valueIdFail, *manager, "test", false, 1));
 
       manager->CommitTransaction();
--- a/Framework/Plugins/PluginInitialization.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/PluginInitialization.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -155,7 +155,7 @@
                                std::string(isIndex ? "index" : "storage area") +
                                " into a " + dbms + " database");
     
-    OrthancPlugins::SetDescription(pluginName, description.c_str());
+    OrthancPlugins::SetDescription(pluginName, description);
 
     return true;
   }
--- a/Framework/Plugins/StorageBackend.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/Plugins/StorageBackend.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -330,7 +330,7 @@
       bool                         success_;
       
     public:
-      Visitor(OrthancPluginMemoryBuffer64* target) :
+      explicit Visitor(OrthancPluginMemoryBuffer64* target) :
         target_(target),
         success_(false)
       {
@@ -406,7 +406,7 @@
       bool                         success_;
       
     public:
-      Visitor(OrthancPluginMemoryBuffer64* target) :
+      explicit Visitor(OrthancPluginMemoryBuffer64* target) :
         target_(target),
         success_(false)
       {
@@ -520,7 +520,7 @@
       {
       }
 
-      ~Visitor()
+      virtual ~Visitor() ORTHANC_OVERRIDE
       {
         if (data_ != NULL /* this condition is invalidated by "Release()" */ &&
             *data_ != NULL)
@@ -792,7 +792,7 @@
         operation.Execute(*accessor);
         return;  // Success
       }
-      catch (Orthanc::OrthancException& e)
+      catch (const Orthanc::OrthancException& e)
       {
 #if ORTHANC_FRAMEWORK_VERSION_IS_ABOVE(1, 9, 2)
         if (e.GetErrorCode() == Orthanc::ErrorCode_DatabaseCannotSerialize)
--- a/Framework/PostgreSQL/PostgreSQLDatabase.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/PostgreSQL/PostgreSQLDatabase.h	Fri Apr 10 18:40:26 2026 +0200
@@ -57,7 +57,7 @@
     {
     }
 
-    ~PostgreSQLDatabase();
+    virtual ~PostgreSQLDatabase() ORTHANC_OVERRIDE;
 
     void Open();
 
--- a/Framework/PostgreSQL/PostgreSQLResult.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/PostgreSQL/PostgreSQLResult.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -211,7 +211,7 @@
     Oid oid;
     assert(PQfsize(reinterpret_cast<PGresult*>(result_), column) == sizeof(oid));
 
-    oid = *(const Oid*) PQgetvalue(reinterpret_cast<PGresult*>(result_), position_, column);
+    oid = *reinterpret_cast<const Oid*>(PQgetvalue(reinterpret_cast<PGresult*>(result_), position_, column));
     oid = ntohl(oid);
 
     return boost::lexical_cast<std::string>(oid);
--- a/Framework/PostgreSQL/PostgreSQLStatement.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/PostgreSQL/PostgreSQLStatement.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -537,7 +537,7 @@
   };
 
 
-  IResult* PostgreSQLStatement::Execute(ITransaction& transaction,
+  IResult* PostgreSQLStatement::Execute(const ITransaction& transaction,
                                         const Dictionary& parameters)
   {
     for (size_t i = 0; i < formatter_.GetParametersCount(); i++)
@@ -589,7 +589,7 @@
   }
 
 
-  void PostgreSQLStatement::ExecuteWithoutResult(ITransaction& transaction,
+  void PostgreSQLStatement::ExecuteWithoutResult(const ITransaction& transaction,
                                                  const Dictionary& parameters)
   {
     std::unique_ptr<IResult> dummy(Execute(transaction, parameters));
--- a/Framework/PostgreSQL/PostgreSQLStatement.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/PostgreSQL/PostgreSQLStatement.h	Fri Apr 10 18:40:26 2026 +0200
@@ -72,7 +72,7 @@
     PostgreSQLStatement(PostgreSQLDatabase& database,
                         const Query& query);
 
-    ~PostgreSQLStatement();
+    virtual ~PostgreSQLStatement() ORTHANC_OVERRIDE;
     
     void DeclareInputInteger(unsigned int param);
     
@@ -103,10 +103,10 @@
       return database_;
     }
 
-    IResult* Execute(ITransaction& transaction,
+    IResult* Execute(const ITransaction& transaction,
                      const Dictionary& parameters);
 
-    void ExecuteWithoutResult(ITransaction& transaction,
+    void ExecuteWithoutResult(const ITransaction& transaction,
                               const Dictionary& parameters);
   };
 }
--- a/Framework/PostgreSQL/PostgreSQLTransaction.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/PostgreSQL/PostgreSQLTransaction.h	Fri Apr 10 18:40:26 2026 +0200
@@ -45,7 +45,7 @@
     explicit PostgreSQLTransaction(PostgreSQLDatabase& database,
                                    TransactionType type);
 
-    ~PostgreSQLTransaction();
+    virtual ~PostgreSQLTransaction() ORTHANC_OVERRIDE;
 
     virtual bool IsImplicit() const ORTHANC_OVERRIDE
     {
--- a/Framework/SQLite/SQLiteStatement.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/SQLite/SQLiteStatement.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -105,7 +105,7 @@
   }
 
   
-  IResult* SQLiteStatement::Execute(ITransaction& transaction,
+  IResult* SQLiteStatement::Execute(const ITransaction& transaction,
                                     const Dictionary& parameters)
   {
     BindParameters(parameters);
@@ -113,7 +113,7 @@
   }
 
 
-  void SQLiteStatement::ExecuteWithoutResult(ITransaction& transaction,
+  void SQLiteStatement::ExecuteWithoutResult(const ITransaction& transaction,
                                              const Dictionary& parameters)
   {
     BindParameters(parameters);
--- a/Framework/SQLite/SQLiteStatement.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/Framework/SQLite/SQLiteStatement.h	Fri Apr 10 18:40:26 2026 +0200
@@ -52,10 +52,10 @@
 
     Orthanc::SQLite::Statement& GetObject();
 
-    IResult* Execute(ITransaction& transaction,
+    IResult* Execute(const ITransaction& transaction,
                      const Dictionary& parameters);
 
-    void ExecuteWithoutResult(ITransaction& transaction,
+    void ExecuteWithoutResult(const ITransaction& transaction,
                               const Dictionary& parameters);
   };
 }
--- a/PostgreSQL/Plugins/PostgreSQLIndex.cpp	Fri Apr 10 16:43:14 2026 +0200
+++ b/PostgreSQL/Plugins/PostgreSQLIndex.cpp	Fri Apr 10 18:40:26 2026 +0200
@@ -69,7 +69,8 @@
     return PostgreSQLDatabase::CreateDatabaseFactory(parameters_);
   }
 
-  void PostgreSQLIndex::ApplyPrepareIndex(DatabaseManager::Transaction& t, DatabaseManager& manager)
+  void PostgreSQLIndex::ApplyPrepareIndex(DatabaseManager::Transaction& t,
+                                          const DatabaseManager& manager)
   {
     std::string query;
 
--- a/PostgreSQL/Plugins/PostgreSQLIndex.h	Fri Apr 10 16:43:14 2026 +0200
+++ b/PostgreSQL/Plugins/PostgreSQLIndex.h	Fri Apr 10 18:40:26 2026 +0200
@@ -49,7 +49,8 @@
       return true;
     }
 
-    void ApplyPrepareIndex(DatabaseManager::Transaction& t, DatabaseManager& manager);
+    void ApplyPrepareIndex(DatabaseManager::Transaction& t,
+                           const DatabaseManager& manager);
 
   public:
     PostgreSQLIndex(OrthancPluginContext* context,