diff --git a/wally/run_test.py b/wally/run_test.py
index 5412be3..8c1fece 100755
--- a/wally/run_test.py
+++ b/wally/run_test.py
@@ -456,7 +456,7 @@
             print("\n")
             print(IOPerfTest.format_for_console(data))
             print("\n")
-        if 'mysql' == tp and data is not None:
+        if tp in ['mysql', 'pgbench'] and data is not None:
             print("\n")
             print(MysqlTest.format_for_console(data))
             print("\n")
diff --git a/wally/suits/itest.py b/wally/suits/itest.py
index c3848a7..db5dc36 100644
--- a/wally/suits/itest.py
+++ b/wally/suits/itest.py
@@ -88,7 +88,6 @@
     def get_remote_for_script(self, script):
         return os.path.join(self.remote_dir, script.rpartition('/')[2])
 
-
     def pre_run(self):
         copy_paths(self.node.connection, {self.root: self.remote_dir})
         cmd = self.get_remote_for_script(self.pre_run_script)
@@ -126,6 +125,15 @@
     run_script = os.path.join(root, "run.sh")
 
 
+    @classmethod
+    def format_for_console(cls, data):
+        tab = texttable.Texttable(max_width=120)
+        tab.set_deco(tab.HEADER | tab.VLINES | tab.BORDER)
+        tab.header(["TpmC"])
+        tab.add_row([data['res']['TpmC']])
+        return tab.draw()
+
+
 class MysqlTest(TwoScriptTest):
     root = os.path.dirname(mysql.__file__)
     pre_run_script = os.path.join(root, "prepare.sh")
diff --git a/wally/suits/postgres/prepare.sh b/wally/suits/postgres/prepare.sh
index e7ca3bc..bd908a4 100755
--- a/wally/suits/postgres/prepare.sh
+++ b/wally/suits/postgres/prepare.sh
@@ -16,4 +16,4 @@
 
 service postgresql restart
 
-exit 0
\ No newline at end of file
+exit 0
