Am 13.05.2010 16:30, schrieb Colin Marquardt:
The SQL from that file is <Parameter name="table"> (SELECT tags->'lit' AS lit, way FROM planet_polygon WHERE (tags ? 'lit') AND (tags->'lit' IN ('yes', 'no'))) AS areas</Parameter>
So I suppose I need to select * in some way? (I know next to no SQL.)
no, never select *. if you need 'building', just select tags->'building' AS building:
SELECT tags->'lit' AS lit, tags->'building' AS building, way FROM planet_polygon WHERE (tags ? 'lit') AND (tags->'lit' IN ('yes', 'no'))
But even if this example can be made to work, in general this will only work as long as whatever I filter on is not in hstore.
No that is no problem, I think. From the sql-clients point of view, SELECT foo FROM .. just the same as SELECT tags->bla AS foo FROM .. The AS construct makes it transparent for the client if the tag comes from the hstore or from a normal column. This is why you can just write <Filter>[lit] = 'yes'</Filter>, no matter where 'lit' comes from.
You can get all tags from the hstore and just don't use the classic columns if you don't want to.
This probably comes with a speed penalty, right?
There is no penalty for fetching data from the hstore. There is a small penalty when using the hstore in the where clause but this highly depends on the usage of the tag.
Peter