[Sqlalchemy-tickets] Issue #3437: Enum type not created by create_all if only used in an ARRAY (zzz
Brought to you by:
zzzeek
|
From: Wichert A. <iss...@bi...> - 2015-05-29 12:45:55
|
New issue 3437: Enum type not created by create_all if only used in an ARRAY https://bitbucket.org/zzzeek/sqlalchemy/issue/3437/enum-type-not-created-by-create_all-if Wichert Akkerman: I'm used to metadata.create_all() being very smart and creating everything as needed. I seem to have found a gap in its knowledge though: enum types that are only used in PostgreSQL ARRAY types are not created. The attached test case gives this output: ``` 2015-05-29 14:40:08,477 INFO sqlalchemy.engine.base.Engine select version() 2015-05-29 14:40:08,477 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,478 INFO sqlalchemy.engine.base.Engine select current_schema() 2015-05-29 14:40:08,478 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine SELECT CAST('test plain returns' AS VARCHAR(60)) AS anon_1 2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine SELECT CAST('test unicode returns' AS VARCHAR(60)) AS anon_1 2015-05-29 14:40:08,479 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,480 INFO sqlalchemy.engine.base.Engine show standard_conforming_strings 2015-05-29 14:40:08,480 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,481 INFO sqlalchemy.engine.base.Engine select relname from pg_class c join pg_namespace n on n.oid=c.relnamespace where pg_catalog.pg_table_is_visible(c.oid) and relname=%(name)s 2015-05-29 14:40:08,481 INFO sqlalchemy.engine.base.Engine {'name': 'pizza'} 2015-05-29 14:40:08,482 INFO sqlalchemy.engine.base.Engine CREATE TABLE pizza ( id SERIAL NOT NULL, toppings topping[], PRIMARY KEY (id) ) 2015-05-29 14:40:08,482 INFO sqlalchemy.engine.base.Engine {} 2015-05-29 14:40:08,483 INFO sqlalchemy.engine.base.Engine ROLLBACK Traceback (most recent call last): File "/Users/wichert/Jzoo/backend/lib/python3.4/site-packages/sqlalchemy/engine/base.py", line 1139, in _execute_context context) File "/Users/wichert/Jzoo/backend/lib/python3.4/site-packages/sqlalchemy/engine/default.py", line 442, in do_execute cursor.execute(statement, parameters) psycopg2.ProgrammingError: type "topping[]" does not exist LINE 4: toppings topping[], ``` |