diff options
-rw-r--r-- | src/libtracker-data/tracker-sparql-grammar.h | 6 | ||||
-rw-r--r-- | src/libtracker-data/tracker-sparql.c | 11 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/libtracker-data/tracker-sparql-grammar.h b/src/libtracker-data/tracker-sparql-grammar.h index 3dcffff4c..caf54b8d5 100644 --- a/src/libtracker-data/tracker-sparql-grammar.h +++ b/src/libtracker-data/tracker-sparql-grammar.h @@ -1339,9 +1339,13 @@ static const TrackerGrammarRule rule_LimitOffsetClauses[] = { OR(helper_LimitOff /* OrderCondition ::= ( ( 'ASC' | 'DESC' ) BrackettedExpression ) * | ( Constraint | Var ) + * + * TRACKER EXTENSION: + * The first rule is turned into the more generic: + * ( ( 'ASC' | 'DESC' ) Expression ) */ static const TrackerGrammarRule helper_OrderCondition_or_1[] = { L(ASC), L(DESC), NIL }; -static const TrackerGrammarRule helper_OrderCondition_seq[] = { OR(helper_OrderCondition_or_1), R(BrackettedExpression), NIL }; +static const TrackerGrammarRule helper_OrderCondition_seq[] = { OR(helper_OrderCondition_or_1), R(Expression), NIL }; static const TrackerGrammarRule helper_OrderCondition_or_2[] = { S(helper_OrderCondition_seq), R(Constraint), R(Var), NIL }; static const TrackerGrammarRule rule_OrderCondition[] = { OR(helper_OrderCondition_or_2), NIL }; diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c index 3e3dc5b48..db8d74222 100644 --- a/src/libtracker-data/tracker-sparql.c +++ b/src/libtracker-data/tracker-sparql.c @@ -2274,12 +2274,16 @@ translate_OrderCondition (TrackerSparql *sparql, /* OrderCondition ::= ( ( 'ASC' | 'DESC' ) BrackettedExpression ) * | ( Constraint | Var ) + * + * TRACKER EXTENSION: + * plain Expression is also accepted, the last group is: + * ( Constraint | Var | Expression ) */ if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_ASC)) { - _call_rule (sparql, NAMED_RULE_BrackettedExpression, error); + _call_rule (sparql, NAMED_RULE_Expression, error); order_str = "ASC "; } else if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_DESC)) { - _call_rule (sparql, NAMED_RULE_BrackettedExpression, error); + _call_rule (sparql, NAMED_RULE_Expression, error); order_str = "DESC "; } else if (_check_in_rule (sparql, NAMED_RULE_Constraint)) { _call_rule (sparql, NAMED_RULE_Constraint, error); @@ -2656,8 +2660,7 @@ iterate_solution (TrackerSparql *sparql, sparql->solution_var_map = tracker_solution_get_bindings (solution); retval = _postprocess_rule (sparql, node, NULL, error); - g_clear_pointer (&sparql->solution_var_map, - (GDestroyNotify) g_hash_table_unref); + g_clear_pointer (&sparql->solution_var_map, g_hash_table_unref); tracker_data_update_buffer_might_flush (tracker_data_manager_get_data (sparql->data_manager), &flush_error); |