public static IndexType getFullTextGIN(String configuration){ IndexType it=new IndexType(GIN_FULLTEXT); it.getProperties().put(GIN_CONFIGURATION, configuration); return it; }
public static IndexType fromString(String node) { try { return fromNotifyJson(Topology.OBJECT_MAPPER.readTree(node)); } catch (Exception e){ throw new RuntimeException(e); } }
@Override public String toString() { return toNotifyJson().toString(); }
void createIndex(SqlgGraph sqlgGraph, SchemaTable schemaTable, String name) { StringBuilder sql = new StringBuilder("CREATE "); if (IndexType.UNIQUE.equals(getIndexType())) { sql.append("UNIQUE "); if (this.indexType.isGIN()) { sql.append(" USING GIN"); if (IndexType.GIN_FULLTEXT.equals(getIndexType().getName())) { sql.append("to_tsvector("); String conf = indexType.getProperties().get(IndexType.GIN_CONFIGURATION); if (conf != null) { sql.append("'" + conf + "'"); // need single quotes, no double
T.label, SQLG_SCHEMA + "." + SQLG_SCHEMA_INDEX, SQLG_SCHEMA_INDEX_NAME, index, SQLG_SCHEMA_INDEX_INDEX_TYPE, indexType.toString(), CREATED_ON, LocalDateTime.now() );
idx = oidx.get(); } else { idx = new Index(indexName, IndexType.fromString(vertexIndex.value(SQLG_SCHEMA_INDEX_INDEX_TYPE)), edgeLabel); edgeLabel.addIndex(idx);
void createIndex(SqlgGraph sqlgGraph, SchemaTable schemaTable, String name) { StringBuilder sql = new StringBuilder("CREATE "); if (IndexType.UNIQUE.equals(getIndexType())) { sql.append("UNIQUE "); if (this.indexType.isGIN()) { sql.append(" USING GIN"); if (IndexType.GIN_FULLTEXT.equals(getIndexType().getName())) { sql.append("to_tsvector("); String conf = indexType.getProperties().get(IndexType.GIN_CONFIGURATION); if (conf != null) { sql.append("'" + conf + "'"); // need single quotes, no double
T.label, SQLG_SCHEMA + "." + SQLG_SCHEMA_INDEX, SQLG_SCHEMA_INDEX_NAME, index, SQLG_SCHEMA_INDEX_INDEX_TYPE, indexType.toString(), CREATED_ON, LocalDateTime.now() );
idx = oidx.get(); } else { idx = new Index(indexName, IndexType.fromString(vertexIndex.value(SQLG_SCHEMA_INDEX_INDEX_TYPE)), vertexLabel); vertexLabel.addIndex(idx);
public static IndexType getFullTextGIN(String configuration){ IndexType it=new IndexType(GIN_FULLTEXT); it.getProperties().put(GIN_CONFIGURATION, configuration); return it; }
@Override public String toString() { return toNotifyJson().toString(); }
public static IndexType fromString(String node) { try { return fromNotifyJson(Topology.OBJECT_MAPPER.readTree(node)); } catch (Exception e){ throw new RuntimeException(e); } }
T.label, SQLG_SCHEMA + "." + SQLG_SCHEMA_INDEX, SQLG_SCHEMA_INDEX_NAME, index.getName(), SQLG_SCHEMA_INDEX_INDEX_TYPE, index.getIndexType().toString(), CREATED_ON, LocalDateTime.now() );
idx = oidx.get(); } else { idx = new Index(indexName, IndexType.fromString(vertexIndex.value(SQLG_SCHEMA_INDEX_INDEX_TYPE)), vertexLabel); vertexLabel.addIndex(idx);
public static IndexType fromNotifyJson(JsonNode node){ // older version if(node.isValueNode()){ String s=node.asText(); if ("UNIQUE".equalsIgnoreCase(s)){ return UNIQUE; } else if ("NON_UNIQUE".equalsIgnoreCase(s)){ return NON_UNIQUE; } } IndexType it=new IndexType(node.get("name").asText()); Iterator<String> keys=node.fieldNames(); while (keys.hasNext()){ String k=keys.next(); if (!"name".equals(k)){ it.getProperties().put(k, node.get(k).asText()); } } return it; } }
Optional<JsonNode> toNotifyJson() { Preconditions.checkState(this.abstractLabel.getSchema().getTopology().isSqlWriteLockHeldByCurrentThread() && !this.uncommittedProperties.isEmpty()); ObjectNode result = new ObjectNode(Topology.OBJECT_MAPPER.getNodeFactory()); result.put("name", this.name); result.set("indexType", this.uncommittedIndexType.toNotifyJson()); ArrayNode propertyArrayNode = new ArrayNode(Topology.OBJECT_MAPPER.getNodeFactory()); for (PropertyColumn property : this.uncommittedProperties) { propertyArrayNode.add(property.toNotifyJson()); } result.set("uncommittedProperties", propertyArrayNode); return Optional.of(result); }
public static Index fromNotifyJson(AbstractLabel abstractLabel, JsonNode indexNode) { IndexType indexType = IndexType.fromNotifyJson(indexNode.get("indexType")); String name = indexNode.get("name").asText(); ArrayNode propertiesNode = (ArrayNode) indexNode.get("uncommittedProperties"); List<PropertyColumn> properties = new ArrayList<>(); for (JsonNode propertyNode : propertiesNode) { String propertyName = propertyNode.get("name").asText(); PropertyType propertyType = PropertyType.valueOf(propertyNode.get("propertyType").asText()); Optional<PropertyColumn> propertyColumnOptional = abstractLabel.getProperty(propertyName); Preconditions.checkState(propertyColumnOptional.isPresent(), "BUG: property %s for PropertyType %s not found.", propertyName, propertyType.name()); //noinspection OptionalGetWithoutIsPresent properties.add(propertyColumnOptional.get()); } return new Index(name, indexType, abstractLabel, properties); }
T.label, SQLG_SCHEMA + "." + SQLG_SCHEMA_INDEX, SQLG_SCHEMA_INDEX_NAME, index.getName(), SQLG_SCHEMA_INDEX_INDEX_TYPE, index.getIndexType().toString(), CREATED_ON, LocalDateTime.now() );
idx = oidx.get(); } else { idx = new Index(indexName, IndexType.fromString(vertexIndex.value(SQLG_SCHEMA_INDEX_INDEX_TYPE)), edgeLabel); edgeLabel.addIndex(idx);
public static IndexType fromNotifyJson(JsonNode node){ // older version if(node.isValueNode()){ String s=node.asText(); if ("UNIQUE".equalsIgnoreCase(s)){ return UNIQUE; } else if ("NON_UNIQUE".equalsIgnoreCase(s)){ return NON_UNIQUE; } } IndexType it=new IndexType(node.get("name").asText()); Iterator<String> keys=node.fieldNames(); while (keys.hasNext()){ String k=keys.next(); if (!"name".equals(k)){ it.getProperties().put(k, node.get(k).asText()); } } return it; } }