private Stream<Map.Entry<RelationPredicate, ImmutableList<Integer>>> extractUniqueConstraintsFromRelation( DatabaseRelationDefinition relation) { return relation.getUniqueConstraints().stream() .map(uc -> uc.getAttributes().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList())) .map(positions -> new AbstractMap.SimpleEntry<>(relation.getAtomPredicate(), positions)); }
private Stream<Map.Entry<AtomPredicate, ImmutableList<Integer>>> extractUniqueConstraintsFromRelation( DatabaseRelationDefinition relation, Map<Predicate, AtomPredicate> predicateCache) { Predicate originalPredicate = Relation2Predicate.createPredicateFromRelation(relation); AtomPredicate atomPredicate = convertToAtomPredicate(originalPredicate, predicateCache); return relation.getUniqueConstraints().stream() .map(uc -> uc.getAttributes().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList())) .map(positions -> new AbstractMap.SimpleEntry<>(atomPredicate, positions)); }
@Override public String printKeys() { StringBuilder builder = new StringBuilder(); Collection<DatabaseRelationDefinition> table_list = getDatabaseRelations(); // Prints all primary keys builder.append("\n====== Unique constraints ==========\n"); for (DatabaseRelationDefinition dd : table_list) { builder.append(dd + ";\n"); for (UniqueConstraint uc : dd.getUniqueConstraints()) builder.append(uc + ";\n"); builder.append("\n"); } // Prints all foreign keys builder.append("====== Foreign key constraints ==========\n"); for(DatabaseRelationDefinition dd : table_list) { for (ForeignKeyConstraint fk : dd.getForeignKeys()) builder.append(fk + ";\n"); } return builder.toString(); }
@Override public String printKeys() { StringBuilder builder = new StringBuilder(); Collection<DatabaseRelationDefinition> table_list = getDatabaseRelations(); // Prints all primary keys builder.append("\n====== Unique constraints ==========\n"); for (DatabaseRelationDefinition dd : table_list) { builder.append(dd + ";\n"); for (UniqueConstraint uc : dd.getUniqueConstraints()) builder.append(uc + ";\n"); builder.append("\n"); } // Prints all foreign keys builder.append("====== Foreign key constraints ==========\n"); for(DatabaseRelationDefinition dd : table_list) { for (ForeignKeyConstraint fk : dd.getForeignKeys()) builder.append(fk + ";\n"); } return builder.toString(); }
private ImmutableSet<UniqueConstraint> extractMatchedUCs( ImmutableMultimap<DatabaseRelationDefinition, ImmutableList<? extends VariableOrGroundTerm>> leftRelationArgumentMultimap, ImmutableList<? extends VariableOrGroundTerm> rightArguments, DatabaseRelationDefinition rightRelation) { /* * When the left and right relations are the same */ return leftRelationArgumentMultimap.get(rightRelation).stream() .flatMap(leftArguments -> rightRelation.getUniqueConstraints().stream() .filter(uc -> isUcMatching(uc, leftArguments, rightArguments))) .collect(ImmutableCollectors.toSet()); }