Skip to content

Commit 67e731b

Browse files
committed
Adding another exec_prepared() overload for the 2-param case
This allows us to make the original exec_prepared() an internal function hiding the ugly interface.
1 parent 3ae1a20 commit 67e731b

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

src/flex-table.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,8 +309,8 @@ pg_result_t table_connection_t::get_geom_by_id(osmium::item_type type,
309309
assert(m_db_connection);
310310
std::string const id_str = fmt::to_string(id);
311311
if (table().has_multicolumn_id_index()) {
312-
char const *param_values[] = {type_to_char(type), id_str.c_str()};
313-
return m_db_connection->exec_prepared("get_wkb", 2, param_values);
312+
return m_db_connection->exec_prepared(
313+
"get_wkb", type_to_char(type), id_str.c_str());
314314
}
315315
return m_db_connection->exec_prepared("get_wkb", id_str);
316316
}

src/pgsql.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "pgsql.hpp"
44
#include "util.hpp"
55

6+
#include <array>
67
#include <cstdarg>
78
#include <cstdio>
89

@@ -94,8 +95,9 @@ void pg_conn_t::end_copy(std::string const &context) const
9495
}
9596
}
9697

97-
pg_result_t pg_conn_t::exec_prepared(char const *stmt, int num_params,
98-
char const *const *param_values) const
98+
pg_result_t
99+
pg_conn_t::exec_prepared_internal(char const *stmt, int num_params,
100+
char const *const *param_values) const
99101
{
100102
#ifdef DEBUG_PGSQL
101103
fmt::print(stderr, "ExecPrepared: {}\n", stmt);
@@ -119,9 +121,15 @@ pg_result_t pg_conn_t::exec_prepared(char const *stmt, int num_params,
119121
return res;
120122
}
121123

124+
pg_result_t pg_conn_t::exec_prepared(char const *stmt, char const *p1, char const *p2) const
125+
{
126+
std::array<const char *, 2> params{p1, p2};
127+
return exec_prepared_internal(stmt, params.size(), params.data());
128+
}
129+
122130
pg_result_t pg_conn_t::exec_prepared(char const *stmt, char const *param) const
123131
{
124-
return exec_prepared(stmt, 1, &param);
132+
return exec_prepared_internal(stmt, 1, &param);
125133
}
126134

127135
pg_result_t pg_conn_t::exec_prepared(char const *stmt,

src/pgsql.hpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,16 @@ class pg_conn_t
101101
public:
102102
explicit pg_conn_t(std::string const &conninfo);
103103

104-
pg_result_t exec_prepared(char const *stmt, int num_params,
105-
char const *const *param_values) const;
106-
104+
/// Execute a prepared statement with one parameter.
107105
pg_result_t exec_prepared(char const *stmt, char const *param) const;
108106

107+
/// Execute a prepared statement with two parameters.
108+
pg_result_t exec_prepared(char const *stmt, char const *p1, char const *p2) const;
109+
110+
/// Execute a prepared statement with one string parameter.
109111
pg_result_t exec_prepared(char const *stmt, std::string const &param) const;
110112

113+
/// Execute a prepared statement with one integer parameter.
111114
pg_result_t exec_prepared(char const *stmt, osmid_t id) const;
112115

113116
pg_result_t query(ExecStatusType expect, char const *sql) const;
@@ -128,6 +131,9 @@ class pg_conn_t
128131
void close() noexcept { m_conn.reset(); }
129132

130133
private:
134+
pg_result_t exec_prepared_internal(char const *stmt, int num_params,
135+
char const *const *param_values) const;
136+
131137
struct pg_conn_deleter_t
132138
{
133139
void operator()(PGconn *p) const noexcept { PQfinish(p); }

0 commit comments

Comments
 (0)