Update of /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/PostgresqlAdaptorLayer
In directory sc8-pr-cvs1:/tmp/cvs-serv5313/DatabaseAdaptors/PostgresqlAdaptorLayer
Modified Files:
PostgresqlSQLExpression.py
Log Message:
Fixed: PostgresqlSQLExpression was not correctly escaping '%' (postgresql
interprets the backslash char just like python does, hence escaping '%'
requires a double backslash in the SQL query)
Index: PostgresqlSQLExpression.py
===================================================================
RCS file: /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/PostgresqlAdaptorLayer/PostgresqlSQLExpression.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PostgresqlSQLExpression.py 10 Jun 2003 17:30:34 -0000 1.3
--- PostgresqlSQLExpression.py 12 Jun 2003 11:40:31 -0000 1.4
***************
*** 36,39 ****
--- 36,40 ----
from Modeling.SQLExpression import SQLExpression, DateType, CharacterType
import string
+ import re
class PostgresqlSQLExpression(SQLExpression):
***************
*** 79,82 ****
--- 80,99 ----
return attribute.externalType()
+ def sqlPatternFromShellPatternWithEscapeCharacter(self, pattern, escapeChar):
+ """
+ Overrides default behaviour so that '%' is changed to '\\%' instead of
+ '\%': postgresql interprets backslashes in strings
+ """
+ star=re.compile('\*')
+ question_mark=re.compile('\?')
+ percent=re.compile('%')
+ underscore=re.compile('_')
+
+ pattern=percent.sub('\\\\\\\\%', pattern)
+ pattern=underscore.sub('\_', pattern)
+ pattern=question_mark.sub('_', pattern)
+ pattern=star.sub('%', pattern)
+ return pattern
+
def valueTypeForExternalTypeMapping(self):
"""
|