[Erp5-report] r25473 - /erp5/trunk/products/ZMySQLDA/db.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Feb 6 14:19:20 CET 2009
Author: vincent
Date: Fri Feb 6 14:19:18 2009
New Revision: 25473
URL: http://svn.erp5.org?rev=25473&view=rev
Log:
Fix error position computation: MySQL limits the length of the output SQL chunk, requiring more tricks to find offset error correctly.
Modified:
erp5/trunk/products/ZMySQLDA/db.py
Modified: erp5/trunk/products/ZMySQLDA/db.py
URL: http://svn.erp5.org/erp5/trunk/products/ZMySQLDA/db.py?rev=25473&r1=25472&r2=25473&view=diff
==============================================================================
--- erp5/trunk/products/ZMySQLDA/db.py [utf8] (original)
+++ erp5/trunk/products/ZMySQLDA/db.py [utf8] Fri Feb 6 14:19:18 2009
@@ -415,10 +415,18 @@
prefix, suffix = error_text.split("'", 1)
if prefix == "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ":
sql, suffix = suffix.rsplit("'", 1)
- reference_sql = query
- error_position = len(reference_sql) - len(sql)
- raise ProgrammingError(exception[0], "%s '%s' HERE '%s' %s" % (prefix, reference_sql[:error_position], reference_sql[error_position:], suffix))
- raise
+ try:
+ line_number = int(suffix.rsplit(' ', 1)[-1])
+ except TypeError:
+ pass
+ else:
+ reference_sql = query
+ split_reference_sql = reference_sql.split('\n')
+ candidate_sql = '\n'.join(split_reference_sql[line_number - 1:])
+ error_position = len(reference_sql) - len(candidate_sql) + candidate_sql.find(sql)
+ if error_position > -1:
+ raise ProgrammingError(exception[0], "%s '%s' HERE '%s' %s" % (prefix, reference_sql[:error_position], reference_sql[error_position:], suffix))
+ raise exception
return self.db.store_result()
def query(self,query_string, max_rows=1000):
More information about the Erp5-report
mailing list