public LinkedHashMap<ElementSymbol, Expression> getProcedureParameters() { LinkedHashMap<ElementSymbol, Expression> map = new LinkedHashMap<ElementSymbol, Expression>(); for (SPParameter element : this.getInputParameters()) { map.put(element.getParameterSymbol(), element.getExpression()); } // for return map; }
public LinkedHashMap<ElementSymbol, Expression> getProcedureParameters() { LinkedHashMap<ElementSymbol, Expression> map = new LinkedHashMap<ElementSymbol, Expression>(); for (SPParameter element : this.getInputParameters()) { map.put(element.getParameterSymbol(), element.getExpression()); } // for return map; }
public LinkedHashMap<ElementSymbol, Expression> getProcedureParameters() { LinkedHashMap<ElementSymbol, Expression> map = new LinkedHashMap<ElementSymbol, Expression>(); for (SPParameter element : this.getInputParameters()) { map.put(element.getParameterSymbol(), element.getExpression()); } // for return map; }
public void visit(StoredProcedure obj) { for (Iterator<SPParameter> paramIter = obj.getInputParameters().iterator(); paramIter.hasNext();) { SPParameter param = paramIter.next(); Expression expr = param.getExpression(); param.setExpression(replaceExpression(expr)); } }
public void visit(StoredProcedure obj) { for (Iterator<SPParameter> paramIter = obj.getInputParameters().iterator(); paramIter.hasNext();) { SPParameter param = paramIter.next(); Expression expr = param.getExpression(); param.setExpression(replaceExpression(expr)); } }
public void visit(StoredProcedure obj) { for (Iterator<SPParameter> paramIter = obj.getInputParameters().iterator(); paramIter.hasNext();) { SPParameter param = paramIter.next(); Expression expr = param.getExpression(); param.setExpression(replaceExpression(expr)); } }
public void visit(StoredProcedure proc){ evaluationNotPossible(EvaluationLevel.PUSH_DOWN); for (SPParameter param : proc.getInputParameters()) { if (!(param.getExpression() instanceof Constant)) { evaluationNotPossible(EvaluationLevel.PROCESSING); } } }
public void visit(StoredProcedure proc){ evaluationNotPossible(EvaluationLevel.PUSH_DOWN); for (SPParameter param : proc.getInputParameters()) { if (!(param.getExpression() instanceof Constant)) { evaluationNotPossible(EvaluationLevel.PROCESSING); } } }
public void visit(StoredProcedure proc){ evaluationNotPossible(EvaluationLevel.PUSH_DOWN); for (SPParameter param : proc.getInputParameters()) { if (!(param.getExpression() instanceof Constant)) { evaluationNotPossible(EvaluationLevel.PROCESSING); } } }
for (Iterator<SPParameter> params = proc.getInputParameters().iterator(); params.hasNext();) { SPParameter param = params.next(); ElementSymbol symbol = param.getParameterSymbol();
for (Iterator<SPParameter> params = proc.getInputParameters().iterator(); params.hasNext();) { SPParameter param = params.next(); ElementSymbol symbol = param.getParameterSymbol();
@Override public TupleSource registerRequest(CommandContext context, Command command, String modelName, RegisterRequestParameter parameterObject) throws TeiidComponentException { if (command instanceof StoredProcedure) { StoredProcedure proc = (StoredProcedure)command; List<SPParameter> params = proc.getInputParameters(); assertEquals(1, params.size()); int value = (Integer)((Constant)params.get(0).getExpression()).getValue(); return new FakeTupleSource(command.getProjectedSymbols(), new List[] { Arrays.asList(value+2), Arrays.asList(value+5) }); } return super.registerRequest(context, command, modelName, parameterObject); } };
private Command rewriteExec(StoredProcedure storedProcedure) throws TeiidComponentException, TeiidProcessingException{ //After this method, no longer need to display named parameters storedProcedure.setDisplayNamedParameters(false); for (SPParameter param : storedProcedure.getInputParameters()) { if (!processing || storedProcedure.isPushedInQuery()) { param.setExpression(rewriteExpressionDirect(param.getExpression())); } else if (!(param.getExpression() instanceof Constant)) { boolean isBindEligible = !isConstantConvert(param.getExpression()); param.setExpression(evaluate(param.getExpression(), isBindEligible)); } } return storedProcedure; }
private Command rewriteExec(StoredProcedure storedProcedure) throws TeiidComponentException, TeiidProcessingException{ //After this method, no longer need to display named parameters storedProcedure.setDisplayNamedParameters(false); for (SPParameter param : storedProcedure.getInputParameters()) { if (!processing || storedProcedure.isPushedInQuery()) { param.setExpression(rewriteExpressionDirect(param.getExpression())); } else if (!(param.getExpression() instanceof Constant)) { boolean isBindEligible = !isConstantConvert(param.getExpression()); param.setExpression(evaluate(param.getExpression(), isBindEligible)); } } return storedProcedure; }
private Command rewriteExec(StoredProcedure storedProcedure) throws TeiidComponentException, TeiidProcessingException{ //After this method, no longer need to display named parameters storedProcedure.setDisplayNamedParameters(false); for (SPParameter param : storedProcedure.getInputParameters()) { if (!processing || storedProcedure.isPushedInQuery()) { param.setExpression(rewriteExpressionDirect(param.getExpression())); } else if (!(param.getExpression() instanceof Constant)) { boolean isBindEligible = !isConstantConvert(param.getExpression()); param.setExpression(evaluate(param.getExpression(), isBindEligible)); } } return storedProcedure; }
@Test public void testProcedureBatching() throws Exception { ProcedureExecution exec = new FakeProcedureExecution(2, 1); // this has two result set columns and 1 out parameter int total_columns = 3; StoredProcedure command = (StoredProcedure)helpGetCommand("{call pm2.spTest8(?)}", EXAMPLE_BQT); //$NON-NLS-1$ command.getInputParameters().get(0).setExpression(new Constant(1)); Call proc = new LanguageBridgeFactory(EXAMPLE_BQT).translate(command); ProcedureBatchHandler pbh = new ProcedureBatchHandler(proc, exec); assertEquals(total_columns, pbh.padRow(Arrays.asList(null, null)).size()); List params = pbh.getParameterRow(); assertEquals(total_columns, params.size()); // check the parameter value assertEquals(Integer.valueOf(0), params.get(2)); try { pbh.padRow(Arrays.asList(1)); fail("Expected exception from resultset mismatch"); //$NON-NLS-1$ } catch (TranslatorException err) { assertEquals( "TEIID30479 Could not process stored procedure results for EXEC spTest8(1). Expected 2 result set columns, but was 1. Please update your models to allow for stored procedure results batching.", err.getMessage()); //$NON-NLS-1$ } }
LogManager.logDetail(LogConstants.CTX_DQP, "processing cached procedure request for", fullName); //$NON-NLS-1$ LinkedList<Object> vals = new LinkedList<Object>(); for (SPParameter param : proc.getInputParameters()) { vals.add(((Constant)param.getExpression()).getValue()); StoredProcedure cloneProc = (StoredProcedure)proc.clone(); int i = 0; for (SPParameter param : cloneProc.getInputParameters()) { param.setExpression(new Reference(i++));
@Override public void visit(StoredProcedure obj) { for (SPParameter param : obj.getInputParameters()) { try { if (!getMetadata().elementSupports(param.getMetadataID(), SupportConstants.Element.NULL) && EvaluatableVisitor.isFullyEvaluatable(param.getExpression(), true)) { try { // If nextValue is an expression, evaluate it before checking for null Object evaluatedValue = Evaluator.evaluate(param.getExpression()); if(evaluatedValue == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } else if (evaluatedValue instanceof ArrayImpl && getMetadata().isVariadic(param.getMetadataID())) { ArrayImpl av = (ArrayImpl)evaluatedValue; for (Object o : av.getValues()) { if (o == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } } } } catch(ExpressionEvaluationException e) { //ignore for now, we don't have the context which could be the problem } } } catch (TeiidComponentException e) { handleException(e); } } }
@Override public void visit(StoredProcedure obj) { for (SPParameter param : obj.getInputParameters()) { try { if (!param.isUsingDefault() && !getMetadata().elementSupports(param.getMetadataID(), SupportConstants.Element.NULL) && EvaluatableVisitor.isFullyEvaluatable(param.getExpression(), true)) { try { // If nextValue is an expression, evaluate it before checking for null Object evaluatedValue = Evaluator.evaluate(param.getExpression()); if(evaluatedValue == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } else if (evaluatedValue instanceof ArrayImpl && getMetadata().isVariadic(param.getMetadataID())) { ArrayImpl av = (ArrayImpl)evaluatedValue; for (Object o : av.getValues()) { if (o == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } } } } catch(Exception e) { //ignore for now, we don't have the context which could be the problem } } } catch (TeiidComponentException e) { handleException(e); } } }
@Override public void visit(StoredProcedure obj) { for (SPParameter param : obj.getInputParameters()) { try { if (!param.isUsingDefault() && !getMetadata().elementSupports(param.getMetadataID(), SupportConstants.Element.NULL) && EvaluatableVisitor.isFullyEvaluatable(param.getExpression(), true)) { try { // If nextValue is an expression, evaluate it before checking for null Object evaluatedValue = Evaluator.evaluate(param.getExpression()); if(evaluatedValue == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } else if (evaluatedValue instanceof ArrayImpl && getMetadata().isVariadic(param.getMetadataID())) { ArrayImpl av = (ArrayImpl)evaluatedValue; for (Object o : av.getValues()) { if (o == null) { handleValidationError(QueryPlugin.Util.getString("ERR.015.012.0055", param.getParameterSymbol()), param.getParameterSymbol()); //$NON-NLS-1$ } } } } catch(Exception e) { //ignore for now, we don't have the context which could be the problem } } } catch (TeiidComponentException e) { handleException(e); } } }