From 7051e0f82d0d4797221dab67dda4f11dead45438 Mon Sep 17 00:00:00 2001 From: Philip Jenvey Date: Mon, 20 Jul 2009 05:02:32 +0000 Subject: [PATCH] o we don't need to escape % in text on zxjdbc o don't assume ProgrammingError on zxjdbc, hopefully zxjdbc won't use plain Error so much one day --- lib/sqlalchemy/dialects/postgresql/zxjdbc.py | 13 +++++++++---- test/dialect/test_postgresql.py | 8 ++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/sqlalchemy/dialects/postgresql/zxjdbc.py b/lib/sqlalchemy/dialects/postgresql/zxjdbc.py index bdc42f1e80..18f07f3b50 100644 --- a/lib/sqlalchemy/dialects/postgresql/zxjdbc.py +++ b/lib/sqlalchemy/dialects/postgresql/zxjdbc.py @@ -5,23 +5,28 @@ JDBC Driver The official Postgresql JDBC driver is at http://jdbc.postgresql.org/. - """ -from sqlalchemy.dialects.postgresql.base import PGDialect +from sqlalchemy.dialects.postgresql.base import PGCompiler, PGDialect from sqlalchemy.connectors.zxJDBC import ZxJDBCConnector from sqlalchemy.engine import default class PostgreSQL_jdbcExecutionContext(default.DefaultExecutionContext): pass +class PostgreSQL_jdbcCompiler(PGCompiler): + + def post_process_text(self, text): + # Don't escape '%' like PGCompiler + return text + class PostgreSQL_jdbc(ZxJDBCConnector, PGDialect): execution_ctx_cls = PostgreSQL_jdbcExecutionContext + statement_compiler = PostgreSQL_jdbcCompiler jdbc_db_name = 'postgresql' jdbc_driver_name = "org.postgresql.Driver" - def _get_server_version_info(self, connection): return tuple(int(x) for x in connection.connection.dbversion.split('.')) -dialect = PostgreSQL_jdbc \ No newline at end of file +dialect = PostgreSQL_jdbc diff --git a/test/dialect/test_postgresql.py b/test/dialect/test_postgresql.py index 3d5b610548..33d3eda20c 100644 --- a/test/dialect/test_postgresql.py +++ b/test/dialect/test_postgresql.py @@ -698,8 +698,12 @@ class MiscTest(TestBase, AssertsExecutionResults, AssertsCompiledSQL): eng.execute("show transaction isolation level").scalar(), 'serializable') eng = create_engine(testing.db.url, isolation_level="FOO") - assert_raises(eng.dialect.dbapi.ProgrammingError, eng.execute, - "show transaction isolation level") + + if testing.db.driver == 'zxjdbc': + exception_cls = eng.dialect.dbapi.Error + else: + exception_cls = eng.dialect.dbapi.ProgrammingError + assert_raises(exception_cls, eng.execute, "show transaction isolation level") class TimezoneTest(TestBase, AssertsExecutionResults): -- 2.47.3