summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2018-08-31 12:24:43 +0200
committerCarlos Garnacho <carlosg@gnome.org>2018-11-13 11:17:31 +0100
commitee26c9eb4cc422fb229d083c122aa3323145fc0f (patch)
tree8449963de109ddb8e8b9559119b12802779af83a
parent8912cdca1ecd7ca69aad8b14817190a05fb7e83f (diff)
downloadtracker-ee26c9eb4cc422fb229d083c122aa3323145fc0f.tar.gz
libtracker-data: Make ';' separator between updates optional again
This is a Tracker extension to the SPARQL1.1 syntax.
-rw-r--r--src/libtracker-data/tracker-sparql-grammar.h6
-rw-r--r--src/libtracker-data/tracker-sparql.c8
2 files changed, 11 insertions, 3 deletions
diff --git a/src/libtracker-data/tracker-sparql-grammar.h b/src/libtracker-data/tracker-sparql-grammar.h
index 4109cb75f..2ade748de 100644
--- a/src/libtracker-data/tracker-sparql-grammar.h
+++ b/src/libtracker-data/tracker-sparql-grammar.h
@@ -1451,8 +1451,12 @@ static const TrackerGrammarRule helper_Prologue_gte0[] = { OR(helper_Prologue_or
static const TrackerGrammarRule rule_Prologue[] = { GTE0 (helper_Prologue_gte0), NIL };
/* Update ::= Prologue ( Update1 ( ';' Update )? )?
+ *
+ * TRACKER EXTENSION:
+ * ';' separator is made optional.
*/
-static const TrackerGrammarRule helper_Update_seq_1[] = { L(SEMICOLON), R(Update), NIL };
+static const TrackerGrammarRule helper_Update_opt_3[] = { L(SEMICOLON), NIL };
+static const TrackerGrammarRule helper_Update_seq_1[] = { OPT(helper_Update_opt_3), R(Update), NIL };
static const TrackerGrammarRule helper_Update_opt_1[] = { S (helper_Update_seq_1), NIL };
static const TrackerGrammarRule helper_Update_seq_2[] = { R(Update1), OPT (helper_Update_opt_1), NIL };
static const TrackerGrammarRule helper_Update_opt_2[] = { S(helper_Update_seq_2), NIL };
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 4998deeca..a7eac02e2 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1647,6 +1647,9 @@ translate_Update (TrackerSparql *sparql,
GError **error)
{
/* Update ::= Prologue ( Update1 ( ';' Update )? )?
+ *
+ * TRACKER EXTENSION:
+ * ';' separator is made optional.
*/
_call_rule (sparql, NAMED_RULE_Prologue, error);
@@ -1659,9 +1662,10 @@ translate_Update (TrackerSparql *sparql,
if (sparql->blank_nodes)
g_variant_builder_close (sparql->blank_nodes);
- if (_accept (sparql, RULE_TYPE_LITERAL, LITERAL_SEMICOLON)) {
+ _accept (sparql, RULE_TYPE_LITERAL, LITERAL_SEMICOLON);
+
+ if (_check_in_rule (sparql, NAMED_RULE_Update))
_call_rule (sparql, NAMED_RULE_Update, error);
- }
}
return TRUE;