-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
bugSomething isn't workingSomething isn't workingengineengines, connections, transactions, isolation levels, execution optionsengines, connections, transactions, isolation levels, execution options
Milestone
Description
Migrated issue, originally created by Michael Bayer (@zzzeek)
is worse on 1.0, but fails on 1.1 thus:
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 --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 --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)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingengineengines, connections, transactions, isolation levels, execution optionsengines, connections, transactions, isolation levels, execution options