use of org.teiid.query.analysis.AnalysisRecord in project teiid by teiid.
the class TestOptimizer method testPlanNodeAnnotation.
@Test
public void testPlanNodeAnnotation() throws Exception {
PlanNode pn = new PlanNode();
TransformationMetadata metadata = RealMetadataFactory.example1Cached();
Object modelID = metadata.getMetadataStore().getSchema("pm1");
AnalysisRecord record = new AnalysisRecord(true, true);
pn.recordDebugAnnotation("hello", modelID, "world", record, metadata);
assertEquals("[LOW [Relational Planner] hello pm1 - world Unknown: 0(groups=[]]", record.getAnnotations().toString());
}
use of org.teiid.query.analysis.AnalysisRecord in project teiid by teiid.
the class TestProcedurePlanner method helpPlanProcedure.
// ################ getReplacementClause tests ###################
private ProcessorPlan helpPlanProcedure(String userQuery, String procedure, TriggerEvent procedureType) throws TeiidComponentException, QueryMetadataException, TeiidProcessingException {
QueryMetadataInterface metadata = RealMetadataFactory.exampleUpdateProc(procedureType, procedure);
QueryParser parser = QueryParser.getQueryParser();
Command userCommand = userQuery != null ? parser.parseCommand(userQuery) : parser.parseCommand(procedure);
if (userCommand instanceof CreateProcedureCommand) {
GroupSymbol gs = new GroupSymbol("proc");
gs.setMetadataID(new TempMetadataID("proc", Collections.EMPTY_LIST));
((CreateProcedureCommand) userCommand).setVirtualGroup(gs);
}
QueryResolver.resolveCommand(userCommand, metadata);
ValidatorReport report = Validator.validate(userCommand, metadata);
if (report.hasItems()) {
ValidatorFailure firstFailure = report.getItems().iterator().next();
throw new QueryValidatorException(firstFailure.getMessage());
}
userCommand = QueryRewriter.rewrite(userCommand, metadata, null);
AnalysisRecord analysisRecord = new AnalysisRecord(false, DEBUG);
try {
return QueryOptimizer.optimizePlan(userCommand, metadata, null, new DefaultCapabilitiesFinder(), analysisRecord, null);
} finally {
if (DEBUG) {
System.out.println(analysisRecord.getDebugLog());
}
}
}
use of org.teiid.query.analysis.AnalysisRecord in project teiid by teiid.
the class TestRuleAccessPatternValidation method helpExecuteRules.
/**
* Simulate execution of the QueryOptimizer rules stack
*/
private static PlanNode helpExecuteRules(RuleStack rules, PlanNode plan, QueryMetadataInterface metadata, boolean debug) throws QueryPlannerException, QueryMetadataException, TeiidComponentException {
CommandContext context = new CommandContext();
while (!rules.isEmpty()) {
if (debug) {
// $NON-NLS-1$
System.out.println("\n============================================================================");
}
OptimizerRule rule = rules.pop();
if (debug) {
// $NON-NLS-1$
System.out.println("EXECUTING " + rule);
}
plan = rule.execute(plan, metadata, FINDER, rules, new AnalysisRecord(false, debug), context);
if (debug) {
// $NON-NLS-1$
System.out.println("\nAFTER: \n" + plan);
}
}
return plan;
}
use of org.teiid.query.analysis.AnalysisRecord in project teiid by teiid.
the class TestMaterialization method testMaterializedTransformationNoCache2.
// related to defect 14423
@Test
public void testMaterializedTransformationNoCache2() throws Exception {
// $NON-NLS-1$
String userSql = "SELECT MATVIEW.E1 FROM MATVIEW OPTION NOCACHE";
QueryMetadataInterface metadata = RealMetadataFactory.exampleMaterializedView();
AnalysisRecord analysis = new AnalysisRecord(true, DEBUG);
Command command = helpGetCommand(userSql, metadata, null);
// $NON-NLS-1$
TestOptimizer.helpPlanCommand(command, metadata, getGenericFinder(), analysis, new String[] { "SELECT g_0.x FROM MatSrc.MatSrc AS g_0" }, ComparisonMode.EXACT_COMMAND_STRING);
Collection<Annotation> annotations = analysis.getAnnotations();
// $NON-NLS-1$
assertNotNull("Expected annotations but got none", annotations);
// $NON-NLS-1$
assertTrue("Expected one annotation", annotations.size() == 1);
// $NON-NLS-1$
assertEquals("Expected catagory mat view", annotations.iterator().next().getCategory(), Annotation.MATERIALIZED_VIEW);
}
use of org.teiid.query.analysis.AnalysisRecord in project teiid by teiid.
the class TestMaterialization method testDefaultMaterialization.
@Test
public void testDefaultMaterialization() throws Exception {
// $NON-NLS-1$
String userSql = "SELECT * from vgroup2";
TransformationMetadata metadata = RealMetadataFactory.exampleMaterializedView();
AnalysisRecord analysis = new AnalysisRecord(true, DEBUG);
Command command = helpGetCommand(userSql, metadata, null);
CommandContext cc = new CommandContext();
GlobalTableStoreImpl gts = new GlobalTableStoreImpl(null, metadata.getVdbMetaData(), metadata);
cc.setGlobalTableStore(gts);
ProcessorPlan plan = TestOptimizer.getPlan(command, metadata, getGenericFinder(), analysis, true, cc);
TestOptimizer.checkAtomicQueries(new String[] { "SELECT #MAT_MATVIEW.VGROUP2.x FROM #MAT_MATVIEW.VGROUP2" }, plan);
Collection<Annotation> annotations = analysis.getAnnotations();
// $NON-NLS-1$
assertNotNull("Expected annotations but got none", annotations);
// $NON-NLS-1$
assertEquals("Expected one annotation", 1, annotations.size());
// $NON-NLS-1$
assertEquals("Expected catagory mat view", annotations.iterator().next().getCategory(), Annotation.MATERIALIZED_VIEW);
}
Aggregations