class _PGEnum(ENUM):
def result_processor(self, dialect, coltype):
- if util.py2k and self.convert_unicode is True:
+ if self.native_enum and util.py2k and self.convert_unicode is True:
# we can't easily use PG's extensions here because
# the OID is on the fly, and we need to give it a python
# function anyway - not really worth it.
column_keys=context.compiled.column_keys,
inline=context.compiled.inline)
)
- _received_statement = re.sub(r'[\n\t]', '', str(compiled))
+ _received_statement = re.sub(r'[\n\t]', '', util.text_type(compiled))
parameters = execute_observed.parameters
if not parameters:
(util.u('réveillé'), util.u('drôle'), util.u('S’il'))
)
- def test_non_native_type(self):
- metadata = MetaData()
+ @testing.provide_metadata
+ def test_non_native_enum(self):
+ metadata = self.metadata
t1 = Table(
'foo',
metadata,
def go():
t1.create(testing.db)
- try:
- self.assert_sql(
- testing.db, go, [
- ("CREATE TABLE foo (\tbar "
- "VARCHAR(5), \tCONSTRAINT myenum CHECK "
- "(bar IN ('one', 'two', 'three')))", {})])
- finally:
- metadata.drop_all(testing.db)
+ self.assert_sql(
+ testing.db, go, [
+ ("CREATE TABLE foo (\tbar "
+ "VARCHAR(5), \tCONSTRAINT myenum CHECK "
+ "(bar IN ('one', 'two', 'three')))", {})])
+ with testing.db.begin() as conn:
+ conn.execute(
+ t1.insert(), {'bar': 'two'}
+ )
+ eq_(
+ conn.scalar(select([t1.c.bar])), 'two'
+ )
+
+ @testing.provide_metadata
+ def test_non_native_enum_w_unicode(self):
+ metadata = self.metadata
+ t1 = Table(
+ 'foo',
+ metadata,
+ Column(
+ 'bar',
+ Enum('B', util.u('Ü'), name='myenum', native_enum=False)))
+
+ def go():
+ t1.create(testing.db)
+
+ self.assert_sql(
+ testing.db,
+ go,
+ [
+ (
+ util.u(
+ "CREATE TABLE foo (\tbar "
+ "VARCHAR(1), \tCONSTRAINT myenum CHECK "
+ "(bar IN ('B', 'Ü')))"
+ ),
+ {}
+ )
+ ])
+
+ with testing.db.begin() as conn:
+ conn.execute(
+ t1.insert(), {'bar': util.u('Ü')}
+ )
+ eq_(
+ conn.scalar(select([t1.c.bar])), util.u('Ü')
+ )
@testing.provide_metadata
def test_disable_create(self):