Skip to content

Commit d287608

Browse files
authored
Merge pull request #1439 from joto/sql-logging
Remove some code duplication in pgsql code
2 parents 47fa9a9 + 3400e8e commit d287608

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

src/pgsql.cpp

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
130147
pg_result_t
131148
pg_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

Comments
 (0)