Hi, Have there been any non-backwards-compatible changes in SQLAlchemy 1.0 compared to 0.9.9?
We are seeing a lot of sudden breakage in our unit tests when switching to SQLAlchemy 1.0 from 0.9.9. Tests that worked fine before suddenly fail across the board. Here's a an example of a test build that suddenly failed on 1.0: https://travis-ci.org/pyfarm/pyfarm-master/builds/58860924 If you compare the builds on sqlite with those MySQL/PostgreSQL, you will see there are two different, seemingly unrelated things going wrong: On sqlite, drop_all() seems to fail to get the order of table drops right, and consequently runs into a referential integrity error. On MySQL/PostgreSQL, this line fails: association = TaskTaskLogAssociation.query.filter_by(task=task, log=task_log, attempt=attempt).first() In this context, "log" is a relationship in the model TaskTaskLogAssociation to model TaskLog. "task_log" is an object of type TaskLog, but one that has never been written to the database and has no set id. That leads to this error message in the logs: nose.proxy.ProgrammingError: (psycopg2.ProgrammingError) function symbol(unknown) does not exist LINE 3: ...72015052936_task_log_associations.attempt = 1 AND symbol('NE... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. [SQL: 'SELECT test29172015052936_task_log_associations.task_log_id AS test29172015052936_task_log_associations_task_log_id, test29172015052936_task_log_associations.task_id AS test29172015052936_task_log_associations_task_id, test29172015052936_task_log_associations.attempt AS test29172015052936_task_log_associations_attempt, test29172015052936_task_log_associations.state AS test29172015052936_task_log_associations_state \nFROM test29172015052936_task_log_associations \nWHERE test29172015052936_task_log_associations.attempt = %(attempt_1)s AND %(param_1)s = test29172015052936_task_log_associations.task_log_id AND %(param_2)s = test29172015052936_task_log_associations.task_id \n LIMIT %(param_3)s'] [parameters: {'param_1': symbol('NEVER_SET'), 'attempt_1': 1, 'param_2': 1, 'param_3': 1}] Apparently, sqlalchemy will use "symbol('NEVER_SET')" where the id of the model used for filtering should be. It may be a bit questionable to filter by a model that doesn't even exist in the database, but, again, this used to work fine in 0.9.9. Regards, Guido W. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.