diff Resources/Orthanc/Databases/ISqlLookupFormatter.cpp @ 354:2a3bbb4104fa

fix changeset 389c037387ea
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 25 Nov 2021 13:17:51 +0100
parents 389c037387ea
children 1280b40d6696
line wrap: on
line diff
--- a/Resources/Orthanc/Databases/ISqlLookupFormatter.cpp	Mon Nov 15 12:22:44 2021 +0100
+++ b/Resources/Orthanc/Databases/ISqlLookupFormatter.cpp	Thu Nov 25 13:17:51 2021 +0100
@@ -67,7 +67,8 @@
   static bool FormatComparison(std::string& target,
                                ISqlLookupFormatter& formatter,
                                const DatabaseConstraint& constraint,
-                               size_t index)
+                               size_t index,
+                               bool escapeBrackets)
   {
     std::string tag = "t" + boost::lexical_cast<std::string>(index);
 
@@ -172,14 +173,6 @@
             {
               escaped += "_";
             }
-            else if (value[i] == '[')
-            {
-              escaped += "\\[";
-            }
-            else if (value[i] == ']')
-            {
-              escaped += "\\]";
-            }
             else if (value[i] == '%')
             {
               escaped += "\\%";
@@ -192,6 +185,14 @@
             {
               escaped += "\\\\";
             }
+            else if (escapeBrackets && value[i] == '[')
+            {
+              escaped += "\\[";
+            }
+            else if (escapeBrackets && value[i] == ']')
+            {
+              escaped += "\\]";
+            }
             else
             {
               escaped += value[i];
@@ -299,6 +300,8 @@
     assert(upperLevel <= queryLevel &&
            queryLevel <= lowerLevel);
 
+    const bool escapeBrackets = formatter.IsEscapeBrackets();
+    
     std::string joins, comparisons;
 
     size_t count = 0;
@@ -307,7 +310,7 @@
     {
       std::string comparison;
       
-      if (FormatComparison(comparison, formatter, lookup[i], count))
+      if (FormatComparison(comparison, formatter, lookup[i], count, escapeBrackets))
       {
         std::string join;
         FormatJoin(join, lookup[i], count);