Update of /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/PostgresqlAdaptorLayer
In directory sc8-pr-cvs1:/tmp/cvs-serv29656/DatabaseAdaptors/PostgresqlAdaptorLayer
Modified Files:
PostgresqlSQLExpression.py
Log Message:
Fixed bug #776592: was impossible to add raw '*' and '?' characters in
a LIKE statement
Index: PostgresqlSQLExpression.py
===================================================================
RCS file: /cvsroot/modeling/ProjectModeling/Modeling/DatabaseAdaptors/PostgresqlAdaptorLayer/PostgresqlSQLExpression.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** PostgresqlSQLExpression.py 12 Jun 2003 11:40:31 -0000 1.4
--- PostgresqlSQLExpression.py 24 Jul 2003 12:07:25 -0000 1.5
***************
*** 38,41 ****
--- 38,53 ----
import re
+ esc_question_tmp_replct='MDL_ESCAPED_QUESTION_MARK_MDL'
+ esc_star_tmp_replct='MDL_ESCAPED_STAR_MDL'
+
+ star=re.compile('\*')
+ escaped_star=re.compile(r'\\\*')
+ question_mark=re.compile('\?')
+ escaped_question_mark=re.compile(r'\\\?')
+ percent=re.compile('%')
+ underscore=re.compile('_')
+ anti_escaped_star=re.compile(esc_star_tmp_replct)
+ anti_esc_question_mark=re.compile(esc_question_tmp_replct)
+
class PostgresqlSQLExpression(SQLExpression):
"""
***************
*** 85,97 ****
'\%': 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
--- 97,108 ----
'\%': postgresql interprets backslashes in strings
"""
pattern=percent.sub('\\\\\\\\%', pattern)
pattern=underscore.sub('\_', pattern)
+ pattern=escaped_question_mark.sub(esc_question_tmp_replct, pattern)
pattern=question_mark.sub('_', pattern)
+ pattern=escaped_star.sub(esc_star_tmp_replct, pattern)
pattern=star.sub('%', pattern)
+ pattern=anti_escaped_star.sub('*', pattern)
+ pattern=anti_esc_question_mark.sub('?', pattern)
return pattern
|