- 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,
if not column.nullable:
colspec += " NOT NULL"
return colspec
-
+
+ def visit_create_index(self, create):
+ index = create.element
+ preparer = self.preparer
+ text = "CREATE "
+ if index.unique:
+ text += "UNIQUE "
+ text += "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))
+ return text
+
class SQLiteTypeCompiler(compiler.GenericTypeCompiler):
def visit_binary(self, type_):
return self.visit_BLOB(type_)
-
+
class SQLiteIdentifierPreparer(compiler.IdentifierPreparer):
reserved_words = set([
'add', 'after', 'all', 'alter', 'analyze', 'and', 'as', 'asc',
'vacuum', 'values', 'view', 'virtual', 'when', 'where',
])
+ 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
+
class SQLiteDialect(default.DefaultDialect):
name = 'sqlite'
supports_alter = False
bindproc = t.dialect_impl(dialect).bind_processor(dialect)
assert not bindproc or isinstance(bindproc(u"some string"), unicode)
-
+
def test_type_reflection(self):
# (ask_for, roundtripped_as_if_different)
specs = [( String(), String(), ),
isolation_level="FOO")
+ 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."""