static int rasqal_sort_rowsource_init(rasqal_rowsource* rowsource, void *user_data) { rasqal_query *query = rowsource->query; rasqal_sort_rowsource_context *con; con = (rasqal_sort_rowsource_context*)user_data; if(con->order_seq) con->order_size = raptor_sequence_size(con->order_seq); else { RASQAL_DEBUG1("No order conditions for sort rowsource - passing through"); con->order_size = -1; } con->map = NULL; if(con->order_size > 0 ) { /* make a row:NULL map in order to sort or do distinct * FIXME: should DISTINCT be separate? */ con->map = rasqal_engine_new_rowsort_map(con->distinct, query->compare_flags, con->order_seq); if(!con->map) return 1; } con->seq = NULL; return 0; }
static int rasqal_distinct_rowsource_init(rasqal_rowsource* rowsource, void *user_data) { rasqal_query *query = rowsource->query; rasqal_distinct_rowsource_context *con; con = (rasqal_distinct_rowsource_context*)user_data; con->map = rasqal_engine_new_rowsort_map(1, query->compare_flags, NULL); if(!con->map) return 1; return 0; }