@@ -101,15 +101,16 @@ void exec(transaction_base& txn, char const* sql, ...)
101
101
txn.exec (buf);
102
102
}
103
103
104
- xid_t execQuery ( transaction_base& txn, char const * sql, ...)
104
+ template <class T >
105
+ T execQuery ( transaction_base& txn, char const * sql, ...)
105
106
{
106
107
va_list args;
107
108
va_start (args, sql);
108
109
char buf[1024 ];
109
110
vsprintf (buf, sql, args);
110
111
va_end (args);
111
112
result r = txn.exec (buf);
112
- return r[0 ][0 ].as (xid_t ());
113
+ return r[0 ][0 ].as (T ());
113
114
}
114
115
115
116
void * reader (void * arg)
@@ -154,8 +155,8 @@ void* writer(void* arg)
154
155
exec (txn, " update t set v = v + 1 where u=%d" , dstAcc);
155
156
t.updates += 2 ;
156
157
} else {
157
- int64_t sum = execQuery (txn, " select v from t where u=%d" , srcAcc)
158
- + execQuery (txn, " select v from t where u=%d" , dstAcc);
158
+ int64_t sum = execQuery< int64_t > (txn, " select v from t where u=%d" , srcAcc)
159
+ + execQuery< int64_t > (txn, " select v from t where u=%d" , dstAcc);
159
160
if (sum > cfg.nIterations *cfg.nWriters || sum < -cfg.nIterations *cfg.nWriters ) {
160
161
printf (" Wrong sum=%ld\n " , sum);
161
162
}
@@ -164,6 +165,7 @@ void* writer(void* arg)
164
165
txn.commit ();
165
166
t.transactions += 1 ;
166
167
} catch (pqxx_exception const & x) {
168
+ printf (" EXCEPTION: %s\n " , x.base ().what ());
167
169
txn.abort ();
168
170
t.aborts += 1 ;
169
171
i -= 1 ;
0 commit comments