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();
}
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);
}
}
}
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");
}
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");
}
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());
}
Aggregations