- The cursor associated with connection pool connections
(i.e. _CursorFairy) now proxies `__iter__()` to the
underlying cursor correctly. [ticket:1632]
+
+- sqlite
+ - sqlite dialect properly generates CREATE INDEX for a table
+ that is in an alternate schema. [ticket:1439]
- postgresql
- Added support for reflecting the DOUBLE PRECISION type,
colspec += " NOT NULL"
return colspec
+ def visit_index(self, index):
+ preparer = self.preparer
+ self.append("CREATE ")
+ if index.unique:
+ self.append("UNIQUE ")
+ self.append("INDEX %s ON %s (%s)" \
+ % (preparer.format_index(index,
+ name=self._validate_identifier(index.name, True)),
+ preparer.format_table(index.table, use_schema=False),
+ ', '.join(preparer.quote(c.name, c.quote)
+ for c in index.columns)))
+ self.execute()
+
class SQLiteIdentifierPreparer(compiler.IdentifierPreparer):
reserved_words = set([
'add', 'after', 'all', 'alter', 'analyze', 'and', 'as', 'asc',
def __init__(self, dialect):
super(SQLiteIdentifierPreparer, self).__init__(dialect)
+ def format_index(self, index, use_schema=True, name=None):
+ """Prepare a quoted index and schema name."""
+
+ if name is None:
+ name = index.name
+ result = self.quote(name, index.quote)
+ if not self.omit_schema and use_schema and getattr(index.table, "schema", None):
+ result = self.quote_schema(index.table.schema, index.table.quote_schema) + "." + result
+ return result
+
dialect = SQLiteDialect
dialect.poolclass = pool.SingletonThreadPool
dialect.statement_compiler = SQLiteCompiler
raise
+ def test_create_index_with_schema(self):
+ """Test creation of index with explicit schema"""
+
+ meta = MetaData(testing.db)
+ t = Table('foo', meta, Column('bar', String, index=True), schema='main')
+
+ try:
+ meta.create_all()
+ finally:
+ meta.drop_all()
+
+
class SQLTest(TestBase, AssertsCompiledSQL):
"""Tests SQLite-dialect specific compilation."""