@@ -127,35 +127,38 @@ void pg_conn_t::end_copy(std::string const &context) const
127127 }
128128}
129129
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+
130147pg_result_t
131148pg_conn_t ::exec_prepared_internal(char const *stmt, int num_params,
132149 char const *const *param_values) const
133150{
134151 assert (m_conn);
135152
136153 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));
146156 }
147157 pg_result_t res{PQexecPrepared (m_conn.get (), stmt, num_params, param_values,
148158 nullptr , nullptr , 0 )};
149159 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));
159162 throw std::runtime_error{" Database error: {} ({})" _format (
160163 error_msg (), PQresultStatus (res.get ()))};
161164 }
0 commit comments