[Modeling-cvs] ProjectModeling/Modeling/DatabaseAdaptors/PostgresqlAdaptorLayer PostgresqlSQLExpress
Status: Abandoned
Brought to you by:
sbigaret
From: <sbi...@us...> - 2003-06-12 11:41:06
|
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): """ |