[Sqlalchemy-tickets] [sqlalchemy] #2742: Base.metadata.create_all() fails to create expression inde
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-06-05 09:05:11
|
#2742: Base.metadata.create_all() fails to create expression indexes with literals
-------------------------+-----------------------------------------
Reporter: andreycizov | Owner: zzzeek
Type: defect | Status: new
Priority: medium | Milestone:
Component: cextensions | Severity: no triage selected yet
Keywords: | Progress State: awaiting triage
-------------------------+-----------------------------------------
The bug is reproducible on '''0.8.1''' and the git master version
(!__version!__ == '''0.9.0''')
I am trying to add an index on an expression for PostgreSQL:
{{{
Index('heuristic', (1.) / (Foo.a + Foo.b))
}}}
The SQL generated by SQLA is correct: `2013-06-05 09:45:06,668 INFO
sqlalchemy.engine.base.Engine CREATE INDEX heuristic ON foos (%(param_1)s
/ (a + b))`, but `param_1` is never passed to the query executor so the
query fails.
Traceback:
{{{
Traceback (most recent call last):
File "\sqla_bug\bugreport.py", line 24, in <module>
Base.metadata.create_all(engine)
File "\sqla_bug\sqlalchemy\schema.py", line 2781,in create_all
tables=tables)
File "\sqla_bug\sqlalchemy\engine\base.py", line 1475, in _run_visitor
conn._run_visitor(visitorcallable, element, **kwargs)
File "\sqla_bug\sqlalchemy\engine\base.py", line 1118, in _run_visitor
**kwargs).traverse_single(element)
File "\sqla_bug\sqlalchemy\sql\visitors.py", line 108, in
traverse_single
return meth(obj, **kw)
File "\sqla_bug\sqlalchemy\engine\ddl.py", line 70, in visit_metadata
self.traverse_single(table, create_ok=True)
File "\sqla_bug\sqlalchemy\sql\visitors.py", line 108, in
traverse_single
return meth(obj, **kw)
File "\sqla_bug\sqlalchemy\engine\ddl.py", line 93, in visit_table
self.traverse_single(index)
File "\sqla_bug\sqlalchemy\sql\visitors.py", line 108, in
traverse_single
return meth(obj, **kw)
File "\sqla_bug\sqlalchemy\engine\ddl.py", line 105, in visit_index
self.connection.execute(schema.CreateIndex(index))
File "\sqla_bug\sqlalchemy\engine\base.py", line662, in execute
params)
File "\sqla_bug\sqlalchemy\engine\base.py", line720, in _execute_ddl
compiled
File "\sqla_bug\sqlalchemy\engine\base.py", line876, in _execute_context
context)
File "\sqla_bug\sqlalchemy\engine\base.py", line1023, in
_handle_dbapi_exception
util.reraise(*exc_info)
File "\sqla_bug\sqlalchemy\engine\base.py", line869, in _execute_context
context)
File "\sqla_bug\sqlalchemy\engine\default.py", line 326, in do_execute
cursor.execute(statement, parameters)
KeyError: 'param_1'
}}}
I've attached to code to reproduce the bug.
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2742>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|