[Sqlalchemy-tickets] Issue #3958: Sqlalchemy 1.1 doesn't remove duplicate rows in some cases while
Brought to you by:
zzzeek
From: anti-social <iss...@bi...> - 2017-04-04 16:19:24
|
New issue 3958: Sqlalchemy 1.1 doesn't remove duplicate rows in some cases while 1.0 does https://bitbucket.org/zzzeek/sqlalchemy/issues/3958/sqlalchemy-11-doesnt-remove-duplicate-rows anti-social: After the [commit](https://bitbucket.org/zzzeek/sqlalchemy/commits/ceeb033054f09db3eccbde3fad1941ec42919a54) next test case begun to fail: ``` #!python class FilterUniqueJoinTest(fixtures.MappedTest, AssertsCompiledSQL): run_setup_mappers = 'once' @classmethod def define_tables(cls, metadata): Table('users', metadata, Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('name', String(50)), Column('date_created', DateTime, default=datetime.datetime.now)) Table('orders', metadata, Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('user_id', Integer, ForeignKey('users.id'))) @classmethod def setup_classes(cls): users = cls.tables.users orders = cls.tables.orders class User(cls.Comparable): pass class Order(cls.Comparable): pass mapper(User, users, properties={ 'orders': relationship(Order, order_by=users.c.id.desc()) }) mapper(Order, orders) @classmethod def insert_data(cls): User = cls.classes.User Order = cls.classes.Order sess = create_session() o1 = Order() o2 = Order() o3 = Order() u1 = User(name='Mike') u1.orders = [o1, o2] u2 = User(name='John') u2.orders = [o3] sess.add(u1) sess.add(u2) sess.flush() sess.close() def test_filter_unique_column(self): User = self.classes.User sess = create_session() users = ( sess.query( User.date_created.label('dt'), User, ) .options(joinedload(User.orders)) .all() ) assert len(users) == 2 def test_filter_unique_func_column(self): User = self.classes.User sess = create_session() users = ( sess.query( func.date(User.date_created, 'start of month').label('month'), User, ) .options(joinedload(User.orders)) .all() ) assert len(users) == 2 ``` Sqlalchemy 1.0: ``` #!text test/orm/test_joins.py::FilterUniqueJoinTest::test_filter_unique_column PASSED test/orm/test_joins.py::FilterUniqueJoinTest::test_filter_unique_func_column PASSED ``` Sqlalchemy 1.1: ``` #!text test/orm/test_joins.py::FilterUniqueJoinTest::test_filter_unique_column PASSED test/orm/test_joins.py::FilterUniqueJoinTest::test_filter_unique_func_column FAILED ``` Is it expected behaviour? |