Fixes (old) Informix escaping

This commit is contained in:
Miroslav Stampar
2017-12-11 10:44:47 +01:00
parent 638dbf255a
commit dde1178100
5 changed files with 22 additions and 13 deletions

View File

@@ -7,6 +7,7 @@ See the file 'LICENSE' for copying permission
import re
from lib.core.common import isDBMSVersionAtLeast
from lib.core.common import randomStr
from plugins.generic.syntax import Syntax as GenericSyntax
@@ -24,14 +25,17 @@ class Syntax(GenericSyntax):
def escaper(value):
return "||".join("CHR(%d)" % ord(_) for _ in value)
excluded = {}
for _ in re.findall(r"DBINFO\([^)]+\)", expression):
excluded[_] = randomStr()
expression = expression.replace(_, excluded[_])
retVal = expression
retVal = Syntax._escape(expression, quote, escaper)
if isDBMSVersionAtLeast("11.70"):
excluded = {}
for _ in re.findall(r"DBINFO\([^)]+\)", expression):
excluded[_] = randomStr()
expression = expression.replace(_, excluded[_])
for _ in excluded.items():
retVal = retVal.replace(_[1], _[0])
retVal = Syntax._escape(expression, quote, escaper)
for _ in excluded.items():
retVal = retVal.replace(_[1], _[0])
return retVal