Skip to content
Snippets Groups Projects
Commit e48ba84e authored by Richard van der Hoff's avatar Richard van der Hoff
Browse files

Check postgres version in check_database

this saves doing it on each connection, and will allow us to pass extra options
in.
parent e97d1cf0
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,16 @@ class PostgresEngine(object): ...@@ -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): ...@@ -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): ...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment