Search in sources :

Example 56 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class HiveMetadataProcessor method addTable.

private void addTable(String tableName, Connection conn, MetadataFactory metadataFactory) throws SQLException {
    Table table = addTable(metadataFactory, null, null, tableName, null, tableName);
    if (table == null) {
        return;
    }
    Statement stmt = conn.createStatement();
    // $NON-NLS-1$
    ResultSet rs = stmt.executeQuery("DESCRIBE " + tableName);
    while (rs.next()) {
        String name = rs.getString(1);
        if (this.trimColumnNames) {
            name = name.trim();
        }
        String type = rs.getString(2);
        if (type != null) {
            type = type.trim();
        }
        String runtimeType = getRuntimeType(type);
        Column column = metadataFactory.addColumn(name, runtimeType, table);
        column.setNameInSource(quoteName(name));
        column.setUpdatable(true);
    }
    rs.close();
}
Also used : Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) Statement(java.sql.Statement) ResultSet(java.sql.ResultSet)

Example 57 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class TempTableResolver method addAdditionalMetadata.

public static void addAdditionalMetadata(Create create, TempMetadataID tempTable) {
    if (!create.getPrimaryKey().isEmpty()) {
        ArrayList<TempMetadataID> primaryKey = new ArrayList<TempMetadataID>(create.getPrimaryKey().size());
        for (ElementSymbol symbol : create.getPrimaryKey()) {
            Object mid = symbol.getMetadataID();
            if (mid instanceof TempMetadataID) {
                primaryKey.add((TempMetadataID) mid);
            } else if (mid instanceof Column) {
                // TODO: this breaks our normal metadata usage
                primaryKey.add(tempTable.getElements().get(((Column) mid).getPosition() - 1));
            }
        }
        tempTable.setPrimaryKey(primaryKey);
    }
    for (int i = 0; i < create.getColumns().size(); i++) {
        Column column = create.getColumns().get(i);
        TempMetadataID tid = tempTable.getElements().get(i);
        if (column.isAutoIncremented()) {
            tid.setAutoIncrement(true);
        }
        if (column.getNullType() == NullType.No_Nulls) {
            tid.setNotNull(true);
        }
    }
}
Also used : ElementSymbol(org.teiid.query.sql.symbol.ElementSymbol) Column(org.teiid.metadata.Column) TempMetadataID(org.teiid.query.metadata.TempMetadataID) ArrayList(java.util.ArrayList)

Example 58 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class TestUpdateValidator method example1.

