public Collection<ForeignKey> getForeignKeysInGroup(final Object groupID) throws TeiidComponentException, QueryMetadataException { return ((Table)groupID).getForeignKeys(); }
public Collection<ForeignKey> getForeignKeysInGroup(final Object groupID) throws TeiidComponentException, QueryMetadataException { return ((Table)groupID).getForeignKeys(); }
public Collection<ForeignKey> getForeignKeysInGroup(final Object groupID) throws TeiidComponentException, QueryMetadataException { return ((Table)groupID).getForeignKeys(); }
boolean isPartOfForeignKey(String columnName) { for (ForeignKey fk : this.table.getForeignKeys()) { for (Column column : fk.getColumns()) { if (column.getName().equals(columnName)) { return true; } } } return false; }
static boolean isPartOfForeignKey(Table table, String columnName) { for (ForeignKey fk : table.getForeignKeys()) { for (Column column : fk.getColumns()) { if (column.getName().equals(columnName)) { return true; } } } return false; }
boolean isCompositeForeignKey(String columnName) { for (ForeignKey fk : this.table.getForeignKeys()) { for (Column column : fk.getColumns()) { if (column.getName().equals(columnName)) { return fk.getColumns().size() > 1; } } } return false; }
public Collection<KeyRecord> getAllKeys() { Collection<KeyRecord> keys = new LinkedList<KeyRecord>(); if (getPrimaryKey() != null) { keys.add(getPrimaryKey()); } keys.addAll(getForeignKeys()); keys.addAll(getAccessPatterns()); keys.addAll(getIndexes()); keys.addAll(getUniqueKeys()); return keys; }
static String getForeignKeyRefTable(Table table, String columnName) { for (ForeignKey fk : table.getForeignKeys()) { for (Column column : fk.getColumns()) { if (column.getName().equals(columnName)) { return fk.getReferenceTableName(); } } } return null; }
private void removeParentKey(MongoDocument document, BasicDBObject row) throws TranslatorException { Table source = document.getTable(); Table target = document.getMergeTable(); for (ForeignKey fk:source.getForeignKeys()) { if (fk.getReferenceTableName().equals(target.getName())){ for (int i = 0; i < fk.getColumns().size(); i++) { if (row != null) { row.remove(fk.getColumns().get(i).getName()); } } } } }
static Table getComplexTableParentTable(RuntimeMetadata metadata, Table table) throws TranslatorException { for (Column c : table.getColumns()) { if (ODataMetadataProcessor.isPseudo(c)) { ForeignKey fk = table.getForeignKeys().get(0); String tableName = fk.getReferenceTableName(); if (tableName.indexOf('.') == -1) { tableName = fk.getReferenceKey().getParent().getFullName(); } return (Table)metadata.getTable(tableName); } } return table; }
private boolean isParentOf(NamedTable parent, NamedTable child) { String[] splits = child.getName().split("\\."); String correlation = splits[0]; String attrName = splits[1]; if (!parent.getCorrelationName().equals(correlation)) { return false; } for (ForeignKey fk:parent.getMetadataObject().getForeignKeys()){ if (fk.getReferenceKey().getParent().equals(child.getMetadataObject())) { return true; } } return false; }
@Override public void visit(Create obj) { if (!obj.getPrimaryKey().isEmpty()) { validateSortable(obj.getPrimaryKey()); } if (obj.getTableMetadata() != null) { Table t = obj.getTableMetadata(); if (!t.getForeignKeys().isEmpty()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.temp_fk", obj.getTable()), obj); //$NON-NLS-1$ } } }
@Override public void visit(Create obj) { if (!obj.getPrimaryKey().isEmpty()) { validateSortable(obj.getPrimaryKey()); } if (obj.getTableMetadata() != null) { Table t = obj.getTableMetadata(); if (!t.getForeignKeys().isEmpty()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.temp_fk", obj.getTable()), obj); //$NON-NLS-1$ } } }
@Override public void visit(Create obj) { if (!obj.getPrimaryKey().isEmpty()) { validateSortable(obj.getPrimaryKey()); } if (obj.getTableMetadata() != null) { Table t = obj.getTableMetadata(); if (!t.getForeignKeys().isEmpty()) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.temp_fk", obj.getTable()), obj); //$NON-NLS-1$ } } }
static Criteria buildJoinCriteria(DocumentNode from, DocumentNode to) { for (ForeignKey fk:from.getTable().getForeignKeys()) { if (fk.getReferenceKey().getParent().equals(to.getTable())) { return buildCriteria(from, to, fk); } } return null; }
private boolean isJoinOrPkColumn(Column column) { Table table = (Table)column.getParent(); boolean isKey = (table.getPrimaryKey().getColumnByName(column.getName()) != null); if (!isKey) { for(ForeignKey fk:table.getForeignKeys()) { if (fk.getColumnByName(column.getName()) != null) { isKey = true; } } } return isKey; } }
public static ForeignKey createForeignKey(String name, Table group, List<Column> elements, KeyRecord primaryKey) { ForeignKey key = new ForeignKey(); key.setName(name); for (Column column : elements) { key.addColumn(column); } key.setPrimaryKey(primaryKey); group.getForeignKeys().add(key); return key; }
private void buildForeignKeyReferences() throws TranslatorException { for (ForeignKey fk:this.table.getForeignKeys()) { MergeDetails key = new MergeDetails(this); key.setParentTable(fk.getReferenceTableName()); key.setEmbeddedTable(this.table.getName()); key.setName(fk.getName()); key.setColumns(MongoDBSelectVisitor.getColumnNames(fk.getColumns())); key.setReferenceColumns(fk.getReferenceColumns()); this.foreignKeys.put(MongoDBSelectVisitor.getColumnNames(fk.getColumns()), key); } }
@Test public void testCrossReferenceFKFromUniqueKey() throws Exception { String ddl = "CREATE FOREIGN TABLE G1(g1e1 integer, g1e2 varchar, UNIQUE(g1e2));"; String ddl2 = "CREATE FOREIGN TABLE G2(g2e1 integer, g2e2 varchar, FOREIGN KEY (g2e2) REFERENCES pm1.G1(g1e2))"; buildModel("pm1", true, this.vdb, this.store, ddl); buildModel("pm2", true, this.vdb, this.store, ddl2); buildTransformationMetadata(); ValidatorReport report = new ValidatorReport(); report = new MetadataValidator().validate(this.vdb, this.store); assertFalse(printError(report), report.hasItems()); assertNotNull(this.store.getSchema("pm2").getTable("G2").getForeignKeys().get(0).getReferenceKey()); assertEquals(1, this.store.getSchema("pm2").getTable("G2").getForeignKeys().get(0).getReferenceKey().getColumns().size()); assertEquals("g1e2", this.store.getSchema("pm2").getTable("G2").getForeignKeys().get(0).getReferenceKey().getColumns().get(0).getName()); }
@Test public void testAllowJoinFalse() throws Exception { String sql = "select a.e1, b.e1 from pm4.g1 a, pm4.g2 b where a.e1 = b.e1 and a.e2 = b.e2"; //$NON-NLS-1$ FakeCapabilitiesFinder capFinder = new FakeCapabilitiesFinder(); BasicSourceCapabilities caps = TestOptimizer.getTypicalCapabilities(); caps.setCapabilitySupport(Capability.QUERY_FROM_JOIN_INNER, true); caps.setSourceProperty(Capability.JOIN_CRITERIA_ALLOWED, SupportedJoinCriteria.KEY); capFinder.addCapabilities("pm4", caps); //$NON-NLS-1$ TransformationMetadata example4 = RealMetadataFactory.example4(); example4.getMetadataStore().getSchema("pm4").getTable("g2").getForeignKeys().get(0).setProperty(ForeignKey.ALLOW_JOIN, Boolean.FALSE.toString()); TestOptimizer.helpPlan(sql, example4, new String[] {"SELECT g_0.e1 AS c_0, g_0.e2 AS c_1 FROM pm4.g1 AS g_0 ORDER BY c_0, c_1", "SELECT g_0.e1 AS c_0, g_0.e2 AS c_1 FROM pm4.g2 AS g_0 ORDER BY c_0, c_1"}, capFinder, TestOptimizer.ComparisonMode.EXACT_COMMAND_STRING); //$NON-NLS-1$ }