protected void resolveCommand(Command command) throws QueryResolverException, TeiidComponentException { //ensure that the user command is distinct from the processing command //rewrite and planning may alter options, symbols, etc. QueryResolver.resolveCommand(command, metadata); }
protected void resolveCommand(Command command) throws QueryResolverException, TeiidComponentException { //ensure that the user command is distinct from the processing command //rewrite and planning may alter options, symbols, etc. QueryResolver.resolveCommand(command, metadata); }
public static Command expandCommand(ProcedureContainer proc, QueryMetadataInterface metadata, AnalysisRecord analysisRecord) throws QueryResolverException, QueryMetadataException, TeiidComponentException { ProcedureContainerResolver cr = (ProcedureContainerResolver)chooseResolver(proc, metadata); Command command = cr.expandCommand(proc, metadata, analysisRecord); if (command == null) { return null; } resolveCommand(command, proc.getGroup(), proc.getType(), metadata.getDesignTimeMetadata(), false); return command; }
private static Command helpGetCommand(String sql, QueryMetadataInterface metadata) throws Exception { Command command = QueryParser.getQueryParser().parseCommand(sql); QueryResolver.resolveCommand(command, metadata); return command; }
private void resolveSubQuery(SubqueryContainer<?> obj, Collection<GroupSymbol> externalGroups) { Command command = obj.getCommand(); QueryResolver.setChildMetadata(command, query); command.pushNewResolvingContext(externalGroups); try { QueryResolver.resolveCommand(command, metadata.getMetadata(), false); } catch (TeiidException err) { throw new TeiidRuntimeException(err); } }
private void validateUpdatePlan(ModelMetaData model, ValidatorReport report, QueryMetadataInterface metadata, Table t, String plan, int type) throws QueryParserException, QueryResolverException, TeiidComponentException { Command command = parser.parseProcedure(plan, true); QueryResolver.resolveCommand(command, new GroupSymbol(t.getFullName()), type, metadata, false); //determineDependencies(t, command); -- these should be tracked against triggers ValidatorReport resolverReport = Validator.validate(command, metadata); processReport(model, t, report, resolverReport); }
public static Call example() throws Exception { String sql = "EXEC pm1.sq3('x', 1)"; //$NON-NLS-1$ Command command = new QueryParser().parseCommand(sql); QueryResolver.resolveCommand(command, TstLanguageBridgeFactory.metadata); return TstLanguageBridgeFactory.factory.translate((StoredProcedure)command); }
@Test public void testCase6319() throws QueryResolverException, TeiidComponentException { String sql = "select floatnum from bqt1.smalla group by floatnum having sum(floatnum) between 51.0 and 100.0 "; //$NON-NLS-1$ Query query = (Query)helpParse(sql); QueryResolver.resolveCommand(query, RealMetadataFactory.exampleBQTCached()); }
public static void resolveSubqueries(Command command, TempMetadataAdapter metadata, Collection<GroupSymbol> externalGroups) throws QueryResolverException, TeiidComponentException { for (SubqueryContainer container : ValueIteratorProviderCollectorVisitor.getValueIteratorProviders(command)) { QueryResolver.setChildMetadata(container.getCommand(), command); if (externalGroups != null) { container.getCommand().pushNewResolvingContext(externalGroups); } QueryResolver.resolveCommand(container.getCommand(), metadata.getMetadata(), false); } }
@Test public void testLookupFunctionFailBadKeyElement() throws Exception { String sql = "SELECT lookup('pm1.g1', 'e1', 'x', e2) AS x, lookup('pm1.g1', 'e4', 'e3', e3) AS y FROM pm1.g1"; //$NON-NLS-1$ Command command = QueryParser.getQueryParser().parseCommand(sql); try { QueryResolver.resolveCommand(command, metadata); fail("exception expected"); //$NON-NLS-1$ } catch (QueryResolverException e) { } }
@Test public void testUnionInSubquery() throws Exception { String sql = "SELECT StringKey FROM (SELECT BQT2.SmallB.StringKey FROM BQT2.SmallB union SELECT convert(BQT2.SmallB.FloatNum, string) FROM BQT2.SmallB) x"; //$NON-NLS-1$ Command command = QueryParser.getQueryParser().parseCommand(sql); QueryResolver.resolveCommand(command, RealMetadataFactory.exampleBQTCached()); }
/** * Test for defect 12087 - Insert with implicit conversion from integer to short */ @Test public void testImplConversionBetweenIntAndShort() throws Exception { Insert command = (Insert)QueryParser.getQueryParser().parseCommand("Insert into pm5.g3(e2) Values(100)"); //$NON-NLS-1$ QueryResolver.resolveCommand(command, metadata); assertTrue(((Expression)command.getValues().get(0)).getType() == DataTypeManager.DefaultDataClasses.SHORT); }
@Test public void testNumberOrderBy() throws Exception { Command command = QueryParser.getQueryParser().parseCommand("select pm1.g1.e1 as a from pm1.g1 order by 1"); //$NON-NLS-1$ QueryResolver.resolveCommand(command, RealMetadataFactory.example1Cached()); helpTest(command, "SELECT pm1.g1.e1 AS a FROM pm1.g1 ORDER BY 1"); //$NON-NLS-1$ }
@Test public void testDefect14886() throws Exception{ String sql = "CREATE VIRTUAL PROCEDURE BEGIN END"; //$NON-NLS-1$ QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); Command command = new QueryParser().parseCommand(sql); QueryResolver.resolveCommand(command, metadata); // Validate ValidatorReport report = Validator.validate(command, metadata); // Validate assertEquals(0, report.getItems().size()); }
CreateProcedureCommand helpResolveUpdateProcedure(String procedure, String userUpdateStr) throws QueryParserException, QueryResolverException, TeiidComponentException, QueryMetadataException { QueryMetadataInterface metadata = RealMetadataFactory.exampleUpdateProc(TriggerEvent.UPDATE, procedure); ProcedureContainer userCommand = (ProcedureContainer)QueryParser.getQueryParser().parseCommand(userUpdateStr); QueryResolver.resolveCommand(userCommand, metadata); return (CreateProcedureCommand)QueryResolver.expandCommand(userCommand, metadata, AnalysisRecord.createNonRecordingRecord()); }
@Test public void testArrayResolvingNull() throws Exception { String sql = "select (null, 'a')"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[].class, command.getProjectedSymbols().get(0).getType()); sql = "select ((null,), ('a',))"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[][].class, command.getProjectedSymbols().get(0).getType()); }
@Test public void testMultiDimensionalGet() throws Exception { String sql = "select -((e2, e2), (e2, e2))[1][1] from pm1.g1"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(DataTypeManager.DefaultDataClasses.INTEGER, command.getProjectedSymbols().get(0).getType()); }
private String getRewritenProcedure(String userUpdateStr, QueryMetadataInterface metadata) throws TeiidComponentException, QueryMetadataException, TeiidProcessingException { ProcedureContainer userCommand = (ProcedureContainer)QueryParser.getQueryParser().parseCommand(userUpdateStr); QueryResolver.resolveCommand(userCommand, metadata); Command proc = QueryResolver.expandCommand(userCommand, metadata, null); QueryRewriter.rewrite(userCommand, metadata, null); Command result = QueryRewriter.rewrite(proc, metadata, null); return result.toString(); }
@Test public void testNullConstantInSelect() throws Exception { String userSql = "SELECT null as x"; //$NON-NLS-1$ Query query = (Query)helpParse(userSql); QueryResolver.resolveCommand(query, RealMetadataFactory.exampleBQTCached()); // Check type of resolved null constant Expression symbol = query.getSelect().getSymbols().get(0); assertNotNull(symbol.getType()); assertEquals(DataTypeManager.DefaultDataClasses.STRING, symbol.getType()); }
@Test public void testMultiDimensionalArrayRewrite() throws Exception { String sql = "select (('a', 'b'),('c','d'))"; //$NON-NLS-1$ QueryResolver.resolveCommand(helpParse(sql), RealMetadataFactory.example1Cached()); Command command = helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(String[][].class, command.getProjectedSymbols().get(0).getType()); command = QueryRewriter.rewrite(command, RealMetadataFactory.example1Cached(), null); Expression ex = SymbolMap.getExpression(command.getProjectedSymbols().get(0)); Constant c = (Constant)ex; assertTrue(c.getValue() instanceof ArrayImpl); }