[tracker/wip/carlosg/property-path-fixes: 3/4] libtracker-data: Fix '?' property path on edge cases



commit c631637827f374fe0644fce14b34bbbaac35ffa5
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun May 17 15:39:35 2020 +0200

    libtracker-data: Fix '?' property path on edge cases
    
    The query fails for resources that don't define the property, eg:
    
    SELECT ?u {
      <file:///home/carlos> (nfo:belongsToContainer/nie:isStoredAs)? ?u
    }
    
    would come up empty because the home folder does not have any
    nfo:belongsToContainer property. In this case we still expect to
    return the element itself.
    
    Ensure such element is included for these edge cases.

 src/libtracker-data/tracker-sparql.c | 4 ++++
 1 file changed, 4 insertions(+)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 78b0f4499..d355c7035 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -847,9 +847,13 @@ _prepend_path_element (TrackerSparql      *sparql,
                                       "FROM \"%s\" "
                                       "UNION "
                                       "SELECT ID, value, graph, ID_type, value_type "
+                                      "FROM \"%s\" "
+                                      "UNION "
+                                      "SELECT value, value, graph, value_type, value_type "
                                       "FROM \"%s\") ",
                                       path_elem->name,
                                       path_elem->data.composite.child1->name,
+                                      path_elem->data.composite.child1->name,
                                       path_elem->data.composite.child1->name);
                break;
        case TRACKER_PATH_OPERATOR_NEGATED:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]