[Tile-serving] [osm2pgsql-dev/osm2pgsql] Error in reprocessing of ways in relation, if osmc_symbols-tag of the relation contains the word 'backslash' (Issue #2128)

Mathias notifications at github.com
Thu Feb 1 09:21:43 UTC 2024


## Output

2024-02-01 10:11:59  osm2pgsql version 1.10.0 (1.10.0-26-g229d832b)
2024-02-01 10:12:00  Database version: 13.5 (Debian 13.5-1.pgdg110+1)
2024-02-01 10:12:00  PostGIS version: 3.1
2024-02-01 10:12:00  Storing properties to table '"public"."osm2pgsql_properties"'.
osm2pgsql version: 1.10.0
2024-02-01 10:12:08  Reading input files done in 8s.                                      
2024-02-01 10:12:08    Processed 21789924 nodes in 0s - 21790k/s
2024-02-01 10:12:08    Processed 3460747 ways in 7s - 494k/s
2024-02-01 10:12:08    Processed 49537 relations in 1s - 50k/s
2024-02-01 10:12:08  Reprocess marked ways (stage 2)...
2024-02-01 10:12:08  Creating id index on table 'traffic'...
2024-02-01 10:12:09  Creating id indexes took 0s
2024-02-01 10:12:09  There are 77950 ways to reprocess...
2024-02-01 10:12:10  ERROR: DB copy thread failed: Ending COPY mode for 'traffic' failed: ERROR:  malformed array literal: "{green:white:green:\}"
DETAIL:  Unexpected end of input.
CONTEXT:  COPY traffic, line 25130, column osmc_symbols: "{green:white:green:\}"

## What version of osm2pgsql are you using?

osm2pgsql version: 1.10.0

## What operating system and PostgreSQL/PostGIS version are you using?

Ubuntu 2022.04

## Tell us something about your system

16 RAM, 16 CPUs, laptop

## What did you do exactly?

Importing Hiking relation using the following configuration (minimal example)

```
print('osm2pgsql version: ' .. osm2pgsql.version)

-- Variables
local tables = {}
local import_schema = 'osm' -- Defines the import schema
local epsg_code = 32633 -- Defines the projection
local w2r = {}

-- Table defenitions

tables.traffic = osm2pgsql.define_table({
    name = 'traffic',
    schema = import_schema,
    ids = {
        type = 'way',
        id_column = 'way_id'
    },
    columns = {{
        column = 'fid',
        sql_type = 'serial',
        create_only = true
    }, {
        column = 'highway',
        type = 'text'
    }, {
        column = 'name',
        type = 'text'
    }, {
        column = 'osmc_symbols', 
        sql_type = 'text[]' 
    },{ 
        column = 'rel_ids', 
        sql_type = 'int8[]' 
    }, {
        column = 'geom',
        type = 'linestring',
        projection = epsg_code
    }},
    indexes = {{
        column = 'geom',
        method = 'gist'
    }}
})


function osm2pgsql.select_relation_members(relation)
    -- Only interested in relations with type=route
    if relation.tags.type == 'route' and relation.tags.route == 'hiking' then
        return { ways = osm2pgsql.way_member_ids(relation) }
    end
end


-- Function which fill the tables

function osm2pgsql.process_node(object)

end

function osm2pgsql.process_way(object)

    if object.tags.highway or object.tags.railway then
        row = {
            name = object.tags.name,
            highway = object.tags.highway,
            geom = object:as_multilinestring()
        }

        local d = w2r[object.id]
        if d then
            local refs = {}
            local ids = {}
            for rel_id, rel_ref in pairs(d) do
                refs[#refs + 1] = rel_ref
                ids[#ids + 1] = rel_id
            end
            table.sort(refs)
            table.sort(ids)
            row.osmc_symbols = '{'.. table.concat(refs, ',') .. '}'
            row.rel_ids = '{' .. table.concat(ids, ',') .. '}'
        end

        tables.traffic:insert(row)
    end

end

function osm2pgsql.process_relation(object)

    local type = object:grab_tag('type')

    if type == 'route' and object.tags.route == 'hiking' then
        for _, member in ipairs(object.members) do
            if member.type == 'w' then
                if not w2r[member.ref] then
                    w2r[member.ref] = {}
                end
                w2r[member.ref][object.id] = object.tags['osmc:symbol']
            end
        end
    end

end
```

## What did you do to try analyzing the problem?

Importing an OSM-PBF-files fails, OSM-XML is a workaround.  Error always happens, if an osmc_symbols: "green:white:green:backslash" is present in the OSM-Data.



-- 
Reply to this email directly or view it on GitHub:
https://github.com/osm2pgsql-dev/osm2pgsql/issues/2128
You are receiving this because you are subscribed to this thread.

Message ID: <osm2pgsql-dev/osm2pgsql/issues/2128 at github.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/tile-serving/attachments/20240201/cba8a89d/attachment.htm>


More information about the Tile-serving mailing list