Skip to content

Commit bdd6444

Browse files
committed
Refactor: Build a list of (templated) queries, then run them
1 parent 46bb159 commit bdd6444

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/middle-pgsql.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -822,13 +822,15 @@ void middle_pgsql_t::get_node_parents(
822822

823823
send_id_list(m_db_connection, "osm2pgsql_changed_nodes", changed_nodes);
824824

825-
m_db_connection.exec("ANALYZE osm2pgsql_changed_nodes");
825+
std::vector<std::string> queries;
826+
827+
queries.emplace_back("ANALYZE osm2pgsql_changed_nodes");
826828

827829
bool const has_bucket_index =
828830
check_bucket_index(&m_db_connection, m_options->prefix);
829831

830832
if (has_bucket_index) {
831-
m_db_connection.exec(build_sql(*m_options, R"(
833+
queries.emplace_back(R"(
832834
WITH changed_buckets AS (
833835
SELECT array_agg(id) AS node_ids, id >> {way_node_index_id_shift} AS bucket
834836
FROM osm2pgsql_changed_nodes GROUP BY id >> {way_node_index_id_shift}
@@ -839,31 +841,35 @@ INSERT INTO osm2pgsql_changed_ways
839841
WHERE w.nodes && b.node_ids
840842
AND {schema}"{prefix}_index_bucket"(w.nodes)
841843
&& ARRAY[b.bucket];
842-
)"));
844+
)");
843845
} else {
844-
m_db_connection.exec(build_sql(*m_options, R"(
846+
queries.emplace_back(R"(
845847
INSERT INTO osm2pgsql_changed_ways
846848
SELECT DISTINCT w.id
847849
FROM {schema}"{prefix}_ways" w, osm2pgsql_changed_nodes n
848850
WHERE w.nodes && ARRAY[n.id]
849-
)"));
851+
)");
850852
}
851853

852854
if (m_options->middle_database_format == 1) {
853-
m_db_connection.exec(build_sql(*m_options, R"(
855+
queries.emplace_back(R"(
854856
INSERT INTO osm2pgsql_changed_relations
855857
SELECT DISTINCT r.id
856858
FROM {schema}"{prefix}_rels" r, osm2pgsql_changed_nodes n
857859
WHERE r.parts && ARRAY[n.id]
858860
AND r.parts[1:way_off] && ARRAY[n.id]
859-
)"));
861+
)");
860862
} else {
861-
m_db_connection.exec(build_sql(*m_options, R"(
863+
queries.emplace_back(R"(
862864
INSERT INTO osm2pgsql_changed_relations
863865
SELECT DISTINCT r.id
864866
FROM {schema}"{prefix}_rels" r, osm2pgsql_changed_nodes c
865867
WHERE {schema}"{prefix}_member_ids"(r.members, 'N'::char) && ARRAY[c.id];
866-
)"));
868+
)");
869+
}
870+
871+
for (auto const &query : queries) {
872+
m_db_connection.exec(build_sql(*m_options, query));
867873
}
868874

869875
load_id_list(m_db_connection, "osm2pgsql_changed_ways", parent_ways);

0 commit comments

Comments
 (0)