6666from .pubsub import Publication , Subscription
6767
6868from .utils import \
69+ PgVer , \
6970 eprint , \
7071 get_bin_path , \
72+ get_pg_version , \
7173 file_tail , \
72- pg_version_ge , \
7374 reserve_port , \
7475 release_port , \
7576 execute_utility , \
@@ -113,6 +114,7 @@ def __init__(self, name=None, port=None, base_dir=None):
113114 """
114115
115116 # private
117+ self ._pg_version = PgVer (get_pg_version ())
116118 self ._should_free_port = port is None
117119 self ._base_dir = base_dir
118120 self ._logger = None
@@ -489,7 +491,7 @@ def get_auth_method(t):
489491 if allow_streaming :
490492
491493 # select a proper wal_level for PostgreSQL
492- if pg_version_ge ( '9.6' ) :
494+ if self . _pg_version >= '9.6' :
493495 wal_level = "replica"
494496 else :
495497 wal_level = "hot_standby"
@@ -504,7 +506,7 @@ def get_auth_method(t):
504506 wal_level )) # yapf: disable
505507
506508 if allow_logical :
507- if not pg_version_ge ( '10' ) :
509+ if self . _pg_version < '10' :
508510 raise InitNodeException (
509511 "Logical replication is only available for Postgres 10 "
510512 "and newer" )
@@ -568,7 +570,7 @@ def get_control_data(self):
568570
569571 # this one is tricky (blame PG 9.4)
570572 _params = [get_bin_path ("pg_controldata" )]
571- _params += ["-D" ] if pg_version_ge ( '9.5' ) else []
573+ _params += ["-D" ] if self . _pg_version >= '9.5' else []
572574 _params += [self .data_dir ]
573575
574576 data = execute_utility (_params , self .utils_log_file )
@@ -1042,7 +1044,7 @@ def catchup(self, dbname=None, username=None):
10421044 if not self .master :
10431045 raise TestgresException ("Node doesn't have a master" )
10441046
1045- if pg_version_ge ( '10' ) :
1047+ if self . _pg_version >= '10' :
10461048 poll_lsn = "select pg_catalog.pg_current_wal_lsn()::text"
10471049 wait_lsn = "select pg_catalog.pg_last_wal_replay_lsn() >= '{}'::pg_lsn"
10481050 else :
0 commit comments