Check postgres version in check_database
this saves doing it on each connection, and will allow us to pass extra options in.pull/6675/head
parent
e97d1cf001
commit
e48ba84e0b
|
@ -33,6 +33,16 @@ class PostgresEngine(object):
|
||||||
self._version = None # unknown as yet
|
self._version = None # unknown as yet
|
||||||
|
|
||||||
def check_database(self, db_conn):
|
def check_database(self, db_conn):
|
||||||
|
# Get the version of PostgreSQL that we're using. As per the psycopg2
|
||||||
|
# docs: The number is formed by converting the major, minor, and
|
||||||
|
# revision numbers into two-decimal-digit numbers and appending them
|
||||||
|
# together. For example, version 8.1.5 will be returned as 80105
|
||||||
|
self._version = db_conn.server_version
|
||||||
|
|
||||||
|
# Are we on a supported PostgreSQL version?
|
||||||
|
if self._version < 90500:
|
||||||
|
raise RuntimeError("Synapse requires PostgreSQL 9.5+ or above.")
|
||||||
|
|
||||||
with db_conn.cursor() as txn:
|
with db_conn.cursor() as txn:
|
||||||
txn.execute("SHOW SERVER_ENCODING")
|
txn.execute("SHOW SERVER_ENCODING")
|
||||||
rows = txn.fetchall()
|
rows = txn.fetchall()
|
||||||
|
@ -46,17 +56,6 @@ class PostgresEngine(object):
|
||||||
return sql.replace("?", "%s")
|
return sql.replace("?", "%s")
|
||||||
|
|
||||||
def on_new_connection(self, db_conn):
|
def on_new_connection(self, db_conn):
|
||||||
|
|
||||||
# Get the version of PostgreSQL that we're using. As per the psycopg2
|
|
||||||
# docs: The number is formed by converting the major, minor, and
|
|
||||||
# revision numbers into two-decimal-digit numbers and appending them
|
|
||||||
# together. For example, version 8.1.5 will be returned as 80105
|
|
||||||
self._version = db_conn.server_version
|
|
||||||
|
|
||||||
# Are we on a supported PostgreSQL version?
|
|
||||||
if self._version < 90500:
|
|
||||||
raise RuntimeError("Synapse requires PostgreSQL 9.5+ or above.")
|
|
||||||
|
|
||||||
db_conn.set_isolation_level(
|
db_conn.set_isolation_level(
|
||||||
self.module.extensions.ISOLATION_LEVEL_REPEATABLE_READ
|
self.module.extensions.ISOLATION_LEVEL_REPEATABLE_READ
|
||||||
)
|
)
|
||||||
|
@ -120,8 +119,8 @@ class PostgresEngine(object):
|
||||||
Returns:
|
Returns:
|
||||||
string
|
string
|
||||||
"""
|
"""
|
||||||
# note that this is a bit of a hack because it relies on on_new_connection
|
# note that this is a bit of a hack because it relies on check_database
|
||||||
# having been called at least once. Still, that should be a safe bet here.
|
# having been called. Still, that should be a safe bet here.
|
||||||
numver = self._version
|
numver = self._version
|
||||||
assert numver is not None
|
assert numver is not None
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue