"SELECT * FROM [nt:unstructured] AS r WHERE CONTAINS(r.[ns:bar], 'foo')".
the property name does not seem correct. A node selector can be an actual Name, but a property name should be a simple String. So the correct selector would look like "r.bar" (you can't have [ns:bar] as the selector of a property)
I followed an example at JCR-SQL2- Full-text search constraint. Is it incorrect too?
I didn't get the point why I can't have [ns:bar] as the selector. If I have bar, ns:bar, ns2:bar, ..., nsN:bar properties, how could I select specific one?
Also, as I noted in original question, r.[ns:bar] gives expected result for single-valued properties. So if incorrect query produces correct results then we have another kind of problem.