hiddewie left a comment (osm2pgsql-dev/osm2pgsql#2274)
**Arrays**
Array datatypes would be useful and reduces boilerplate code in Lua Osm2Psql
import scripts.
Both numeric and string array content is useful. Numeric for referencing
collections of OSM IDs, and string arrays for `;`-split OSM tag values.
For example I use
```lua
osm2pgsql.define_table({
# ...
columns = {
# ...
{ column = 'operator', sql_type = 'text[]' },
}
})
```
with pre-generated SQL array syntax to fill the column.
Having specific `int[]` and `text[]` types that automatically convert Lua
tables to valid (escaped!) SQL in the correct type would be useful. I use a
conversion function like
```lua
function to_sql_array(items)
-- Put the items in a table into a raw SQL array string (quoted and
comma-delimited)
if not items then
return nil
end
local result = '{'
for index, item in ipairs(items) do
if index > 1 then
result = result .. ','
end
-- Raw SQL array syntax
result = result .. "\"" .. item:gsub("\\", "\\\\"):gsub("\"", "\\\"") ..
"\""
end
return result .. '}'
end
```
For the proposal on the implementation variants: Variant D sounds most general
and easy to use. The implementation could accept only tables, and perform the
same conversion for each item into the target SQL type. This would be obvious
to Osm2Psql users because the array types would have the same conversion
behaviour as singular types.
I expect integrating array-type-support into Osm2Psql would also be more
performant, to avoid allocating many strings just to convert a Lua table into
an SQL string. Streaming this directly from the input table to Postgres should
(theoretically) lower allocations.
--
Reply to this email directly or view it on GitHub:
https://github.com/osm2pgsql-dev/osm2pgsql/issues/2274#issuecomment-3124451105
You are receiving this because you are subscribed to this thread.
Message ID: <osm2pgsql-dev/osm2pgsql/issues/2274/[email protected]>_______________________________________________
Tile-serving mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/tile-serving