[Sqlalchemy-tickets] Issue #3402: new stack trace when combining non-eq compare_values w/ SQL expre
Brought to you by:
zzzeek
|
From: Mike B. <iss...@bi...> - 2015-04-29 13:41:14
|
New issue 3402: new stack trace when combining non-eq compare_values w/ SQL expression in ORM persist https://bitbucket.org/zzzeek/sqlalchemy/issue/3402/new-stack-trace-when-combining-non-eq Mike Bayer: this is a 1.0 regression, though I'm pretty curious to see what 0.9 is doing that it isn't hitting this exception: ``` #!python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() def comparator(a, b): return a > b class A(Base): __tablename__ = 'a' id = Column(Integer, primary_key=True) data = Column(PickleType(comparator=comparator)) e = create_engine("sqlite://", echo=True) Base.metadata.create_all(e) s = Session(e) s.add(A(data='some data')) s.commit() a1 = s.query(A).first() a1.data = func.foo("im a SQL expression") s.commit() ``` ``` #! Traceback (most recent call last): File "test.py", line 27, in <module> s.commit() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 790, in commit self.transaction.commit() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 392, in commit self._prepare_impl() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 372, in _prepare_impl self.session.flush() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2004, in flush self._flush(objects) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2122, in _flush transaction.rollback(_capture_exception=True) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 60, in __exit__ compat.reraise(exc_type, exc_value, exc_tb) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 2086, in _flush flush_context.execute() File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 373, in execute rec.execute(self) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/unitofwork.py", line 532, in execute uow File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 170, in save_obj mapper, table, update) File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 613, in _emit_update_statements lambda rec: ( File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/persistence.py", line 456, in _collect_update_commands value, state.committed_state[propkey]): File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/sql/elements.py", line 2726, in __bool__ raise TypeError("Boolean value of this clause is not defined") TypeError: Boolean value of this clause is not defined ``` |