@@ -810,7 +810,7 @@ def dump(self,
810
810
filename = None ,
811
811
dbname = None ,
812
812
username = None ,
813
- format = DumpFormat .Plain . value ):
813
+ format = DumpFormat .Plain ):
814
814
"""
815
815
Dump database into a file using pg_dump.
816
816
NOTE: the file is not removed automatically.
@@ -825,8 +825,17 @@ def dump(self,
825
825
Path to a file containing dump.
826
826
"""
827
827
828
+ # Check arguments
829
+ if not isinstance (format , DumpFormat ):
830
+ try :
831
+ format = DumpFormat (format )
832
+ except ValueError :
833
+ msg = 'Invalid format "{}"' .format (format )
834
+ raise BackupException (msg )
835
+
836
+ # Generate tmpfile or tmpdir
828
837
def tmpfile ():
829
- if format == DumpFormat .Directory . value :
838
+ if format == DumpFormat .Directory :
830
839
fname = mkdtemp (prefix = TMP_DUMP )
831
840
else :
832
841
fd , fname = mkstemp (prefix = TMP_DUMP )
@@ -845,7 +854,7 @@ def tmpfile():
845
854
"-f" , filename ,
846
855
"-U" , username ,
847
856
"-d" , dbname ,
848
- "-F" , format
857
+ "-F" , format . value
849
858
] # yapf: disable
850
859
851
860
execute_utility (_params , self .utils_log_file )
@@ -872,7 +881,11 @@ def restore(self, filename, dbname=None, username=None):
872
881
filename
873
882
]
874
883
875
- execute_utility (_params , self .utils_log_name )
884
+ # try pg_restore if dump is binary formate, and psql if not
885
+ try :
886
+ execute_utility (_params , self .utils_log_name )
887
+ except ExecUtilException as e :
888
+ self .psql (filename = filename , dbname = dbname , username = username )
876
889
877
890
@method_decorator (positional_args_hack (['dbname' , 'query' ]))
878
891
def poll_query_until (self ,
0 commit comments