    /*
     *  call-seq:
     *     query.to_s -> string
     *
     *  Return a string representation of the query. Most of the time, passing
     *  this string through the Query parser will give you the exact Query you
     *  began with. This can be a good way to explore how the QueryParser works.
     */
    static VALUE
    frb_q_to_s(int argc, VALUE *argv, VALUE self)
    {
        GET_Q();
        VALUE rstr, rfield;
        char *str;
        Symbol field = NULL;
        if (rb_scan_args(argc, argv, "01", &rfield)) {
            field = frb_field(rfield);
        }
        str = q->to_s(q, field);
        rstr = rb_str_new2(str);
        free(str);
        return rstr;
    }