- char rpn_buf[1024];
- r = cql_transform_buf(m_transform, cql_parser_result(cp),
- rpn_buf, sizeof(rpn_buf)-1);
- if (!r)
- {
- YAZ_PQF_Parser pp = yaz_pqf_create();
+ WRBUF pqf = wrbuf_alloc();
+ r = cql_transform(m_transform, cql_parser_result(cp),
+ wrbuf_vp_puts, pqf);
+ if (!r)
+ {
+ WRBUF sortkeys = wrbuf_alloc();
+ WRBUF sortspec = wrbuf_alloc();
+ if (cql_sortby_to_sortkeys(cql_parser_result(cp),
+ wrbuf_vp_puts, sortkeys))
+ {
+ r = YAZ_SRW_UNSUPP_SORT_TYPE;
+ }
+ else
+ {
+ yaz_srw_sortkeys_to_sort_spec(wrbuf_cstr(sortkeys), sortspec);
+ Z_SortKeySpecList *sksl =
+ yaz_sort_spec(o, wrbuf_cstr(sortspec));
+ if (sksl)
+ yaz_sort_spec_to_type7(sksl, pqf);
+ }
+ wrbuf_destroy(sortspec);
+ wrbuf_destroy(sortkeys);
+
+ YAZ_PQF_Parser pp = yaz_pqf_create();