105
105
InternalError = pglib .InternalError
106
106
ProgrammingError = pglib .ProgrammingError
107
107
OperationalError = pglib .OperationalError
108
- DatabaseError = pglib .DatabaseError
109
108
110
109
111
110
class ProcessProxy (object ):
@@ -653,7 +652,7 @@ def get_control_data(self):
653
652
654
653
return out_dict
655
654
656
- def slow_start (self , replica = False , dbname = 'template1' , username = 'dev' ):
655
+ def slow_start (self , replica = False , dbname = 'template1' , username = default_username () ):
657
656
"""
658
657
Starts the PostgreSQL instance and then polls the instance
659
658
until it reaches the expected state (primary or replica). The state is checked
@@ -673,14 +672,12 @@ def slow_start(self, replica=False, dbname='template1', username='dev'):
673
672
query = 'SELECT not pg_is_in_recovery()'
674
673
# Call poll_query_until until the expected value is returned
675
674
self .poll_query_until (query = query ,
676
- expected = False ,
677
675
dbname = dbname ,
678
676
username = username ,
679
677
suppress = {InternalError ,
680
678
QueryException ,
681
679
ProgrammingError ,
682
- OperationalError ,
683
- DatabaseError })
680
+ OperationalError })
684
681
685
682
def start (self , params = [], wait = True ):
686
683
"""
@@ -970,7 +967,7 @@ def psql(self,
970
967
return process .returncode , out , err
971
968
972
969
@method_decorator (positional_args_hack (['dbname' , 'query' ]))
973
- def safe_psql (self , query = None , ** kwargs ):
970
+ def safe_psql (self , query = None , expect_error = False , ** kwargs ):
974
971
"""
975
972
Execute a query using psql.
976
973
@@ -980,6 +977,8 @@ def safe_psql(self, query=None, **kwargs):
980
977
dbname: database name to connect to.
981
978
username: database user name.
982
979
input: raw input to be passed.
980
+ expect_error: if True - fail if we didn't get ret
981
+ if False - fail if we got ret
983
982
984
983
**kwargs are passed to psql().
985
984
@@ -992,7 +991,12 @@ def safe_psql(self, query=None, **kwargs):
992
991
993
992
ret , out , err = self .psql (query = query , ** kwargs )
994
993
if ret :
995
- raise QueryException ((err or b'' ).decode ('utf-8' ), query )
994
+ if expect_error :
995
+ out = (err or b'' ).decode ('utf-8' )
996
+ else :
997
+ raise QueryException ((err or b'' ).decode ('utf-8' ), query )
998
+ elif expect_error :
999
+ assert False , f"Exception was expected, but query finished successfully: `{ query } ` "
996
1000
997
1001
return out
998
1002
0 commit comments