1717#include " node-ram-cache.hpp"
1818#include " pgsql.hpp"
1919
20- struct middle_pgsql_t : public slim_middle_t , public middle_query_t
20+ class middle_query_pgsql_t : public middle_query_t
2121{
22- middle_pgsql_t ();
22+ public:
23+ middle_query_pgsql_t (
24+ char const *conninfo, std::shared_ptr<node_ram_cache> const &cache,
25+ std::shared_ptr<node_persistent_cache> const &persistent_cache);
26+ ~middle_query_pgsql_t ();
2327
24- void start (const options_t *out_options_) override ;
28+ size_t nodes_get_list (osmium::WayNodeList *nodes) const override ;
29+
30+ bool ways_get (osmid_t id, osmium::memory::Buffer &buffer) const override ;
31+ size_t rel_way_members_get (osmium::Relation const &rel, rolelist_t *roles,
32+ osmium::memory::Buffer &buffer) const override ;
33+
34+ idlist_t relations_using_way (osmid_t way_id) const override ;
35+ bool relations_get (osmid_t id,
36+ osmium::memory::Buffer &buffer) const override ;
37+
38+ void exec_sql (std::string const &sql_cmd) const ;
39+
40+ private:
41+ size_t local_nodes_get_list (osmium::WayNodeList *nodes) const ;
42+
43+ pg_result_t exec_prepared (char const *stmt, char const *param) const ;
44+ pg_result_t exec_prepared (char const *stmt, osmid_t osm_id) const ;
45+
46+ struct pg_conn *m_sql_conn;
47+ std::shared_ptr<node_ram_cache> m_cache;
48+ std::shared_ptr<node_persistent_cache> m_persistent_cache;
49+ };
50+
51+ struct middle_pgsql_t : public slim_middle_t
52+ {
53+ middle_pgsql_t (options_t const *options);
54+
55+ void start () override ;
2556 void stop (osmium::thread::Pool &pool) override ;
2657 void analyze () override ;
2758 void commit () override ;
2859
2960 void nodes_set (osmium::Node const &node) override ;
30- size_t nodes_get_list (osmium::WayNodeList *nodes) const override ;
3161 void nodes_delete (osmid_t id) override ;
3262 void node_changed (osmid_t id) override ;
3363
3464 void ways_set (osmium::Way const &way) override ;
35- bool ways_get (osmid_t id, osmium::memory::Buffer &buffer) const override ;
36- size_t rel_way_members_get (osmium::Relation const &rel, rolelist_t *roles,
37- osmium::memory::Buffer &buffer) const override ;
38-
3965 void ways_delete (osmid_t id) override ;
4066 void way_changed (osmid_t id) override ;
4167
42- bool relations_get (osmid_t id, osmium::memory::Buffer &buffer) const override ;
4368 void relations_set (osmium::Relation const &rel) override ;
4469 void relations_delete (osmid_t id) override ;
4570 void relation_changed (osmid_t id) override ;
@@ -51,13 +76,12 @@ struct middle_pgsql_t : public slim_middle_t, public middle_query_t
5176
5277 size_t pending_count () const override ;
5378
54- idlist_t relations_using_way (osmid_t way_id) const override ;
55-
5679 class table_desc
5780 {
5881 public:
5982 table_desc () : sql_conn(nullptr ) {}
60- table_desc (char const *name, char const *create,
83+ table_desc (options_t const *options, char const *name,
84+ char const *create, char const *prepare_query,
6185 char const *prepare = " " , char const *prepare_intarray = " " ,
6286 char const *array_indexes = " " );
6387
@@ -68,8 +92,9 @@ struct middle_pgsql_t : public slim_middle_t, public middle_query_t
6892
6993 int copyMode; /* True if we are in copy mode */
7094 struct pg_conn *sql_conn;
95+ std::string m_prepare_query;
7196
72- void connect (options_t const *options );
97+ void connect (char const *conninfo );
7398 void begin ();
7499 void prepare_queries (bool append);
75100 void create ();
@@ -109,7 +134,6 @@ struct middle_pgsql_t : public slim_middle_t, public middle_query_t
109134 * Sets up sql_conn for the table
110135 */
111136 void local_nodes_set (osmium::Node const &node);
112- size_t local_nodes_get_list (osmium::WayNodeList *nodes) const ;
113137 void local_nodes_delete (osmid_t osm_id);
114138
115139 table_desc tables[NUM_TABLES];
0 commit comments