Skip to content

Commit 3f297a3

Browse files
authored
Merge pull request #2318 from lonvia/fix-insert-for-idless-table
Fix table:insert for tables without an id column
2 parents 523c176 + 608faef commit 3f297a3

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed

src/flex-table.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ bool flex_table_t::has_id_column() const noexcept
7676

7777
bool flex_table_t::matches_type(osmium::item_type type) const noexcept
7878
{
79-
// This table takes any type -> okay
80-
if (m_id_type == flex_table_index_type::any_object) {
79+
// This table takes any type or has no ids -> okay
80+
if (m_id_type == flex_table_index_type::any_object ||
81+
m_id_type == flex_table_index_type::no_index) {
8182
return true;
8283
}
8384

tests/bdd/flex/table-ids.feature

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
Feature: Test for correct id column generation
2+
3+
Background:
4+
Given the 0.1 grid
5+
| 1 | | 2 |
6+
| 3 | | 4 |
7+
8+
Scenario: Data can be inserted into tables without an iD column
9+
Given the lua style
10+
"""
11+
local simple = osm2pgsql.define_table{
12+
name = 'simple',
13+
columns = {{ column = 'id', type = 'bigint'}}
14+
}
15+
16+
function osm2pgsql.process_node(object)
17+
simple:insert{ id = object.id }
18+
end
19+
20+
function osm2pgsql.process_way(object)
21+
simple:insert{ id = object.id }
22+
end
23+
24+
function osm2pgsql.process_relation(object)
25+
simple:insert{ id = object.id }
26+
end
27+
"""
28+
And the OSM data
29+
"""
30+
n1 Tp=1
31+
n2 Tp=2
32+
w10 Tp=10 Nn1,n2,n4
33+
r100 Tp=100 Mn1@,n2@
34+
"""
35+
When running osm2pgsql flex with parameters
36+
| --slim |
37+
Then table simple contains
38+
| id |
39+
| 1 |
40+
| 2 |
41+
| 10 |
42+
| 100 |
43+
Given the OSM data
44+
"""
45+
n1 v2 dD
46+
w11 Tp=11 Nn1,n3
47+
"""
48+
When running osm2pgsql flex with parameters
49+
| --slim | -a |
50+
Then table simple contains
51+
| id |
52+
| 1 |
53+
| 2 |
54+
| 10 |
55+
| 11 |
56+
| 100 |
57+

tests/bdd/steps/geometry_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def complete_node_list(self, nodes):
104104
assert ' y' not in line
105105

106106
coords = self.grid_node(nid)
107-
assert coords is not None, f"Coordinates missing for node {node}"
107+
assert coords is not None, f"Coordinates missing for node {nid}"
108108
nodes[i] = f"{line} x{coords[0]:.{self.grid_precision}f} y{coords[1]:.{self.grid_precision}f}"
109109

110110
todos.discard(nid)

0 commit comments

Comments
 (0)