[source/native] fix sqlserver pattern matcher for unique constraints (closes #3227593) stable
authorAurelien Campeas <aurelien.campeas@logilab.fr>
Thu, 17 Oct 2013 16:30:53 +0200
branchstable
changeset 9298 eff262f5ec3f
parent 9297 9a44436cd5a5
child 9305 f7a738afc295
[source/native] fix sqlserver pattern matcher for unique constraints (closes #3227593) The matcher is used to parse the low-level error message and extract meaningful information for the end users. If broken, the users see an alarming and bewildering message. A full & definitive fix is scheduled for CubicWeb 3.18.
server/sources/native.py
--- a/server/sources/native.py	Thu Oct 17 10:30:35 2013 +0200
+++ b/server/sources/native.py	Thu Oct 17 16:30:53 2013 +0200
@@ -757,8 +757,10 @@
             if ex.__class__.__name__ == 'IntegrityError':
                 # need string comparison because of various backends
                 for arg in ex.args:
-                    # postgres and sqlserver
-                    mo = re.search('"unique_cw_[^ ]+"', arg)
+                    if 'SQL Server' in arg:
+                        mo = re.search("'unique_cw_[^ ]+'", arg)
+                    else: # postgres
+                        mo = re.search('"unique_cw_[^ ]+"', arg)
                     if mo is not None:
                         index_name = mo.group(0)[1:-1] # eat the surrounding " pair
                         elements = index_name.split('_cw_')[1:]