def form_query(self, columns, options={}):
        """
        :param str columns: literal sql string for list of columns
        :param dict options: dict supporting a single key "direct" as in the constructor
        :return: sql string
        """
        from_cl = 'FROM'

        direct = options.get('direct', self.direct)
        if direct:
            if columns != '*':
                raise ProgrammingError("Column lists cannot be specified for a direct function call.")
            columns = ''
            from_cl = ''

        if len(self.args) >= 1:
            replace = ['%s' for x in range(len(self.args))]
            func = "%s(" % self.query_base + ",".join(replace) + ")"
        else:
            func = "%s()" % self.query_base

        return "SELECT %s %s %s" % (columns, from_cl, func)