private void checkVertexExistIfCustomizedId(Map<Id, HugeVertex> vertices) { Set<Id> ids = new HashSet<>(); for (HugeVertex vertex : vertices.values()) { VertexLabel vl = vertex.schemaLabel(); if (!vl.hidden() && vl.idStrategy().isCustomized()) { ids.add(vertex.id()); } } if (ids.isEmpty()) { return; } IdQuery idQuery = new IdQuery(HugeType.VERTEX, ids); Iterator<HugeVertex> results = this.queryVerticesFromBackend(idQuery); if (results.hasNext()) { HugeVertex existedVertex = results.next(); HugeVertex newVertex = vertices.get(existedVertex.id()); if (!existedVertex.label().equals(newVertex.label())) { throw new HugeException( "The newly added vertex with id:'%s' label:'%s' " + "is not allowed to insert, because already exist " + "a vertex with same id and different label:'%s'", newVertex.id(), newVertex.label(), existedVertex.label()); } } }
private void checkRepeatIndex(SchemaLabel schemaLabel) { if (schemaLabel instanceof VertexLabel) { VertexLabel vl = (VertexLabel) schemaLabel; if (vl.idStrategy().isPrimaryKey()) { List<String> pkFields = this.transaction.graph() .mapPkId2Name(vl.primaryKeys()); E.checkArgument(!this.indexFields.containsAll(pkFields), "No need to build index on properties %s, " + "because they contains all primary keys %s " + "for vertex label '%s'", this.indexFields, pkFields, vl.name()); } } for (Id id : schemaLabel.indexLabels()) { IndexLabel old = this.transaction.getIndexLabel(id); if (this.indexType != old.indexType()) { continue; } List<String> newFields = this.indexFields; List<String> oldFields = this.transaction.graph() .mapPkId2Name(old.indexFields()); // New created label can't be prefix of existed label E.checkArgument(!CollectionUtil.prefixOf(newFields, oldFields), "Fields %s of new index label '%s' is prefix of " + "fields %s of existed index label '%s'", newFields, this.name, oldFields, old.name()); } }
@Override public BackendEntry writeVertexLabel(VertexLabel vertexLabel) { TableBackendEntry entry = newBackendEntry(vertexLabel); entry.column(HugeKeys.ID, vertexLabel.id().asLong()); entry.column(HugeKeys.NAME, vertexLabel.name()); entry.column(HugeKeys.ID_STRATEGY, vertexLabel.idStrategy().code()); entry.column(HugeKeys.PROPERTIES, this.toLongSet(vertexLabel.properties())); entry.column(HugeKeys.PRIMARY_KEYS, this.toLongList(vertexLabel.primaryKeys())); entry.column(HugeKeys.NULLABLE_KEYS, this.toLongSet(vertexLabel.nullableKeys())); entry.column(HugeKeys.INDEX_LABELS, this.toLongSet(vertexLabel.indexLabels())); this.writeEnableLabelIndex(vertexLabel, entry); this.writeUserdata(vertexLabel, entry); entry.column(HugeKeys.STATUS, vertexLabel.status().code()); return entry; }
@Override public BackendEntry writeVertexLabel(VertexLabel vertexLabel) { TableBackendEntry entry = newBackendEntry(vertexLabel); entry.column(HugeKeys.ID, vertexLabel.id().asLong()); entry.column(HugeKeys.NAME, vertexLabel.name()); entry.column(HugeKeys.ID_STRATEGY, vertexLabel.idStrategy().code()); entry.column(HugeKeys.PROPERTIES, this.toLongSet(vertexLabel.properties())); entry.column(HugeKeys.PRIMARY_KEYS, this.toLongList(vertexLabel.primaryKeys())); entry.column(HugeKeys.NULLABLE_KEYS, this.toLongSet(vertexLabel.nullableKeys())); entry.column(HugeKeys.INDEX_LABELS, this.toLongSet(vertexLabel.indexLabels())); this.writeEnableLabelIndex(vertexLabel, entry); this.writeUserdata(vertexLabel, entry); entry.column(HugeKeys.STATUS, vertexLabel.status().code()); return entry; }
private void checkVertexExistIfCustomizedId(Map<Id, HugeVertex> vertices) { Set<Id> ids = new HashSet<>(); for (HugeVertex vertex : vertices.values()) { VertexLabel vl = vertex.schemaLabel(); if (!vl.hidden() && vl.idStrategy().isCustomized()) { ids.add(vertex.id()); } } if (ids.isEmpty()) { return; } IdQuery idQuery = new IdQuery(HugeType.VERTEX, ids); Iterator<HugeVertex> results = this.queryVerticesFromBackend(idQuery); if (results.hasNext()) { HugeVertex existedVertex = results.next(); HugeVertex newVertex = vertices.get(existedVertex.id()); if (!existedVertex.label().equals(newVertex.label())) { throw new HugeException( "The newly added vertex with id:'%s' label:'%s' " + "is not allowed to insert, because already exist " + "a vertex with same id and different label:'%s'", newVertex.id(), newVertex.label(), existedVertex.label()); } } }