extensions are in use or not.
- postgresql
+ - Reflection functions for Table, Sequence no longer
+ case insensitive. Names can be differ only in case
+ and will be correctly distinguished. [ticket:2256]
+
- Use an atomic counter as the "random number"
source for server side cursor names;
conflicts have been reported in rare cases.
sql.text(
"select relname from pg_class c join pg_namespace n on "
"n.oid=c.relnamespace where n.nspname=current_schema() and "
- "lower(relname)=:name",
+ "relname=:name",
bindparams=[
- sql.bindparam('name', unicode(table_name.lower()),
+ sql.bindparam('name', unicode(table_name),
type_=sqltypes.Unicode)]
)
)
sql.text(
"select relname from pg_class c join pg_namespace n on "
"n.oid=c.relnamespace where n.nspname=:schema and "
- "lower(relname)=:name",
+ "relname=:name",
bindparams=[
sql.bindparam('name',
- unicode(table_name.lower()), type_=sqltypes.Unicode),
+ unicode(table_name), type_=sqltypes.Unicode),
sql.bindparam('schema',
unicode(schema), type_=sqltypes.Unicode)]
)
"SELECT relname FROM pg_class c join pg_namespace n on "
"n.oid=c.relnamespace where relkind='S' and "
"n.nspname=current_schema() "
- "and lower(relname)=:name",
+ "and relname=:name",
bindparams=[
- sql.bindparam('name', unicode(sequence_name.lower()),
+ sql.bindparam('name', unicode(sequence_name),
type_=sqltypes.Unicode)
]
)
sql.text(
"SELECT relname FROM pg_class c join pg_namespace n on "
"n.oid=c.relnamespace where relkind='S' and "
- "n.nspname=:schema and lower(relname)=:name",
+ "n.nspname=:schema and relname=:name",
bindparams=[
- sql.bindparam('name', unicode(sequence_name.lower()),
+ sql.bindparam('name', unicode(sequence_name),
type_=sqltypes.Unicode),
sql.bindparam('schema',
unicode(schema), type_=sqltypes.Unicode)
== referer.c.ref).compare(
subject.join(referer).onclause))
+ @testing.provide_metadata
+ def test_uppercase_lowercase_table(self):
+ metadata = self.metadata
+
+ a_table = Table('a', metadata, Column('x', Integer))
+ A_table = Table('A', metadata, Column('x', Integer))
+
+ a_table.create()
+ assert testing.db.has_table("a")
+ assert not testing.db.has_table("A")
+ A_table.create(checkfirst=True)
+ assert testing.db.has_table("A")
+
+ def test_uppercase_lowercase_sequence(self):
+
+ a_seq = Sequence('a')
+ A_seq = Sequence('A')
+
+ a_seq.create(testing.db)
+ assert testing.db.dialect.has_sequence(testing.db, "a")
+ assert not testing.db.dialect.has_sequence(testing.db, "A")
+ A_seq.create(testing.db, checkfirst=True)
+ assert testing.db.dialect.has_sequence(testing.db, "A")
+
+ a_seq.drop(testing.db)
+ A_seq.drop(testing.db)
+
def test_schema_reflection_multi_search_path(self):
"""test the 'set the same schema' rule when
multiple schemas/search paths are in effect."""