[Sqlalchemy-tickets] Issue #3690: dupe col logic when case sensitive is false (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
From: Mike B. <iss...@bi...> - 2016-04-05 03:08:22
|
New issue 3690: dupe col logic when case sensitive is false https://bitbucket.org/zzzeek/sqlalchemy/issues/3690/dupe-col-logic-when-case-sensitive-is Mike Bayer: is worse on 1.0, but fails on 1.1 thus: ``` #!python from sqlalchemy import create_engine, select, literal_column e = create_engine("sqlite://", case_sensitive=False) row = e.execute(select([ literal_column('1').label('SOMECOL'), literal_column('1').label('SOMECOL'), ])).first() row['somecol'] ``` the lookup should raise ambiguous column. on 1.1 it doesn't. On 1.0 we get an error when it's trying to set up the dupe lookup. fix is likely: 1.0: ``` #!diff diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py index 850bc62..a4bfa02 100644 --- a/lib/sqlalchemy/engine/result.py +++ b/lib/sqlalchemy/engine/result.py @@ -304,6 +304,7 @@ class ResultMetaData(object): for rec in raw: key = rec[1] if key in seen: + key = key.lower() if not self.case_sensitive else key by_key[key] = (None, by_key[key][1], None) seen.add(key) ``` 1.1: ``` #!diff diff --git a/lib/sqlalchemy/engine/result.py b/lib/sqlalchemy/engine/result.py index 0333d9e..773022e 100644 --- a/lib/sqlalchemy/engine/result.py +++ b/lib/sqlalchemy/engine/result.py @@ -257,6 +257,7 @@ class ResultMetaData(object): if key in seen: # this is an "ambiguous" element, replacing # the full record in the map + key = key.lower() if not self.case_sensitive else key by_key[key] = (None, key, None) seen.add(key) ``` |