functionMethod.setProperty(FunctionMethod.SYSTEM_NAME, functionMethod.getName()); ValidatorReport report = new ValidatorReport("Function Validation"); //$NON-NLS-1$ FunctionMetadataValidator.validateFunctionMethods(functions, report); if(report.hasItems()) { throw new TeiidRuntimeException(report.getFailureMessage());
public static void validateWithVisitor( AbstractValidationVisitor visitor, QueryMetadataInterface metadata, Command command) throws QueryValidatorException, TeiidComponentException { // Validate with visitor ValidatorReport report = Validator.validate(command, metadata, visitor); if (report.hasItems()) { ValidatorFailure firstFailure = report.getItems().iterator().next(); throw new QueryValidatorException(QueryPlugin.Event.TEIID30492, firstFailure.getMessage()); } }
/** * Update a report with a validation error. * @param report The report to update * @param method The function method * @param message The message about the validation failure */ private static final void updateReport(ValidatorReport report, FunctionMethod method, String message) { report.addItem(new InvalidFunctionItem(method, message)); }
@Test public void testValidate() { SystemSource source = new SystemSource(); ValidatorReport report = new ValidatorReport("Test Report"); //$NON-NLS-1$ FunctionMetadataValidator.validateFunctionMethods(source.getFunctionMethods(), report); if(report.hasItems()) { fail("Got validation errors while validating system functions: " + report); //$NON-NLS-1$ } } }
private void validateProcedure(String userUpdateStr, QueryMetadataInterface metadata) throws QueryResolverException, QueryMetadataException, TeiidComponentException, QueryValidatorException { ProcedureContainer command = (ProcedureContainer)helpResolve(userUpdateStr, metadata); Command proc = QueryResolver.expandCommand(command, metadata, AnalysisRecord.createNonRecordingRecord()); ValidatorReport report = Validator.validate(proc, metadata); if(report.hasItems()) { throw new QueryValidatorException(report.getFailureMessage()); } report = Validator.validate(command, metadata); if(report.hasItems()) { throw new QueryValidatorException(report.getFailureMessage()); } }
public void collectInvalidObjects(Collection<LanguageObject> invalidObjects) { for (ValidatorFailure failure : getItems()) { if(failure.getInvalidObjectCount() > 0) { invalidObjects.addAll(failure.getInvalidObjects()); } } }
@Test public void testProcMetadataValidationError() throws Exception { String ddl = "create virtual procedure proc1(IN e1 varchar) RETURNS (e1 integer, e2 varchar(12)) AS begin create local temporary table x (e1 integer, e2 varchar not null); insert into x (e1) values (1); select * from x; end;"; buildModel("vm1", false, this.vdb, this.store, ddl); buildTransformationMetadata(); ValidatorReport report = new ValidatorReport(); new MetadataValidator.ResolveQueryPlans().execute(vdb, store, report, new MetadataValidator()); assertEquals("TEIID31080 vm1.proc1 validation error: Element x.e2 of x is neither nullable nor has a default value. A value must be specified in the insert.", report.getItems().iterator().next().toString()); }
@Test public void testDynamicIntoDeclaredTemp() throws Exception { StringBuffer procedure = new StringBuffer("CREATE VIRTUAL PROCEDURE ") //$NON-NLS-1$ .append("BEGIN\n") //$NON-NLS-1$ .append("CREATE LOCAL TEMPORARY TABLE x (column1 string);") //$NON-NLS-1$ .append("execute string 'SELECT e1 FROM pm1.g2' as e1 string INTO x;\n") //$NON-NLS-1$ .append("select cast(column1 as integer) from x;\n") //$NON-NLS-1$ .append("END\n"); //$NON-NLS-1$ QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); // Validate ValidatorReport report = helpValidateInModeler("pm1.vsp36", procedure.toString(), metadata); //$NON-NLS-1$ assertEquals(report.toString(), 0, report.getItems().size()); }
@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 String toString() { return this.getFailureMessage(); }
private static void examineReport(Object command, String[] expectedStringArray, ValidatorReport report) { // Get invalid objects from report Collection<LanguageObject> actualObjs = new ArrayList<LanguageObject>(); report.collectInvalidObjects(actualObjs); // Compare expected and actual objects Set<String> expectedStrings = new HashSet<String>(Arrays.asList(expectedStringArray)); Set<String> actualStrings = new HashSet<String>(); for (LanguageObject obj : actualObjs) { actualStrings.add(SQLStringVisitor.getSQLString(obj)); } if(expectedStrings.size() == 0 && actualStrings.size() > 0) { fail("Expected no failures but got some: " + report.getFailureMessage()); //$NON-NLS-1$ } else if(actualStrings.size() == 0 && expectedStrings.size() > 0) { fail("Expected some failures but got none for sql = " + command); //$NON-NLS-1$ } else { assertEquals("Expected and actual sets of strings are not the same: ", expectedStrings, actualStrings); //$NON-NLS-1$ } }
public ValidatorReport validate(VDBMetaData vdb, MetadataStore store) { ValidatorReport report = new ValidatorReport(); if (store != null && !store.getSchemaList().isEmpty()) { new SourceModelArtifacts().execute(vdb, store, report, this); new CrossSchemaResolver().execute(vdb, store, report, this); new ResolveQueryPlans().execute(vdb, store, report, this); new MinimalMetadata().execute(vdb, store, report, this); new MatViewPropertiesValidator().execute(vdb, store, report, this); } return report; }
private void setUpdateFlags(GroupSymbol groupSymbol) throws QueryMetadataException, TeiidComponentException { UpdateMapping info = updateInfo.updatableGroups.get(groupSymbol.getName()); if (info == null) { return; // not projected } if (!metadata.groupSupports(groupSymbol.getMetadataID(), SupportConstants.Group.UPDATE)) { report.handleValidationWarning(QueryPlugin.Util.getString("ERR.015.012.0003", groupSymbol)); //$NON-NLS-1$ return; } info.insertAllowed = true; for (ElementSymbol es : ResolverUtil.resolveElementsInGroup(info.group, metadata)) { if (!info.updatableViewSymbols.values().contains(es) && !validateInsertElement(es)) { info.insertAllowed = false; } } info.updateAllowed = true; }
private void handleValidationError(String error, boolean update, boolean insert, boolean delete) { if (update && insert && delete) { report.handleValidationError(error); updateInfo.setUpdateValidationError(error); updateInfo.setInsertValidationError(error); updateInfo.setDeleteValidationError(error); } else { if (update) { updateReport.handleValidationError(error); updateInfo.setUpdateValidationError(error); } if (insert) { insertReport.handleValidationError(error); updateInfo.setInsertValidationError(error); } if (delete) { deleteReport.handleValidationError(error); updateInfo.setDeleteValidationError(error); } } }
private ValidatorReport helpTest(String ddl, boolean expectErrors) throws Exception { buildModel("pm1", true, this.vdb, this.store, ddl); buildTransformationMetadata(); ValidatorReport report = new ValidatorReport(); report = new MetadataValidator().validate(this.vdb, this.store); if (expectErrors) { assertTrue(printError(report), report.hasItems()); } else { assertFalse(printError(report), report.hasItems()); } return report; }
MetadataValidator validator = new MetadataValidator(this.typeMap, parser); ValidatorReport report = validator.validate(vdb, systemStore); if (report.hasItems()) { throw new TeiidRuntimeException(report.getFailureMessage());
public void collectInvalidObjects(Collection<LanguageObject> invalidObjects) { for (ValidatorFailure failure : getItems()) { if(failure.getInvalidObjectCount() > 0) { invalidObjects.addAll(failure.getInvalidObjects()); } } }
@Test public void testDisallowUpdateOnMultisourceElement() throws Exception { Set<String> models = new HashSet<String>(); models.add("pm1"); ValidatorReport report = helpValidateInModeler("pm1.vsp36", "UPDATE PM1.G1 set SOURCE_NAME='blah'", new MultiSourceMetadataWrapper(RealMetadataFactory.example1(), models)); //$NON-NLS-1$ assertEquals(report.toString(), 1, report.getItems().size()); }
@Test public void testConstraintNames() throws Exception { buildModel("phy1", true, this.vdb, this.store, "CREATE FOREIGN TABLE t1 ( col1 string, col2 integer, constraint x primary key (col1), constraint x unique (col2) )"); buildTransformationMetadata(); ValidatorReport report = new MetadataValidator().validate(this.vdb, this.store); assertTrue(printError(report), report.hasItems()); }
public String toString() { return this.getFailureMessage(); }