[tracker/wip/carlosg/sparql1.1: 109/201] libtracker-data: Refactor select/insert/delete/update quad handling
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/wip/carlosg/sparql1.1: 109/201] libtracker-data: Refactor select/insert/delete/update quad handling
- Date: Mon, 9 Sep 2019 22:27:58 +0000 (UTC)
commit 3be6755f941dfa1e7b6525aa08e31ba204ee9243
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun Jun 9 23:57:24 2019 +0200
libtracker-data: Refactor select/insert/delete/update quad handling
Separate into a separate function, so it's easier to use from other places
than GraphNode.
src/libtracker-data/tracker-sparql.c | 89 +++++++++++++++++++++---------------
1 file changed, 53 insertions(+), 36 deletions(-)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index c2c336740..c17f2b7f0 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -1335,6 +1335,57 @@ _add_quad (TrackerSparql *sparql,
return TRUE;
}
+static gboolean
+tracker_sparql_apply_quad (TrackerSparql *sparql,
+ GError **error)
+{
+ GError *inner_error = NULL;
+
+ switch (sparql->current_state.type) {
+ case TRACKER_SPARQL_TYPE_SELECT:
+ _add_quad (sparql,
+ &sparql->current_state.graph,
+ &sparql->current_state.subject,
+ &sparql->current_state.predicate,
+ &sparql->current_state.object,
+ &inner_error);
+ break;
+ case TRACKER_SPARQL_TYPE_INSERT:
+ tracker_data_insert_statement (tracker_data_manager_get_data (sparql->data_manager),
+ tracker_token_get_idstring (&sparql->current_state.graph),
+ tracker_token_get_idstring (&sparql->current_state.subject),
+ tracker_token_get_idstring (&sparql->current_state.predicate),
+ tracker_token_get_idstring (&sparql->current_state.object),
+ &inner_error);
+ break;
+ case TRACKER_SPARQL_TYPE_DELETE:
+ tracker_data_delete_statement (tracker_data_manager_get_data (sparql->data_manager),
+ tracker_token_get_idstring (&sparql->current_state.graph),
+ tracker_token_get_idstring (&sparql->current_state.subject),
+ tracker_token_get_idstring (&sparql->current_state.predicate),
+ tracker_token_get_idstring (&sparql->current_state.object),
+ &inner_error);
+ break;
+ case TRACKER_SPARQL_TYPE_UPDATE:
+ tracker_data_update_statement (tracker_data_manager_get_data (sparql->data_manager),
+ tracker_token_get_idstring (&sparql->current_state.graph),
+ tracker_token_get_idstring (&sparql->current_state.subject),
+ tracker_token_get_idstring (&sparql->current_state.predicate),
+ tracker_token_get_idstring (&sparql->current_state.object),
+ &inner_error);
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ if (inner_error) {
+ g_propagate_error (error, inner_error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
static TrackerParserNode *
_skip_rule (TrackerSparql *sparql,
guint named_rule)
@@ -5010,42 +5061,8 @@ translate_GraphNode (TrackerSparql *sparql,
sparql->current_state.type != TRACKER_SPARQL_TYPE_UPDATE))
return TRUE;
- switch (sparql->current_state.type) {
- case TRACKER_SPARQL_TYPE_SELECT:
- _add_quad (sparql,
- &sparql->current_state.graph,
- &sparql->current_state.subject,
- &sparql->current_state.predicate,
- &sparql->current_state.object,
- &inner_error);
- break;
- case TRACKER_SPARQL_TYPE_INSERT:
- tracker_data_insert_statement (tracker_data_manager_get_data (sparql->data_manager),
- tracker_token_get_idstring (&sparql->current_state.graph),
- tracker_token_get_idstring (&sparql->current_state.subject),
- tracker_token_get_idstring (&sparql->current_state.predicate),
- tracker_token_get_idstring (&sparql->current_state.object),
- &inner_error);
- break;
- case TRACKER_SPARQL_TYPE_DELETE:
- tracker_data_delete_statement (tracker_data_manager_get_data (sparql->data_manager),
- tracker_token_get_idstring (&sparql->current_state.graph),
- tracker_token_get_idstring (&sparql->current_state.subject),
- tracker_token_get_idstring (&sparql->current_state.predicate),
- tracker_token_get_idstring (&sparql->current_state.object),
- &inner_error);
- break;
- case TRACKER_SPARQL_TYPE_UPDATE:
- tracker_data_update_statement (tracker_data_manager_get_data (sparql->data_manager),
- tracker_token_get_idstring (&sparql->current_state.graph),
- tracker_token_get_idstring (&sparql->current_state.subject),
- tracker_token_get_idstring (&sparql->current_state.predicate),
- tracker_token_get_idstring (&sparql->current_state.object),
- &inner_error);
- break;
- default:
- g_assert_not_reached ();
- }
+ if (!tracker_sparql_apply_quad (sparql, error))
+ return FALSE;
tracker_token_unset (&sparql->current_state.object);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]