code: def eval_nonagg_call(self, exp):
      "helper for eval_callx; evaluator for CallX that consume a single value"
      # todo: get more concrete about argument counts
      args=self.eval(exp.args)
      if exp.f=='coalesce':
        a,b=args # todo: does coalesce take more than 2 args?
        return b if a is None else a
      elif exp.f=='unnest': return self.eval(exp.args)[0] # note: run_select does some work in this case too
      elif exp.f in ('to_tsquery','to_tsvector'): return set(self.eval(exp.args.children[0]).split())
      else: raise NotImplementedError('unk_function',exp.ff eval_nonagg_call(self, exp):
      "helper for eval_callx; evaluator for CallX that consume a single value"
      # todo: get more concrete about argument counts
      args=self.eval(exp.args)
      if exp.f=='coalesce':
        a,b=args # todo: does coalesce take more than 2 args?
        return b if a is None else a
      elif exp.f=='unnest': return self.eval(exp.args)[0] # note: run_select does some work in this case too
      elif exp.f in ('to_tsquery','to_tsvector'): return set(self.eval(exp.args.children[0]).split())
      else: raise NotImplementedError('unk_function',exp.f)
docs: helper for eval_callx; evaluator for CallX that consume a single value