private Criteria parseCriteria(String critStr, QueryMetadataInterface metadata) { try { Criteria crit = QueryParser.getQueryParser().parseCriteria(critStr); // resolve against metadata QueryResolver.resolveCriteria(crit, metadata); return crit; } catch(TeiidException e) { throw new RuntimeException(e); } }
public void helpTestVisitor(String sql, Object modelID, TransformationMetadata metadata, CapabilitiesFinder capFinder, boolean isValid, boolean expectException) throws Exception { try { Criteria criteria = QueryParser.getQueryParser().parseCriteria(sql); QueryResolver.resolveCriteria(criteria, metadata); assertEquals("Got incorrect isValid flag", isValid, CriteriaCapabilityValidatorVisitor.canPushLanguageObject(criteria, modelID, metadata, capFinder, null)); //$NON-NLS-1$ } catch(QueryMetadataException e) { if (!expectException) { throw new RuntimeException(e); } } }
private Criteria helpTestRewriteCriteria(String original, String expected, boolean rewrite) throws QueryMetadataException, TeiidComponentException, TeiidProcessingException { QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); Criteria expectedCrit = parseCriteria(expected, metadata); if (rewrite) { QueryResolver.resolveCriteria(expectedCrit, metadata); expectedCrit = QueryRewriter.rewriteCriteria(expectedCrit, null, metadata); } return helpTestRewriteCriteria(original, expectedCrit, metadata); }
private static Criteria helpGetCriteria(String critString, QueryMetadataInterface metadata) throws QueryMetadataException, TeiidComponentException, TeiidProcessingException{ Criteria result = QueryParser.getQueryParser().parseCriteria(critString); QueryResolver.resolveCriteria(result, metadata); result = QueryRewriter.rewriteCriteria(result, new CommandContext(), metadata); return result; }
@Test public void testRewriteCase1954b() throws Exception{ QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); CompareCriteria expected = new CompareCriteria(); ElementSymbol leftElement = new ElementSymbol("pm1.g1.e4"); //$NON-NLS-1$ Constant constant = new Constant(new Double(3.0), DataTypeManager.DefaultDataClasses.DOUBLE); expected.setLeftExpression(leftElement); expected.setRightExpression(constant); // resolve against metadata QueryResolver.resolveCriteria(expected, metadata); helpTestRewriteCriteria("convert(pm1.g1.e4, string) = '3.0'", expected, metadata); //$NON-NLS-1$ }
/** * Assumes that pm1.g1 is the only inner group */ private void helpTestNullDependentVisitor(String critSQL, boolean dependent) throws QueryParserException, QueryResolverException, QueryMetadataException, TeiidComponentException { List<GroupSymbol> innerGroups = new ArrayList<GroupSymbol>(); innerGroups.add(new GroupSymbol("pm1.g1")); //$NON-NLS-1$ Criteria crit = QueryParser.getQueryParser().parseCriteria(critSQL); QueryResolver.resolveCriteria(crit, RealMetadataFactory.example1Cached()); assertEquals(dependent, JoinUtil.isNullDependent(RealMetadataFactory.example1Cached(), innerGroups, crit)); }
@Test public void testSetCriteriaCastFromExpression_9657() { // parse Criteria actual = null; try { actual = QueryParser.getQueryParser().parseCriteria("bqt1.smalla.shortvalue IN (1, 2)"); //$NON-NLS-1$ } catch(TeiidException e) { fail("Exception during parsing (" + e.getClass().getName() + "): " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ } // resolve try { QueryResolver.resolveCriteria(actual, RealMetadataFactory.exampleBQTCached()); } catch(TeiidException e) { fail("Exception during resolution (" + e.getClass().getName() + "): " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ } assertEquals("Did not match expected criteria", ((SetCriteria)actual).getExpression().getType(), DataTypeManager.DefaultDataClasses.SHORT); //$NON-NLS-1$ }
private Criteria helpResolveCriteria(String sql) { Criteria criteria = null; // parse try { criteria = QueryParser.getQueryParser().parseCriteria(sql); } catch(TeiidException e) { fail("Exception during parsing (" + e.getClass().getName() + "): " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ } // resolve try { QueryResolver.resolveCriteria(criteria, metadata); } catch(TeiidException e) { e.printStackTrace(); fail("Exception during resolution (" + e.getClass().getName() + "): " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ } CheckSymbolsAreResolvedVisitor vis = new CheckSymbolsAreResolvedVisitor(); DeepPreOrderNavigator.doVisit(criteria, vis); Collection<LanguageObject> unresolvedSymbols = vis.getUnresolvedSymbols(); assertTrue("Found unresolved symbols: " + unresolvedSymbols, unresolvedSymbols.isEmpty()); //$NON-NLS-1$ return criteria; }
@Test public void testResolveUnqualifiedCriteria() throws Exception{ Criteria criteria = QueryParser.getQueryParser().parseCriteria("e1 = 1"); //$NON-NLS-1$ // resolve try { QueryResolver.resolveCriteria(criteria, metadata); fail("Exception expected"); //$NON-NLS-1$ } catch(QueryResolverException e) { assertEquals("TEIID31119 Symbol e1 is specified with an unknown group context", e.getMessage()); //$NON-NLS-1$ } }