Mercurial > hg > orthanc-databases
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);