add Query::single and fix bug of Query::first