accept empty string as query-all