Yes, Tom, I have run a few million rows through the ns_set structure. And as an extension programmer I admire its small footprint, I have never liked its interface to tcl programmers.
If it is a list, then what, you still have to write code to figure out if it is a list or not. I don't think there is a magic solution. It isn't even right to assume that a single key query should return all matches, because that destroys the order that you put them in. Ns_set preserves the order, which could be important.
In reverse:
- There is no reason a ns_set get_all should destroy the order of the subset.
- You don't need to test for list existence if you are writing in a functional iterator style. Take something simple, like pulling multiple form args into a SQL query to be executed:
url_query = conn.query
url_query.get_all('orderby').each { |value| append sql_query ",$value" }
- I'm a big fan of data modeling at all levels of the application. If you have to wonder if the result is a list, as opposed to 'the form vars can have 0 to N values', then the data is not specified enough.
David, thanks for the suggestion. Maybe that is sufficient to make me shut up. :)