private static ConditionQuery newQueryFromRelations(ConditionQuery query, Relations relations) { ConditionQuery cq = query.copy(); cq.resetConditions(); for (Relation relation : relations) { cq.query(relation); } return cq; }
public Query query(CassandraSessionPool.Session session, Query query) { Set<Condition> conditions = query.conditions(); if (!(query instanceof ConditionQuery) || conditions.isEmpty()) { return query; } ConditionQuery q = ((ConditionQuery) query).copy(); String name = (String) q.condition(HugeKeys.NAME); if (name != null && q.allSysprop() && conditions.size() == 1 && q.containsCondition(HugeKeys.NAME, Condition.RelationType.EQ)) { Set<Integer> ids = queryByNameIndex(session, this.table, name); if (ids.isEmpty()) { // Not found data with the specified label return null; } q.resetConditions(); for (Integer id : ids) { q.query(IdGenerator.of(id)); } } return q; }
/** * Query data from label index table if just want to query by label */ private static Query queryByLabelIndex( CassandraSessionPool.Session session, String table, Query query) { Set<Condition> conditions = query.conditions(); if (!(query instanceof ConditionQuery) || conditions.isEmpty()) { return query; } ConditionQuery q = (ConditionQuery) query; Id label = (Id) q.condition(HugeKeys.LABEL); if (label != null && q.allSysprop() && conditions.size() == 1 && q.containsCondition(HugeKeys.LABEL, Condition.RelationType.EQ)) { Set<String> ids = queryByLabelIndex(session, table, label); if (ids.isEmpty()) { // Not found data with the specified label return null; } q.resetConditions(); for (String id : ids) { /* * NOTE: Do not need to deserialize, because can directly * use the element id to do query from the vertex/edge table */ q.query(IdGenerator.of(id)); } } return query; }
query.resetConditions(conditions);
q.resetConditions(); LOG.warn("It's not recommended to query by has(id)");
private static ConditionQuery newQueryFromRelations(ConditionQuery query, Relations relations) { ConditionQuery cq = query.copy(); cq.resetConditions(); for (Relation relation : relations) { cq.query(relation); } return cq; }
public Query query(CassandraSessionPool.Session session, Query query) { Set<Condition> conditions = query.conditions(); if (!(query instanceof ConditionQuery) || conditions.isEmpty()) { return query; } ConditionQuery q = ((ConditionQuery) query).copy(); String name = (String) q.condition(HugeKeys.NAME); if (name != null && q.allSysprop() && conditions.size() == 1 && q.containsCondition(HugeKeys.NAME, Condition.RelationType.EQ)) { Set<Integer> ids = queryByNameIndex(session, this.table, name); if (ids.isEmpty()) { // Not found data with the specified label return null; } q.resetConditions(); for (Integer id : ids) { q.query(IdGenerator.of(id)); } } return q; }
/** * Query data from label index table if just want to query by label */ private static Query queryByLabelIndex( CassandraSessionPool.Session session, String table, Query query) { Set<Condition> conditions = query.conditions(); if (!(query instanceof ConditionQuery) || conditions.isEmpty()) { return query; } ConditionQuery q = (ConditionQuery) query; Id label = (Id) q.condition(HugeKeys.LABEL); if (label != null && q.allSysprop() && conditions.size() == 1 && q.containsCondition(HugeKeys.LABEL, Condition.RelationType.EQ)) { Set<String> ids = queryByLabelIndex(session, table, label); if (ids.isEmpty()) { // Not found data with the specified label return null; } q.resetConditions(); for (String id : ids) { /* * NOTE: Do not need to deserialize, because can directly * use the element id to do query from the vertex/edge table */ q.query(IdGenerator.of(id)); } } return query; }
query.resetConditions(conditions);
q.resetConditions(); LOG.warn("It's not recommended to query by has(id)");