Search in sources :

Example 76 with Table

use of org.teiid.metadata.Table 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)

Example 77 with Table

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

the class TestEmbeddedServer method testImportExcept.

@Ignore("limit to/exclude not yet implemented")
@Test
public void testImportExcept() throws Exception {
    es.start(new EmbeddedConfiguration());
    es.addMetadataRepository("x", new MetadataRepository() {

        @Override
        public void loadMetadata(MetadataFactory factory, ExecutionFactory executionFactory, Object connectionFactory, String text) throws TranslatorException {
            assertEquals("helloworld1,other", factory.getModelProperties().get("importer.excludeTables"));
            Table t = factory.addTable("helloworld");
            t.setVirtual(true);
            factory.addColumn("col", "string", t);
            t.setSelectTransformation("select 'HELLO WORLD'");
        }
    });
    String externalDDL = "CREATE DATABASE test VERSION '1';" + "USE DATABASE test VERSION '1';" + "CREATE VIRTUAL SCHEMA test2;" + "IMPORT FOREIGN SCHEMA public except (helloworld1, other) FROM REPOSITORY x INTO test2;";
    es.deployVDB(new ByteArrayInputStream(externalDDL.getBytes(Charset.forName("UTF-8"))), true);
    ResultSet rs = es.getDriver().connect("jdbc:teiid:test", null).createStatement().executeQuery("select * from helloworld");
    rs.next();
    assertEquals("HELLO WORLD", rs.getString(1));
}
Also used : MetadataRepository(org.teiid.metadata.MetadataRepository) Table(org.teiid.metadata.Table) MetadataFactory(org.teiid.metadata.MetadataFactory) ByteArrayInputStream(java.io.ByteArrayInputStream) ExecutionFactory(org.teiid.translator.ExecutionFactory) TranslatorException(org.teiid.translator.TranslatorException) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 78 with Table

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

the class TestEmbeddedServer method testMultiSourceMetadataMissingSource.

/**
 * Check that we'll consult each source
 * @throws Exception
 */
@Test
public void testMultiSourceMetadataMissingSource() throws Exception {
    EmbeddedConfiguration ec = new EmbeddedConfiguration();
    ec.setUseDisk(false);
    es.start(ec);
    es.addTranslator("t", new ExecutionFactory<Object, Object>() {

        @Override
        public Object getConnection(Object factory) throws TranslatorException {
            return factory;
        }

        @Override
        public void closeConnection(Object connection, Object factory) {
        }

        @Override
        public void getMetadata(MetadataFactory metadataFactory, Object conn) throws TranslatorException {
            assertNotNull(conn);
            Table t = metadataFactory.addTable("x");
            metadataFactory.addColumn("a", "string", t);
        }
    });
    es.addConnectionFactory("b", new Object());
    ModelMetaData mmd1 = new ModelMetaData();
    mmd1.setName("b");
    mmd1.setSupportsMultiSourceBindings(true);
    // a is missing
    mmd1.addSourceMapping("x", "t", "a");
    mmd1.addSourceMapping("y", "t", "b");
    es.deployVDB("vdb", mmd1);
}
Also used : Table(org.teiid.metadata.Table) MetadataFactory(org.teiid.metadata.MetadataFactory) TranslatorException(org.teiid.translator.TranslatorException) ModelMetaData(org.teiid.adminapi.impl.ModelMetaData) Test(org.junit.Test)

Example 79 with Table

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

the class TestGroup method helpTestGroup.

public void helpTestGroup(String fullGroupName, String nameInSource, Properties expectedProps, TranslationUtility transUtil) throws Exception {
    Table group = getGroup(fullGroupName, transUtil);
    // $NON-NLS-1$
    assertEquals("table name in source", group.getNameInSource());
    Map<String, String> extProps = group.getProperties();
    assertEquals(expectedProps, extProps);
}
Also used : NamedTable(org.teiid.language.NamedTable) Table(org.teiid.metadata.Table)

Example 80 with Table

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

the class TestMetadataObject method helpTestGroupID.

public void helpTestGroupID(String fullGroupName, String shortGroupName, int elementCount, TranslationUtility transUtil) throws Exception {
    Table groupID = getGroupID(fullGroupName, transUtil);
    assertEquals(fullGroupName, groupID.getFullName());
    assertEquals(shortGroupName, groupID.getName());
    // Check children
    List<Column> children = groupID.getColumns();
    assertEquals(elementCount, children.size());
    for (Column element : children) {
        assertEquals(groupID, element.getParent());
        assertTrue(element.getFullName().startsWith(groupID.getFullName()));
    }
}
Also used : NamedTable(org.teiid.language.NamedTable) Table(org.teiid.metadata.Table) Column(org.teiid.metadata.Column) DerivedColumn(org.teiid.language.DerivedColumn)

Aggregations

Table (org.teiid.metadata.Table)239 Test (org.junit.Test)82 Column (org.teiid.metadata.Column)72 MetadataFactory (org.teiid.metadata.MetadataFactory)59 Properties (java.util.Properties)45 MetadataStore (org.teiid.metadata.MetadataStore)37 Schema (org.teiid.metadata.Schema)35 TranslatorException (org.teiid.translator.TranslatorException)30 ArrayList (java.util.ArrayList)27 TransformationMetadata (org.teiid.query.metadata.TransformationMetadata)27 RealMetadataFactory (org.teiid.query.unittest.RealMetadataFactory)23 List (java.util.List)22 ForeignKey (org.teiid.metadata.ForeignKey)22 Connection (java.sql.Connection)15 QueryNode (org.teiid.query.mapping.relational.QueryNode)15 BasicSourceCapabilities (org.teiid.query.optimizer.capabilities.BasicSourceCapabilities)15 KeyRecord (org.teiid.metadata.KeyRecord)14 Dimension (org.teiid.translator.couchbase.CouchbaseMetadataProcessor.Dimension)14 CouchbaseMetadataProcessor (org.teiid.translator.couchbase.CouchbaseMetadataProcessor)13 CouchbaseProperties (org.teiid.translator.couchbase.CouchbaseProperties)13