public static TransformationMetadata example1(boolean allUpdatable) {
    MetadataStore metadataStore = new MetadataStore();
    // Create models
    // $NON-NLS-1$
    Schema pm1 = RealMetadataFactory.createPhysicalModel("pm1", metadataStore);
    // $NON-NLS-1$
    Schema vm1 = RealMetadataFactory.createVirtualModel("vm1", metadataStore);
    // Create physical groups
    // $NON-NLS-1$
    Table pm1g1 = RealMetadataFactory.createPhysicalGroup("g1", pm1);
    // $NON-NLS-1$
    Table pm1g2 = RealMetadataFactory.createPhysicalGroup("g2", pm1);
    // $NON-NLS-1$
    Table pm1g3 = RealMetadataFactory.createPhysicalGroup("g3", pm1);
    // Create physical elements
    List<Column> pm1g1e = RealMetadataFactory.createElements(pm1g1, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e1", "e2", "e3", "e4" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
    if (!allUpdatable) {
        pm1g1e.get(0).setUpdatable(false);
    }
    KeyRecord pk = RealMetadataFactory.createKey(Type.Primary, "pk", pm1g1, pm1g1e.subList(0, 1));
    List<Column> pm1g2e = RealMetadataFactory.createElements(pm1g2, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e1", "e2", "e3", "e4" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
    RealMetadataFactory.createKey(Type.Primary, "pk", pm1g2, pm1g1e.subList(1, 2));
    RealMetadataFactory.createForeignKey("fk", pm1g2, pm1g2e.subList(0, 1), pk);
    List<Column> pm1g3e = RealMetadataFactory.createElements(pm1g3, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e1", "e2", "e3", "e4" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
    pm1g3e.get(0).setNullType(NullType.No_Nulls);
    pm1g3e.get(0).setDefaultValue(null);
    pm1g3e.get(1).setNullType(NullType.No_Nulls);
    pm1g3e.get(1).setAutoIncremented(true);
    pm1g3e.get(1).setDefaultValue(null);
    pm1g3e.get(2).setNullType(NullType.No_Nulls);
    // $NON-NLS-1$
    pm1g3e.get(2).setDefaultValue("xyz");
    RealMetadataFactory.createKey(Type.Primary, "pk", pm1g3, pm1g3e.subList(0, 1));
    // Create virtual groups
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vm1g1n1 = new QueryNode("SELECT e1 as a, e2 FROM pm1.g1 WHERE e3 > 5");
    // $NON-NLS-1$
    Table vm1g1 = RealMetadataFactory.createUpdatableVirtualGroup("g1", vm1, vm1g1n1);
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vm1g2n1 = new QueryNode("SELECT e1, e2, e3, e4 FROM pm1.g2 WHERE e3 > 5");
    // $NON-NLS-1$
    Table vm1g2 = RealMetadataFactory.createUpdatableVirtualGroup("g2", vm1, vm1g2n1);
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vm1g3n1 = new QueryNode("SELECT e1, e3 FROM pm1.g3");
    // $NON-NLS-1$
    Table vm1g3 = RealMetadataFactory.createUpdatableVirtualGroup("g3", vm1, vm1g3n1);
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vm1g4n1 = new QueryNode("SELECT e1, e2 FROM pm1.g3");
    // $NON-NLS-1$
    Table vm1g4 = RealMetadataFactory.createUpdatableVirtualGroup("g4", vm1, vm1g4n1);
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vm1g5n1 = new QueryNode("SELECT e2, e3 FROM pm1.g3");
    // $NON-NLS-1$
    Table vm1g5 = RealMetadataFactory.createVirtualGroup("g5", vm1, vm1g5n1);
    // Create virtual elements
    RealMetadataFactory.createElements(vm1g1, // $NON-NLS-1$ //$NON-NLS-2$
    new String[] { "a", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
    RealMetadataFactory.createElements(vm1g2, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e1", "e2", "e3", "e4" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN, DataTypeManager.DefaultDataTypes.DOUBLE });
    RealMetadataFactory.createElements(vm1g3, // $NON-NLS-1$ //$NON-NLS-2$
    new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
    RealMetadataFactory.createElements(vm1g4, // $NON-NLS-1$ //$NON-NLS-2$
    new String[] { "e1", "e3" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.BOOLEAN });
    RealMetadataFactory.createElements(vm1g5, // $NON-NLS-1$ //$NON-NLS-2$
    new String[] { "e2", "e3" }, new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.BOOLEAN });
    // Stored queries
    // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
    ColumnSet<Procedure> rs1 = RealMetadataFactory.createResultSet("rs1", new String[] { "e1", "e2" }, new String[] { DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.INTEGER });
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode sq1n1 = new QueryNode("CREATE VIRTUAL PROCEDURE BEGIN SELECT e1, e2 FROM pm1.g1; END");
    // $NON-NLS-1$
    Procedure sq1 = RealMetadataFactory.createVirtualProcedure("sq1", pm1, Collections.EMPTY_LIST, sq1n1);
    sq1.setResultSet(rs1);
    // Create the facade from the store
    return RealMetadataFactory.createTransformationMetadata(metadataStore, "example");
}
Also used : MetadataStore(org.teiid.metadata.MetadataStore) KeyRecord(org.teiid.metadata.KeyRecord) Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) QueryNode(org.teiid.query.mapping.relational.QueryNode) Schema(org.teiid.metadata.Schema) Procedure(org.teiid.metadata.Procedure)

Example 59 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class TestValidator method exampleMetadata.

public static TransformationMetadata exampleMetadata() {
    MetadataStore metadataStore = new MetadataStore();
    // Create metadata objects
    // $NON-NLS-1$
    Schema modelObj = RealMetadataFactory.createPhysicalModel("test", metadataStore);
    // $NON-NLS-1$
    Schema vModelObj2 = RealMetadataFactory.createVirtualModel("vTest", metadataStore);
    // $NON-NLS-1$
    Table groupObj = RealMetadataFactory.createPhysicalGroup("group", modelObj);
    // $NON-NLS-1$
    Column elemObj0 = RealMetadataFactory.createElement("e0", groupObj, DataTypeManager.DefaultDataTypes.INTEGER);
    elemObj0.setNullType(NullType.No_Nulls);
    // $NON-NLS-1$
    Column elemObj1 = RealMetadataFactory.createElement("e1", groupObj, DataTypeManager.DefaultDataTypes.STRING);
    elemObj1.setSelectable(false);
    // $NON-NLS-1$
    Column elemObj2 = RealMetadataFactory.createElement("e2", groupObj, DataTypeManager.DefaultDataTypes.STRING);
    elemObj2.setSearchType(SearchType.Like_Only);
    // $NON-NLS-1$
    Column elemObj3 = RealMetadataFactory.createElement("e3", groupObj, DataTypeManager.DefaultDataTypes.STRING);
    elemObj3.setSearchType(SearchType.All_Except_Like);
    // $NON-NLS-1$
    Table group2Obj = RealMetadataFactory.createPhysicalGroup("group2", modelObj);
    // $NON-NLS-1$
    Column elemObj2_0 = RealMetadataFactory.createElement("e0", group2Obj, DataTypeManager.DefaultDataTypes.INTEGER);
    elemObj2_0.setUpdatable(false);
    // $NON-NLS-1$
    RealMetadataFactory.createElement("e1", group2Obj, DataTypeManager.DefaultDataTypes.STRING);
    // $NON-NLS-1$
    Column elemObj2_2 = RealMetadataFactory.createElement("e2", group2Obj, DataTypeManager.DefaultDataTypes.STRING);
    elemObj2_2.setUpdatable(false);
    // $NON-NLS-1$
    Table group3Obj = RealMetadataFactory.createPhysicalGroup("group3", modelObj);
    group3Obj.setSupportsUpdate(false);
    // $NON-NLS-1$
    RealMetadataFactory.createElement("e0", group3Obj, DataTypeManager.DefaultDataTypes.INTEGER);
    // $NON-NLS-1$
    RealMetadataFactory.createElement("e1", group3Obj, DataTypeManager.DefaultDataTypes.STRING);
    // $NON-NLS-1$
    RealMetadataFactory.createElement("e2", group3Obj, DataTypeManager.DefaultDataTypes.STRING);
    // Create virtual group & elements.
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vNode = new QueryNode("SELECT * FROM test.group WHERE e2 = 'x'");
    // $NON-NLS-1$
    Table vGroup = RealMetadataFactory.createVirtualGroup("vGroup", vModelObj2, vNode);
    RealMetadataFactory.createElements(vGroup, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e0", "e1", "e2", "e3" }, new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING });
    // $NON-NLS-1$ //$NON-NLS-2$
    QueryNode vNode2 = new QueryNode("SELECT * FROM test.group");
    // $NON-NLS-1$
    Table vGroup2 = RealMetadataFactory.createVirtualGroup("vMap", vModelObj2, vNode2);
    List<Column> vGroupE2 = RealMetadataFactory.createElements(vGroup2, // $NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
    new String[] { "e0", "e1", "e2", "e3" }, new String[] { DataTypeManager.DefaultDataTypes.INTEGER, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING, DataTypeManager.DefaultDataTypes.STRING });
    vGroupE2.get(0).setNullType(NullType.No_Nulls);
    vGroupE2.get(1).setSelectable(false);
    vGroupE2.get(2).setSearchType(SearchType.Like_Only);
    vGroupE2.get(3).setSearchType(SearchType.All_Except_Like);
    return RealMetadataFactory.createTransformationMetadata(metadataStore, "example");
}
Also used : MetadataStore(org.teiid.metadata.MetadataStore) Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) QueryNode(org.teiid.query.mapping.relational.QueryNode) Schema(org.teiid.metadata.Schema)

Example 60 with Column

use of org.teiid.metadata.Column in project teiid by teiid.

the class TestDynamicImportedMetaData method testDDLMetadata.

@Test
public void testDDLMetadata() throws Exception {
    String ddl = "CREATE FOREIGN PROCEDURE getTextFiles(IN pathAndPattern varchar) RETURNS (file clob, filpath string) OPTIONS(UUID 'uuid')";
    MetadataFactory mf = createMetadataFactory("MarketData", new Properties());
    QueryParser.getQueryParser().parseDDL(mf, ddl);
    MetadataStore ms = mf.asMetadataStore();
    String ddl2 = "CREATE VIEW stock (symbol string, price bigdecimal) OPTIONS (UUID 'uuid')" + "AS select stock.* from (call MarketData.getTextFiles('*.txt')) f, " + "TEXTTABLE(f.file COLUMNS symbol string, price bigdecimal HEADER) stock;";
    MetadataFactory m2 = createMetadataFactory("portfolio", new Properties());
    QueryParser.getQueryParser().parseDDL(m2, ddl2);
    m2.getSchema().setPhysical(false);
    m2.mergeInto(ms);
    server.deployVDB("test", ms);
    // $NON-NLS-1$
    Connection conn = server.createConnection("jdbc:teiid:test");
    Properties props = new Properties();
    props.setProperty("importer.importProcedures", Boolean.TRUE.toString());
    MetadataStore store = getMetadata(props, conn).asMetadataStore();
    Procedure p = store.getSchema("test").getProcedure("test.MarketData.getTextFiles");
    assertNotNull(p);
    ProcedureParameter pp = p.getParameters().get(0);
    assertEquals("pathAndPattern", pp.getName());
    assertEquals("\"pathAndPattern\"", pp.getNameInSource());
    assertEquals(ProcedureParameter.Type.In, pp.getType());
    // assertEquals("string", pp.getDatatype().getName());
    Table t = store.getSchema("test").getTable("test.portfolio.stock");
    assertNotNull(t);
    List<Column> columns = t.getColumns();
    assertEquals(2, columns.size());
    assertEquals("symbol", columns.get(0).getName());
    assertEquals("price", columns.get(1).getName());
}
Also used : MetadataStore(org.teiid.metadata.MetadataStore) ProcedureParameter(org.teiid.metadata.ProcedureParameter) Table(org.teiid.metadata.Table) MetadataFactory(org.teiid.metadata.MetadataFactory) Column(org.teiid.metadata.Column) Connection(java.sql.Connection) Procedure(org.teiid.metadata.Procedure) Properties(java.util.Properties) Test(org.junit.Test)

Aggregations

Column (org.teiid.metadata.Column)210 Table (org.teiid.metadata.Table)72 ArrayList (java.util.ArrayList)47 TranslatorException (org.teiid.translator.TranslatorException)47 Test (org.junit.Test)39 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)21 MetadataFactory (org.teiid.metadata.MetadataFactory)20 ElementSymbol (org.teiid.query.sql.symbol.ElementSymbol)19 KeyRecord (org.teiid.metadata.KeyRecord)18 Schema (org.teiid.metadata.Schema)18 MetadataStore (org.teiid.metadata.MetadataStore)17 Procedure (org.teiid.metadata.Procedure)14 RealMetadataFactory (org.teiid.query.unittest.RealMetadataFactory)14 ColumnReference (org.teiid.language.ColumnReference)12 DerivedColumn (org.teiid.language.DerivedColumn)12 Expression (org.teiid.language.Expression)12 Literal (org.teiid.language.Literal)10 QueryNode (org.teiid.query.mapping.relational.QueryNode)9 Connection (java.sql.Connection)7 ResultSet (java.sql.ResultSet)7