def test_query_filter_node_rel(): query = make_list_query({'filter_node': 'x', 'rel': 'x'}) expected = """ WITH matched_edges AS ( SELECT e.uri, e.weight, e.data, np1.uri as node_uri, np2.uri as other_uri FROM relations r, edges e, nodes n1, nodes n2, node_prefixes p1, node_prefixes p2, nodes np1, nodes np2 WHERE e.relation_id=r.id AND e.start_id=n1.id AND e.end_id=n2.id AND p1.prefix_id=np1.id AND p1.node_id=n1.id AND p2.prefix_id=np2.id AND p2.node_id=n2.id AND r.uri = %(rel)s UNION ALL SELECT e.uri, e.weight, e.data, np2.uri as node_uri, np1.uri as other_uri FROM relations r, edges e, nodes n1, nodes n2, node_prefixes p1, node_prefixes p2, nodes np1, nodes np2 WHERE e.relation_id=r.id AND e.start_id=n1.id AND e.end_id=n2.id AND p1.prefix_id=np1.id AND p1.node_id=n1.id AND p2.prefix_id=np2.id AND p2.node_id=n2.id AND r.uri = %(rel)s LIMIT 10000 ) SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges WHERE node_uri LIKE %(filter_node)s ORDER BY weight DESC, uri OFFSET %(offset)s LIMIT %(limit)s """ whitespace_eq(query, expected)
def test_query_start(): query = make_list_query({'start': 'x'}) expected = """ WITH matched_edges AS ( SELECT e.uri, e.weight, e.data FROM relations r, edges e, nodes n1, nodes n2, node_prefixes p1, node_prefixes p2, nodes np1, nodes np2 WHERE e.relation_id=r.id AND e.start_id=n1.id AND e.end_id=n2.id AND p1.prefix_id=np1.id AND p1.node_id=n1.id AND p2.prefix_id=np2.id AND p2.node_id=n2.id AND np1.uri = %(start)s LIMIT 10000 ) SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges ORDER BY weight DESC, uri OFFSET %(offset)s LIMIT %(limit)s """ whitespace_eq(query, expected)
def test_query_filter_start_source(): query = make_list_query({'filter_start': 'x', 'source': 'x'}) expected = """ WITH matched_edges AS ( SELECT e.uri, e.weight, e.data, np1.uri as start_uri, np2.uri as end_uri FROM relations r, edges e, nodes n1, nodes n2, node_prefixes p1, node_prefixes p2, nodes np1, nodes np2, edge_sources es, sources s WHERE e.relation_id=r.id AND e.start_id=n1.id AND e.end_id=n2.id AND p1.prefix_id=np1.id AND p1.node_id=n1.id AND p2.prefix_id=np2.id AND p2.node_id=n2.id AND s.uri=%(source)s AND es.source_id=s.id AND es.edge_id=e.id LIMIT 10000 ) SELECT DISTINCT ON (weight, uri) uri, data FROM matched_edges WHERE start_uri LIKE %(filter_start)s ORDER BY weight DESC, uri OFFSET %(offset)s LIMIT %(limit)s """ whitespace_eq(query, expected)