0.6 can't handle Oracle function based indexes

Issue #1525 resolved
Former user created an issue

using 0.6beta1

this used to work in 0.5

from sqlalchemy import create_engine, Table, MetaData,  __version__

print __version__

engine = create_engine('oracle://xxx:xxx@XXX', echo=False)

metadata = MetaData(engine)

engine.execute("""create or replace function ADDONE (a number) return number
deterministic
is
begin
  return a+1;
end;
""")
try:
    engine.execute('drop table BOB')
except:
    pass
engine.execute('create table BOB (a number)')
engine.execute('create index fn_idx on BOB (ADDONE(a))')

bob_table = Table(
    'bob',
    metadata,
    autoload=True
)

Gives

Traceback (most recent call last):
  File "bob.py", line 28, in <module>
    autoload=True
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/schema.py", line 202, in __new__
    table._init(name, metadata, *args, **kw)
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/schema.py", line 250, in _init
    _bind_or_error(metadata).reflecttable(self, include_columns=include_columns)
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/engine/base.py", line 1450, in reflecttable
    self.dialect.reflecttable(conn, table, include_columns)
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/engine/default.py", line 122, in reflecttable
    return insp.reflecttable(table, include_columns)
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/engine/reflection.py", line 362, in reflecttable
    sa_schema.Index(name, *[table.columns[c](table.columns[c) for c in columns],
  File "/home/geraint/work/sqlalchemy/lib/sqlalchemy/util.py", line 666, in __getitem__
    return self._data[key](key)
KeyError: u'sys_nc00002$'

Comments (2)

  1. Log in to comment