public static MetadataFactory helpParse(String ddl, String model) { MetadataFactory mf = new MetadataFactory("x", 1, model, getDataTypes(), new Properties(), null); QueryParser.getQueryParser().parseDDL(mf, ddl); return mf; }
@Test public void testRenameTable() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE FOREIGN TABLE G1( e1 integer auto_increment primary key, e2 varchar);" + "ALTER TABLE G1 RENAME TO G2"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); }
@Test(expected=MetadataException.class) public void testWrongPrimarykey() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, PRIMARY KEY (e3))"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); }
@Test public void testNamespace() throws Exception { QueryParser parser = new QueryParser(); String ddl = "set namespace 'http://teiid.org' AS teiid"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); assertTrue(mf.getNamespaces().keySet().contains("teiid")); assertEquals("http://teiid.org", mf.getNamespaces().get("teiid")); }
@Test(expected=MetadataException.class) public void testReservedNamespacePrefixMismatch() throws Exception { QueryParser parser = new QueryParser(); String ddl = "set namespace 'http://www.teiid.org/translator/salesforce/2012' AS teiid_foo"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); assertTrue(mf.getNamespaces().keySet().contains("teiid_foo")); assertEquals("http://www.teiid.org/translator/salesforce/2012", mf.getNamespaces().get("teiid_foo")); }
@Test(expected=MetadataException.class) public void testDuplicatePrimarykey() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE FOREIGN TABLE G1( e1 integer primary key, e2 varchar primary key)"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); }
@Test public void testRenameView() throws Exception { QueryParser parser = new QueryParser(); MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "VM1", getDataTypes(), new Properties(), null); parser.parseDDL(mf,"CREATE VIEW V1 AS SELECT * FROM PM1.G1;ALTER VIEW V1 RENAME TO V2"); mf.mergeInto(mds); }
@Test(expected=MetadataException.class) public void testReservedNamespaceURIWrong() throws Exception { QueryParser parser = new QueryParser(); String ddl = "set namespace 'http://www.teiid.org/translator/salesforce/2013' AS teiid_sf"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); assertTrue(mf.getNamespaces().keySet().contains("teiid_sf")); assertEquals("http://www.teiid.org/translator/salesforce/2012", mf.getNamespaces().get("teiid_sf")); }
@Test public void testAutoIncrementPrimarykey() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE FOREIGN TABLE G1( e1 integer auto_increment primary key, e2 varchar)"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); }
@Test public void testRenameTableQualified() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE FOREIGN TABLE G1( e1 integer auto_increment primary key, e2 varchar);" + "ALTER TABLE model.G1 RENAME TO G2"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); }
@Test(expected=MetadataException.class) public void testTableWithPlan() throws Exception { QueryParser parser = new QueryParser(); String ddl = "CREATE foreign table G1 as select 1"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf,ddl); mf.mergeInto(mds); }
@Test public void testViewWithoutColumns() throws Exception { QueryParser parser = new QueryParser(); MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "VM1", getDataTypes(), new Properties(), null); parser.parseDDL(mf,"CREATE VIEW V1 AS SELECT * FROM PM1.G1"); mf.mergeInto(mds); }
@Test public void testViewWithoutColumnTypes() throws Exception { QueryParser parser = new QueryParser(); MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "VM1", getDataTypes(), new Properties(), null); parser.parseDDL(mf,"CREATE VIEW V1 (e11, e12, e13, e14) AS SELECT * FROM PM1.G1"); mf.mergeInto(mds); }
@Test public void testReservedNamespace1() throws Exception { QueryParser parser = new QueryParser(); String ddl = "set namespace 'http://www.teiid.org/translator/salesforce/2012' AS teiid_sf"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); assertTrue(mf.getNamespaces().keySet().contains("teiid_sf")); assertEquals("http://www.teiid.org/translator/salesforce/2012", mf.getNamespaces().get("teiid_sf")); }
@Test public void testReservedURIDifferentNS() throws Exception { QueryParser parser = new QueryParser(); String ddl = "set namespace 'http://www.teiid.org/translator/salesforce/2012' AS ns"; MetadataStore mds = new MetadataStore(); MetadataFactory mf = new MetadataFactory("x", 1, "model", getDataTypes(), new Properties(), null); parser.parseDDL(mf, ddl); mf.mergeInto(mds); assertTrue(mf.getNamespaces().keySet().contains("ns")); assertEquals("http://www.teiid.org/translator/salesforce/2012", mf.getNamespaces().get("ns")); }
@Test public void testKeyResolve() { MetadataFactory mf = new MetadataFactory("x", 1, "foo", getDataTypes(), new Properties(), null); mf.addNamespace("x", "http://x"); assertEquals("{http://x}z", MetadataFactory.resolvePropertyKey(mf, "x:z")); assertEquals("y:z", MetadataFactory.resolvePropertyKey(mf, "y:z")); }
public static Database helpParse(String ddl, DatabaseStore.Mode mode) { final Map<String, Datatype> dataTypes = getDataTypes(); DatabaseStore store = new DatabaseStore() { @Override public Map<String, Datatype> getRuntimeTypes() { return dataTypes; } @Override protected TransformationMetadata getTransformationMetadata() { Database database = getCurrentDatabase(); CompositeMetadataStore store = new CompositeMetadataStore(database.getMetadataStore()); //grants are already stored on the VDBMetaData store.getGrants().clear(); return new TransformationMetadata(DatabaseUtil.convert(database), store, null, null, null); } }; store.startEditing(true); store.setMode(mode); QueryParser.getQueryParser().parseDDL(store, new StringReader(ddl)); store.stopEditing(); if (store.getDatabases().isEmpty()) { return null; } return store.getDatabases().get(0); }
@Test public void testMinimalDataNoColumns() throws Exception { ModelMetaData model = new ModelMetaData(); model.setName("x"); vdb.addModel(model); MetadataFactory mf = new MetadataFactory("myVDB",1, "x", TestDDLParser.getDataTypes(), new Properties(), null); mf.addTable("y"); mf.mergeInto(store); buildTransformationMetadata(); ValidatorReport report = new MetadataValidator().validate(this.vdb, this.store); assertTrue(printError(report), report.hasItems()); }
public static ModelMetaData buildModel(String modelName, boolean physical, VDBMetaData vdb, MetadataStore store, String ddl) throws Exception { ModelMetaData model = new ModelMetaData(); model.setName(modelName); model.setModelType(physical?Model.Type.PHYSICAL:Model.Type.VIRTUAL); vdb.addModel(model); DDLMetadataRepository repo = new DDLMetadataRepository(); MetadataFactory mf = new MetadataFactory("myVDB",1, modelName, TestDDLParser.getDataTypes(), new Properties(), ddl); mf.setParser(QueryParser.getQueryParser()); mf.getSchema().setPhysical(physical); repo.loadMetadata(mf, null, null, ddl); mf.mergeInto(store); model.addAttchment(MetadataFactory.class, mf); return model; }
@Test public void testSkipDocumentModel() throws Exception { ModelMetaData model = new ModelMetaData(); model.setName("xmlstuff"); model.setModelType(Model.Type.VIRTUAL); vdb.addModel(model); MetadataFactory mf = new MetadataFactory("myVDB",1, "xmlstuff", TestDDLParser.getDataTypes(), new Properties(), null); mf.getSchema().setPhysical(false); Table t = mf.addTable("xmldoctable"); t.setTableType(Table.Type.Document); mf.addColumn("c1", "string", t); t.setSelectTransformation("some dummy stuff, should not be validated"); t.setVirtual(true); Table t2 = mf.addTable("xmldoctable2"); t2.setTableType(Table.Type.XmlMappingClass); mf.addColumn("c1", "string", t2); t2.setSelectTransformation("some dummy stuff, should not be validated"); t2.setVirtual(true); mf.mergeInto(store); buildTransformationMetadata(); ValidatorReport report = new MetadataValidator().validate(this.vdb, this.store); assertFalse(printError(report), report.hasItems()); }