diff --git a/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java b/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java index f5a360df4f..f192c360b9 100644 --- a/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java +++ b/engine/src/main/java/org/teiid/dqp/internal/process/DataTierManagerImpl.java @@ -924,7 +924,11 @@ public void fillRow(List row, AbstractMetadataRecord entry, VDBMetaData row.add(getType(currentParent)); row.add(currentParent.getParent().getName()); row.add(currentParent.getName()); - row.add(null); //column usage not yet supported + if (currentParent instanceof Column) { + row.add(currentParent.getName()); + } else { + row.add(null); + } row.add(entry.getUUID()); row.add(getType(entry)); if (entry instanceof Column) { diff --git a/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java b/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java index 9723e4cf9d..e71a9cf198 100644 --- a/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java +++ b/engine/src/main/java/org/teiid/query/metadata/MetadataValidator.java @@ -54,7 +54,9 @@ import org.teiid.query.resolver.util.ResolverVisitor; import org.teiid.query.sql.lang.CacheHint; import org.teiid.query.sql.lang.Command; +import org.teiid.query.sql.lang.Query; import org.teiid.query.sql.lang.QueryCommand; +import org.teiid.query.sql.lang.SetQuery; import org.teiid.query.sql.navigator.PreOrPostOrderNavigator; import org.teiid.query.sql.proc.CreateProcedureCommand; import org.teiid.query.sql.symbol.ElementSymbol; @@ -634,18 +636,33 @@ private void validate(VDBMetaData vdb, ModelMetaData model, AbstractMetadataReco } public static void determineDependencies(AbstractMetadataRecord p, Command command) { - Collection groups = GroupCollectorVisitor.getGroupsIgnoreInlineViews(command, true); LinkedHashSet values = new LinkedHashSet(); - for (GroupSymbol group : groups) { - Object mid = group.getMetadataID(); - if (mid instanceof TempMetadataAdapter) { - mid = ((TempMetadataID)mid).getOriginalMetadataID(); - } - if (mid instanceof AbstractMetadataRecord) { - values.add((AbstractMetadataRecord)mid); - } + collectDependencies(command, values); + p.setIncomingObjects(new ArrayList(values)); + if (p instanceof Table) { + Table t = (Table)p; + for (int i = 0; i < t.getColumns().size(); i++) { + LinkedHashSet columnValues = new LinkedHashSet(); + Column c = t.getColumns().get(i); + c.setIncomingObjects(columnValues); + determineDependencies(command, c, i, columnValues); + } } - Collection elems = ElementCollectorVisitor.getElements(command, true, true); + } + + private static void collectDependencies(org.teiid.query.sql.LanguageObject lo, + LinkedHashSet values) { + Collection groups = GroupCollectorVisitor.getGroupsIgnoreInlineViews(lo, true); + for (GroupSymbol group : groups) { + Object mid = group.getMetadataID(); + if (mid instanceof TempMetadataAdapter) { + mid = ((TempMetadataID)mid).getOriginalMetadataID(); + } + if (mid instanceof AbstractMetadataRecord) { + values.add((AbstractMetadataRecord)mid); + } + } + Collection elems = ElementCollectorVisitor.getElements(lo, true, true); for (ElementSymbol elem : elems) { Object mid = elem.getMetadataID(); if (mid instanceof TempMetadataAdapter) { @@ -655,8 +672,17 @@ public static void determineDependencies(AbstractMetadataRecord p, Command comma values.add((AbstractMetadataRecord)mid); } } - p.setIncomingObjects(new ArrayList(values)); - } + } + + private static void determineDependencies(Command command, Column c, int index, LinkedHashSet columnValues) { + if (command instanceof Query) { + Expression ex = command.getProjectedSymbols().get(index); + collectDependencies(ex, columnValues); + } else if (command instanceof SetQuery) { + determineDependencies(((SetQuery)command).getLeftQuery(), c, index, columnValues); + determineDependencies(((SetQuery)command).getRightQuery(), c, index, columnValues); + } + } private static Table findTableByName(MetadataStore store, String name) { diff --git a/test-integration/common/src/test/resources/TestSystemVirtualModel/testUsgae.expected b/test-integration/common/src/test/resources/TestSystemVirtualModel/testUsgae.expected index f1035d7e78..e3163c9de6 100644 --- a/test-integration/common/src/test/resources/TestSystemVirtualModel/testUsgae.expected +++ b/test-integration/common/src/test/resources/TestSystemVirtualModel/testUsgae.expected @@ -1,5 +1,7 @@ string string string string string string string string string string string VDBName UID object_type SchemaName Name ElementName Uses_UID Uses_object_type Uses_SchemaName Uses_Name Uses_ElementName +PartsSupplier tid:2cb59cfd55db-25fd8621-00000002 Column GEOMETRY_COLUMNS F_TABLE_CATALOG F_TABLE_CATALOG tid:2cb59cfd55db-36f28338-00000002 Column SYS Columns VDBName +PartsSupplier tid:2cb59cfd55db-4c2e2fbc-00000005 Column GEOMETRY_COLUMNS F_GEOMETRY_COLUMN F_GEOMETRY_COLUMN tid:2cb59cfd55db-f9ef01e4-00000005 Column SYS Columns Name PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-f95478c0-00000008 Table SYS Properties PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-55893f2a-00000000 Table SYS Columns PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-36f28338-00000002 Column SYS Columns VDBName @@ -11,6 +13,23 @@ PartsSupplier tid:2cb59cfd5 PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-f9cb5b69-0000001e Column SYS Columns UID PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-0af46296-00000002 Column SYS Properties Name PartsSupplier tid:2cb59cfd55db-9b5b405d-00000011 View SYS GEOMETRY_COLUMNS tid:2cb59cfd55db-6847855d-00000008 Column SYS Columns DataType +PartsSupplier tid:2cb59cfd55db-9f5cec9d-00000003 Column GEOMETRY_COLUMNS F_TABLE_SCHEMA F_TABLE_SCHEMA tid:2cb59cfd55db-55dc5b25-00000003 Column SYS Columns SchemaName +PartsSupplier tid:2cb59cfd55db-b5ef524e-00000006 Column GEOMETRY_COLUMNS COORD_DIMENSION COORD_DIMENSION tid:2cb59cfd55db-f95478c0-00000008 Table SYS Properties +PartsSupplier tid:2cb59cfd55db-b5ef524e-00000006 Column GEOMETRY_COLUMNS COORD_DIMENSION COORD_DIMENSION tid:2cb59cfd55db-0fb9153c-00000003 Column SYS Properties Value +PartsSupplier tid:2cb59cfd55db-b5ef524e-00000006 Column GEOMETRY_COLUMNS COORD_DIMENSION COORD_DIMENSION tid:2cb59cfd55db-0ad0bc1b-00000004 Column SYS Properties UID +PartsSupplier tid:2cb59cfd55db-b5ef524e-00000006 Column GEOMETRY_COLUMNS COORD_DIMENSION COORD_DIMENSION tid:2cb59cfd55db-f9cb5b69-0000001e Column SYS Columns UID +PartsSupplier tid:2cb59cfd55db-b5ef524e-00000006 Column GEOMETRY_COLUMNS COORD_DIMENSION COORD_DIMENSION tid:2cb59cfd55db-0af46296-00000002 Column SYS Properties Name +PartsSupplier tid:2cb59cfd55db-d40e55ac-00000007 Column GEOMETRY_COLUMNS SRID SRID tid:2cb59cfd55db-f95478c0-00000008 Table SYS Properties +PartsSupplier tid:2cb59cfd55db-d40e55ac-00000007 Column GEOMETRY_COLUMNS SRID SRID tid:2cb59cfd55db-0fb9153c-00000003 Column SYS Properties Value +PartsSupplier tid:2cb59cfd55db-d40e55ac-00000007 Column GEOMETRY_COLUMNS SRID SRID tid:2cb59cfd55db-0ad0bc1b-00000004 Column SYS Properties UID +PartsSupplier tid:2cb59cfd55db-d40e55ac-00000007 Column GEOMETRY_COLUMNS SRID SRID tid:2cb59cfd55db-f9cb5b69-0000001e Column SYS Columns UID +PartsSupplier tid:2cb59cfd55db-d40e55ac-00000007 Column GEOMETRY_COLUMNS SRID SRID tid:2cb59cfd55db-0af46296-00000002 Column SYS Properties Name +PartsSupplier tid:2cb59cfd55db-d40ee52c-00000008 Column GEOMETRY_COLUMNS TYPE TYPE tid:2cb59cfd55db-f95478c0-00000008 Table SYS Properties +PartsSupplier tid:2cb59cfd55db-d40ee52c-00000008 Column GEOMETRY_COLUMNS TYPE TYPE tid:2cb59cfd55db-0fb9153c-00000003 Column SYS Properties Value +PartsSupplier tid:2cb59cfd55db-d40ee52c-00000008 Column GEOMETRY_COLUMNS TYPE TYPE tid:2cb59cfd55db-0ad0bc1b-00000004 Column SYS Properties UID +PartsSupplier tid:2cb59cfd55db-d40ee52c-00000008 Column GEOMETRY_COLUMNS TYPE TYPE tid:2cb59cfd55db-f9cb5b69-0000001e Column SYS Columns UID +PartsSupplier tid:2cb59cfd55db-d40ee52c-00000008 Column GEOMETRY_COLUMNS TYPE TYPE tid:2cb59cfd55db-0af46296-00000002 Column SYS Properties Name +PartsSupplier tid:2cb59cfd55db-f456f007-00000004 Column GEOMETRY_COLUMNS F_TABLE_NAME F_TABLE_NAME tid:2cb59cfd55db-fab2c692-00000004 Column SYS Columns TableName PartsSupplier tid:60b87e792634-b92d8ad8-00000034 StoredProcedure SYSADMIN updateMatView tid:2cb59cfd55db-63962f1a-0000000c Table SYS VirtualDatabases PartsSupplier tid:60b87e792634-b92d8ad8-00000034 StoredProcedure SYSADMIN updateMatView tid:2cb59cfd55db-4e9139f2-0000000b Table SYS Tables PartsSupplier tid:60b87e792634-b92d8ad8-00000034 StoredProcedure SYSADMIN updateMatView tid:2cb59cfd55db-f95478c0-00000008 Table SYS Properties @@ -98,7 +117,7 @@ PartsSupplier tid:60b87e792 PartsSupplier tid:60b87e792634-f3c7941b-0000002f StoredProcedure SYSADMIN loadMatView tid:2cb59cfd55db-f9ef01e4-00000005 Column SYS Columns Name PartsSupplier tid:60b87e792634-f3c7941b-0000002f StoredProcedure SYSADMIN loadMatView tid:2cb59cfd55db-55dc5b25-00000003 Column SYS Columns SchemaName PartsSupplier tid:60b87e792634-f3c7941b-0000002f StoredProcedure SYSADMIN loadMatView tid:2cb59cfd55db-fab2c692-00000004 Column SYS Columns TableName -Row Count : 98 +Row Count : 117 getColumnName getColumnType getCatalogName getColumnClassName getColumnLabel getColumnTypeName getSchemaName getTableName getColumnDisplaySize getPrecision getScale isAutoIncrement isCaseSensitive isCurrency isDefinitelyWritable isNullable isReadOnly isSearchable isSigned isWritable VDBName 12 PartsSupplier java.lang.String VDBName string SYSADMIN Usage 255 255 0 false true false false 0 true true false false UID 12 PartsSupplier java.lang.String UID string SYSADMIN Usage 50 50 0 false true false false 0 true true false false