private void setStatusEdges(TitanSchemaVertex vertex, SchemaStatus status, Set<PropertyKeyVertex> keys) { Preconditions.checkArgument(vertex.asIndexType().isMixedIndex()); for (TitanEdge edge : vertex.getEdges(TypeDefinitionCategory.INDEX_FIELD, Direction.OUT)) { if (!keys.contains(edge.vertex(Direction.IN))) continue; //Only address edges with matching keys TypeDefinitionDescription desc = edge.valueOrNull(BaseKey.SchemaDefinitionDesc); assert desc.getCategory() == TypeDefinitionCategory.INDEX_FIELD; Parameter[] parameters = (Parameter[]) desc.getModifier(); assert parameters[parameters.length - 1].key().equals(ParameterType.STATUS.getName()); if (parameters[parameters.length - 1].value().equals(status)) continue; Parameter[] paraCopy = Arrays.copyOf(parameters, parameters.length); paraCopy[parameters.length - 1] = ParameterType.STATUS.getParameter(status); edge.remove(); addSchemaEdge(vertex, edge.vertex(Direction.IN), TypeDefinitionCategory.INDEX_FIELD, paraCopy); } for (PropertyKeyVertex prop : keys) prop.resetCache(); }
return; //Already has the right value, don't need to do anything } else { e.remove(); v.remove();
@Test public void testEdgesExceedCacheSize() { // Add a vertex with as many edges as the tx-cache-size. (20000 by default) int numEdges = graph.getConfiguration().getTxVertexCacheSize(); TitanVertex parentVertex = graph.addVertex(); for (int i = 0; i < numEdges; i++) { TitanVertex childVertex = graph.addVertex(); parentVertex.addEdge("friend", childVertex); } graph.tx().commit(); assertCount(numEdges, parentVertex.query().direction(Direction.OUT).edges()); // Remove an edge. parentVertex.query().direction(OUT).edges().iterator().next().remove(); // Check that getEdges returns one fewer. assertCount(numEdges - 1, parentVertex.query().direction(Direction.OUT).edges()); // Run the same check one more time. // This fails! (Expected: 19999. Actual: 20000.) assertCount(numEdges - 1, parentVertex.query().direction(Direction.OUT).edges()); }
v2 = getV(tx4,id2); v2.property(VertexProperty.Cardinality.single, age, "15"); getE(tx4,edgeId).remove(); tx4.commit();
if (e.<Long>value("time") < (numV / 2)) e.remove();
@Override public void run() { while (true) { // Make or break relType between two (possibly same) random nodes // TitanVertex source = tx.getVertex(idProp, RandomGenerator.randomInt(0, nodeCount)); // TitanVertex sink = tx.getVertex(idProp, RandomGenerator.randomInt(0, nodeCount)); TitanVertex source = Iterables.getOnlyElement(tx.getVertices(idProp, 0)); TitanVertex sink = Iterables.getOnlyElement(tx.getVertices(idProp, 1)); for (TitanEdge r : source.getTitanEdges(Direction.OUT, relType)) { if (r.getVertex(Direction.IN).getID() == sink.getID()) { r.remove(); continue; } } source.addEdge(relType, sink); if (Thread.interrupted()) break; } }
@Override public void run() { while (true) { // Make or break relType between two (possibly same) random nodes // TitanVertex source = tx.getVertex(idProp, RandomGenerator.randomInt(0, nodeCount)); // TitanVertex sink = tx.getVertex(idProp, RandomGenerator.randomInt(0, nodeCount)); TitanVertex source = Iterables.getOnlyElement(tx.getVertices(idProp, 0)); TitanVertex sink = Iterables.getOnlyElement(tx.getVertices(idProp, 1)); for (TitanEdge r : source.getTitanEdges(Direction.OUT, relType)) { if (r.getVertex(Direction.IN).getLongId() == sink.getLongId()) { r.remove(); continue; } } source.addEdge(relType, sink); if (Thread.interrupted()) break; } }
private void setStatusEdges(TitanSchemaVertex vertex, SchemaStatus status, Set<PropertyKeyVertex> keys) { Preconditions.checkArgument(vertex.asIndexType().isMixedIndex()); for (TitanEdge edge : vertex.getEdges(TypeDefinitionCategory.INDEX_FIELD, Direction.OUT)) { if (!keys.contains(edge.vertex(Direction.IN))) continue; //Only address edges with matching keys TypeDefinitionDescription desc = edge.valueOrNull(BaseKey.SchemaDefinitionDesc); assert desc.getCategory() == TypeDefinitionCategory.INDEX_FIELD; Parameter[] parameters = (Parameter[]) desc.getModifier(); assert parameters[parameters.length - 1].key().equals(ParameterType.STATUS.getName()); if (parameters[parameters.length - 1].value().equals(status)) continue; Parameter[] paraCopy = Arrays.copyOf(parameters, parameters.length); paraCopy[parameters.length - 1] = ParameterType.STATUS.getParameter(status); edge.remove(); addSchemaEdge(vertex, edge.vertex(Direction.IN), TypeDefinitionCategory.INDEX_FIELD, paraCopy); } for (PropertyKeyVertex prop : keys) prop.resetCache(); }
private void setStatusEdges(TitanSchemaVertex vertex, SchemaStatus status, Set<PropertyKeyVertex> keys) { Preconditions.checkArgument(vertex.asIndexType().isMixedIndex()); for (TitanEdge edge : vertex.getEdges(TypeDefinitionCategory.INDEX_FIELD,Direction.OUT)) { if (!keys.contains(edge.getVertex(Direction.IN))) continue; //Only address edges with matching keys TypeDefinitionDescription desc = edge.getProperty(BaseKey.SchemaDefinitionDesc); assert desc.getCategory()==TypeDefinitionCategory.INDEX_FIELD; Parameter[] parameters = (Parameter[])desc.getModifier(); assert parameters[parameters.length-1].getKey().equals(ParameterType.STATUS.getName()); if (parameters[parameters.length-1].getValue().equals(status)) continue; Parameter[] paraCopy = Arrays.copyOf(parameters,parameters.length); paraCopy[parameters.length-1]=ParameterType.STATUS.getParameter(status); edge.remove(); addSchemaEdge(vertex,edge.getVertex(Direction.IN),TypeDefinitionCategory.INDEX_FIELD,paraCopy); } for (PropertyKeyVertex prop : keys) prop.resetCache(); }
return; //Already has the right value, don't need to do anything } else { e.remove(); v.remove();
return; //Already has the right value, don't need to do anything } else { e.remove(); v.remove();
e.remove(); sign(v.addEdge("es",u),txid); e = (TitanEdge)Iterables.getOnlyElement(v.getEdges(Direction.OUT,"o2o")); e = (TitanEdge)Iterables.getOnlyElement(v.getEdges(Direction.OUT,"o2m")); assertEquals(1,e.getProperty("sig")); e.remove(); sign(v.addEdge("o2m",u),txid); for (String label : new String[]{"em","emf"}) {
e.remove(); assertEquals(0, Iterables.size(n2.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(1, Iterables.size(n3.getTitanEdges(BOTH, tx.getEdgeLabel("knows"))));
e.remove(); assertEquals(0, Iterables.size(n2.getTitanEdges(BOTH, tx.getEdgeLabel("knows")))); assertEquals(1, Iterables.size(n3.getTitanEdges(BOTH, tx.getEdgeLabel("knows"))));
if (e.<Long>getProperty(time)<(numV/2)) e.remove();