summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-02-05 13:16:14 +0100
committerCarlos Garnacho <carlosg@gnome.org>2020-02-17 18:57:46 +0100
commit6efed2b2e2f251450ac39e644163bf015c3f1fb1 (patch)
treebbd8decc0e358c468fde5f1956b922fd7a0b968e
parent91a42b586742c622624cead40eb4f9772a87a658 (diff)
downloadtracker-6efed2b2e2f251450ac39e644163bf015c3f1fb1.tar.gz
libtracker-data: Hint expression type on InlineDataOneVar
This makes some assumptions (eg. VALUES ?v { ... } having a consistent data type in its set), and it's possible that we can't infer the type at all (eg. in the case of variables or parameters), but it's more likely to result in correct datatypes being returned with the inline data, eg: SELECT ?u DATATYPE(?u) { VALUES ?u { 1 2 4 8 } }
-rw-r--r--src/libtracker-data/tracker-sparql.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 559b14d9e..a69f1a66b 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -4822,6 +4822,8 @@ translate_InlineDataOneVar (TrackerSparql *sparql,
if (n_values == 0)
_append_string (sparql, "SELECT NULL WHERE FALSE");
+ else
+ tracker_binding_set_data_type (binding, sparql->current_state.expression_type);
_expect (sparql, RULE_TYPE_LITERAL, LITERAL_CLOSE_BRACE);
_append_string (sparql, ") ");