changeset 637:77b9684c57b4

fix PG ODBC
author Alain Mazy <am@orthanc.team>
date Tue, 04 Feb 2025 10:06:33 +0100
parents a79bfa4910c9
children f4b132734936
files Framework/Plugins/IndexBackend.cpp Odbc/Plugins/OdbcIndex.cpp
diffstat 2 files changed, 10 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/Framework/Plugins/IndexBackend.cpp	Mon Feb 03 18:52:22 2025 +0100
+++ b/Framework/Plugins/IndexBackend.cpp	Tue Feb 04 10:06:33 2025 +0100
@@ -2332,15 +2332,6 @@
       }
     }
 
-    void PrepareStatement(DatabaseManager::StandaloneStatement& statement) const
-    {
-      statement.SetReadOnly(true);
-      
-      for (size_t i = 0; i < count_; i++)
-      {
-        statement.SetParameterType(FormatParameter(i), ValueType_Utf8String);
-      }
-    }
 
     const Dictionary& GetDictionary() const
     {
@@ -2457,9 +2448,10 @@
       }
     }
 
-    DatabaseManager::StandaloneStatement statement(manager, sql);
-    formatter.PrepareStatement(statement);
-
+    Query::Parameters parametersTypes;
+    formatter.GetDictionary().GetParametersType(parametersTypes);
+
+    DatabaseManager::StandaloneStatement statement(manager, sql, parametersTypes);
     statement.Execute(formatter.GetDictionary());
 
     while (!statement.IsDone())
@@ -3304,7 +3296,10 @@
 
     sql = "WITH Lookup AS (" + lookupSql + ") SELECT COUNT(*) FROM Lookup";
 
-    DatabaseManager::CachedStatement statement(STATEMENT_FROM_HERE_DYNAMIC(sql), manager, sql);
+    Query::Parameters parametersTypes;
+    formatter.GetDictionary().GetParametersType(parametersTypes);
+
+    DatabaseManager::CachedStatement statement(STATEMENT_FROM_HERE_DYNAMIC(sql), manager, sql, parametersTypes);
     statement.Execute(formatter.GetDictionary());
     response.mutable_count_resources()->set_count(statement.ReadInteger64(0));
   }
--- a/Odbc/Plugins/OdbcIndex.cpp	Mon Feb 03 18:52:22 2025 +0100
+++ b/Odbc/Plugins/OdbcIndex.cpp	Tue Feb 04 10:06:33 2025 +0100
@@ -706,14 +706,14 @@
 #endif
 
 #if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 12, 5)
-  void SQLiteIndex::ExecuteFind(Orthanc::DatabasePluginMessages::TransactionResponse& response,
+  void OdbcIndex::ExecuteFind(Orthanc::DatabasePluginMessages::TransactionResponse& response,
                                 DatabaseManager& manager,
                                 const Orthanc::DatabasePluginMessages::Find_Request& request)
   {
     throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented);
   }
 
-  void SQLiteIndex::ExecuteCount(Orthanc::DatabasePluginMessages::TransactionResponse& response,
+  void OdbcIndex::ExecuteCount(Orthanc::DatabasePluginMessages::TransactionResponse& response,
                                  DatabaseManager& manager,
                                  const Orthanc::DatabasePluginMessages::Find_Request& request)
   {