@Test public void testTwoJoinsToOneParent() { builder.joinTables("co2", "schema", "customer", "schema", "order"); builder.joinColumns("co2", "schema", "customer", "customer_id", "schema", "order", "customer_id"); builder.groupingIsComplete(); Collection<AISValidationFailure> failures = builder.akibanInformationSchema().validate(validations).failures(); Assert.assertEquals(1, failures.size()); AISValidationFailure fail = failures.iterator().next(); Assert.assertEquals(ErrorCode.JOIN_TO_MULTIPLE_PARENTS, fail.errorCode()); }
@Override public void validate(AkibanInformationSchema ais, AISValidationOutput output) { Set<Table> childTables = new HashSet<>(); for (Join join : ais.getJoins().values()) { if (childTables.contains(join.getChild())) { output.reportFailure(new AISValidationFailure ( new JoinToMultipleParentsException (join.getChild().getName()))); } else { childTables.add(join.getChild()); } } }
JoinToOneParent implements AISValidation { @Override public void validate(AkibanInformationSchema ais, AISValidationOutput output) { Set<Table> childTables = new HashSet<>(); for (Join join : ais.getJoins().values()) { if (childTables.contains(join.getChild())) { output.reportFailure(new AISValidationFailure ( new JoinToMultipleParentsException (join.getChild().getName()))); } else { childTables.add(join.getChild()); } } } }
JoinToOneParent implements AISValidation { @Override public void validate(AkibanInformationSchema ais, AISValidationOutput output) { Set<Table> childTables = new HashSet<>(); for (Join join : ais.getJoins().values()) { if (childTables.contains(join.getChild())) { output.reportFailure(new AISValidationFailure ( new JoinToMultipleParentsException (join.getChild().getName()))); } else { childTables.add(join.getChild()); } } }  }
JoinToOneParent implements AISValidation { @Override public void validate(AkibanInformationSchema ais, AISValidationOutput output) { Set<Table> childTables = new HashSet<>(); for (Join join : ais.getJoins().values()) { if (childTables.contains(join.getChild())) { output.reportFailure(new AISValidationFailure ( new JoinToMultipleParentsException (join.getChild().getName()))); } else { childTables.add(join.getChild()); } } }  @Override void validate(AkibanInformationSchema ais, AISValidationOutput output); }
JoinToOneParent implements AISValidation { @Override public void validate(AkibanInformationSchema ais, AISValidationOutput output) { Set<Table> childTables = new HashSet<>(); for (Join join : ais.getJoins().values()) { if (childTables.contains(join.getChild())) { output.reportFailure(new AISValidationFailure ( new JoinToMultipleParentsException (join.getChild().getName()))); } else { childTables.add(join.getChild()); } } }  @Override void validate(AkibanInformationSchema ais, AISValidationOutput output);  }