/** * @see org.teiid.query.sql.lang.Command#areResultsCachable() */ public boolean areResultsCachable() { return Query.areColumnsCachable(getProjectedSymbols()); }
/** * @see org.teiid.query.sql.lang.Command#areResultsCachable() */ public boolean areResultsCachable() { return Query.areColumnsCachable(getProjectedSymbols()); }
/** * @see org.teiid.query.sql.lang.Command#areResultsCachable() */ public boolean areResultsCachable() { return Query.areColumnsCachable(getProjectedSymbols()); }
@Test public void testAnonBlockNoResult() throws Exception { String sql = "begin select 1 as something without return; end"; //$NON-NLS-1$ CreateProcedureCommand sp = (CreateProcedureCommand) TestResolver.helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(0, sp.getProjectedSymbols().size()); assertFalse(sp.returnsResultSet()); }
@Test public void testAnonBlock() throws Exception { String sql = "begin select 1 as something; end"; //$NON-NLS-1$ CreateProcedureCommand sp = (CreateProcedureCommand) TestResolver.helpResolve(sql, RealMetadataFactory.example1Cached()); assertEquals(1, sp.getResultSetColumns().size()); assertEquals("something", Symbol.getName(sp.getResultSetColumns().get(0))); assertEquals(1, sp.getProjectedSymbols().size()); assertTrue(sp.returnsResultSet()); }
@Test public void testReturnAndResultSet() throws Exception { String ddl = "CREATE FOREIGN PROCEDURE proc (OUT param STRING RESULT) RETURNS TABLE (a INTEGER, b STRING);"; //$NON-NLS-1$ TransformationMetadata tm = RealMetadataFactory.fromDDL(ddl, "x", "y"); StoredProcedure sp = (StoredProcedure) TestResolver.helpResolve("exec proc()", tm); assertEquals(2, sp.getProjectedSymbols().size()); assertEquals("y.proc.b", sp.getProjectedSymbols().get(1).toString()); assertTrue(sp.returnsResultSet()); sp.setCallableStatement(true); assertEquals(3, sp.getProjectedSymbols().size()); assertEquals("y.proc.param", sp.getProjectedSymbols().get(2).toString()); CreateProcedureCommand cpc = (CreateProcedureCommand) TestResolver.helpResolve("begin exec proc(); end", tm); assertEquals(2, cpc.getProjectedSymbols().size()); assertEquals(2, ((CommandStatement)cpc.getBlock().getStatements().get(0)).getCommand().getProjectedSymbols().size()); assertTrue(cpc.returnsResultSet()); TestValidator.helpValidate("begin declare string var; var = exec proc(); select var; end", new String[] {"SELECT var;"}, tm); }
plan.setOutputElements(cupc.getProjectedSymbols());
plan.setOutputElements(cupc.getProjectedSymbols());
plan.setOutputElements(cupc.getProjectedSymbols());
@Override public void visit(AlterProcedure obj) { GroupSymbol gs = obj.getTarget(); validateAlterTarget(obj); try { if (!gs.isProcedure() || !getMetadata().isVirtualModel(getMetadata().getModelID(gs.getMetadataID()))) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.not_a_procedure", gs), gs); //$NON-NLS-1$ return; } Validator.validate(obj.getDefinition(), getMetadata(), this); StoredProcedureInfo info = getMetadata().getStoredProcedureInfoForProcedure(gs.getName()); for (SPParameter param : info.getParameters()) { if (param.getParameterType() == SPParameter.RESULT_SET) { QueryResolver.validateProjectedSymbols(gs, param.getResultSetColumns(), obj.getDefinition().getProjectedSymbols()); break; } } } catch (QueryValidatorException e) { handleValidationError(e.getMessage(), obj.getDefinition().getBlock()); } catch (TeiidComponentException e) { handleException(e); } }
@Override public void visit(AlterProcedure obj) { GroupSymbol gs = obj.getTarget(); try { validateAlterTarget(obj); if (!gs.isProcedure() || !getMetadata().isVirtualModel(getMetadata().getModelID(gs.getMetadataID()))) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.not_a_procedure", gs), gs); //$NON-NLS-1$ return; } Validator.validate(obj.getDefinition(), getMetadata(), this); StoredProcedureInfo info = getMetadata().getStoredProcedureInfoForProcedure(gs.getName()); for (SPParameter param : info.getParameters()) { if (param.getParameterType() == SPParameter.RESULT_SET) { QueryResolver.validateProjectedSymbols(gs, param.getResultSetColumns(), obj.getDefinition().getProjectedSymbols()); break; } } } catch (QueryValidatorException e) { handleValidationError(e.getMessage(), obj.getDefinition().getBlock()); } catch (TeiidComponentException e) { handleException(e); } }
@Override public void visit(AlterProcedure obj) { GroupSymbol gs = obj.getTarget(); try { validateAlterTarget(obj); if (!gs.isProcedure() || !getMetadata().isVirtualModel(getMetadata().getModelID(gs.getMetadataID()))) { handleValidationError(QueryPlugin.Util.getString("ValidationVisitor.not_a_procedure", gs), gs); //$NON-NLS-1$ return; } Validator.validate(obj.getDefinition(), getMetadata(), this); StoredProcedureInfo info = getMetadata().getStoredProcedureInfoForProcedure(gs.getName()); for (SPParameter param : info.getParameters()) { if (param.getParameterType() == SPParameter.RESULT_SET) { QueryResolver.validateProjectedSymbols(gs, param.getResultSetColumns(), obj.getDefinition().getProjectedSymbols()); break; } } } catch (QueryValidatorException e) { handleValidationError(e.getMessage(), obj.getDefinition().getBlock()); } catch (TeiidComponentException e) { handleException(e); } }
if (command.getProjectedSymbols().isEmpty()) { command.setProjectedSymbols(subCommand.getResultSetColumns());
if (command.getProjectedSymbols().isEmpty()) { command.setProjectedSymbols(subCommand.getResultSetColumns());
if (command.getProjectedSymbols().isEmpty()) { command.setProjectedSymbols(subCommand.getResultSetColumns());