@@ -127,35 +127,38 @@ void pg_conn_t::end_copy(std::string const &context) const
127
127
}
128
128
}
129
129
130
+ static std::string concat_params (int num_params,
131
+ char const *const *param_values)
132
+ {
133
+ std::string params;
134
+
135
+ for (int i = 0 ; i < num_params; ++i) {
136
+ params += param_values[i] ? param_values[i] : " <NULL>" ;
137
+ params += ' ,' ;
138
+ }
139
+
140
+ if (!params.empty ()) {
141
+ params.resize (params.size () - 1 );
142
+ }
143
+
144
+ return params;
145
+ }
146
+
130
147
pg_result_t
131
148
pg_conn_t ::exec_prepared_internal(char const *stmt, int num_params,
132
149
char const *const *param_values) const
133
150
{
134
151
assert (m_conn);
135
152
136
153
if (get_logger ().log_sql ()) {
137
- std::string params;
138
- for (int i = 0 ; i < num_params; ++i) {
139
- params += param_values[i] ? param_values[i] : " <NULL>" ;
140
- params += ' ,' ;
141
- }
142
- if (!params.empty ()) {
143
- params.resize (params.size () - 1 );
144
- }
145
- log_sql (" EXECUTE {}({})" , stmt, params);
154
+ log_sql (" EXECUTE {}({})" , stmt,
155
+ concat_params (num_params, param_values));
146
156
}
147
157
pg_result_t res{PQexecPrepared (m_conn.get (), stmt, num_params, param_values,
148
158
nullptr , nullptr , 0 )};
149
159
if (PQresultStatus (res.get ()) != PGRES_TUPLES_OK) {
150
- std::string params;
151
- for (int i = 0 ; i < num_params; ++i) {
152
- params += param_values[i] ? param_values[i] : " <NULL>" ;
153
- params += ' ,' ;
154
- }
155
- if (!params.empty ()) {
156
- params.resize (params.size () - 1 );
157
- }
158
- log_error (" SQL command failed: EXECUTE {}({})" , stmt, params);
160
+ log_error (" SQL command failed: EXECUTE {}({})" , stmt,
161
+ concat_params (num_params, param_values));
159
162
throw std::runtime_error{" Database error: {} ({})" _format (
160
163
error_msg (), PQresultStatus (res.get ()))};
161
164
}
0 commit comments