public List<SPParameter> getInputParameters() { List<SPParameter> parameters = new ArrayList<SPParameter>(getParameters()); Iterator<SPParameter> params = parameters.iterator(); while (params.hasNext()) { SPParameter param = params.next(); if(param.getParameterType() != ParameterInfo.IN && param.getParameterType() != ParameterInfo.INOUT) { params.remove(); } } return parameters; }
public List<SPParameter> getInputParameters() { List<SPParameter> parameters = new ArrayList<SPParameter>(getParameters()); Iterator<SPParameter> params = parameters.iterator(); while (params.hasNext()) { SPParameter param = params.next(); if(param.getParameterType() != ParameterInfo.IN && param.getParameterType() != ParameterInfo.INOUT) { params.remove(); } } return parameters; }
public List<SPParameter> getInputParameters() { List<SPParameter> parameters = new ArrayList<SPParameter>(getParameters()); Iterator<SPParameter> params = parameters.iterator(); while (params.hasNext()) { SPParameter param = params.next(); if(param.getParameterType() != ParameterInfo.IN && param.getParameterType() != ParameterInfo.INOUT) { params.remove(); } } return parameters; }
private static List<ParameterInfo> getParameterInfo(StoredProcedure procedure) { List<ParameterInfo> paramInfos = new ArrayList<ParameterInfo>(); for (SPParameter param : procedure.getParameters()) { ParameterInfo info = new ParameterInfo(param.getParameterType(), param.getResultSetColumns().size()); paramInfos.add(info); } return paramInfos; }
private static List<ParameterInfo> getParameterInfo(StoredProcedure procedure) { List<ParameterInfo> paramInfos = new ArrayList<ParameterInfo>(); for (SPParameter param : procedure.getParameters()) { ParameterInfo info = new ParameterInfo(param.getParameterType(), param.getResultSetColumns().size()); paramInfos.add(info); } return paramInfos; }
private static List<ParameterInfo> getParameterInfo(StoredProcedure procedure) { List<ParameterInfo> paramInfos = new ArrayList<ParameterInfo>(); for (SPParameter param : procedure.getParameters()) { ParameterInfo info = new ParameterInfo(param.getParameterType(), param.getResultSetColumns().size()); paramInfos.add(info); } return paramInfos; }
@Override public void visit(StoredProcedure obj) { if (!obj.isPushedInQuery()) { return; } List<ElementSymbol> selectSymbols = obj.getProjectedSymbols(); LinkedHashMap<Expression, String> symbols = new LinkedHashMap<Expression, String>(selectSymbols.size()); for (int i = 0; i < selectSymbols.size(); i++) { ElementSymbol symbol = selectSymbols.get(i); symbols.put(symbol, symbol.getShortName()); } for (SPParameter param : obj.getParameters()) { visitNode(param.getExpression()); } visitor.namingContext.currentSymbols = symbols; }
@Override public void visit(StoredProcedure obj) { if (!obj.isPushedInQuery()) { return; } List<ElementSymbol> selectSymbols = obj.getProjectedSymbols(); LinkedHashMap<Expression, String> symbols = new LinkedHashMap<Expression, String>(selectSymbols.size()); for (int i = 0; i < selectSymbols.size(); i++) { ElementSymbol symbol = selectSymbols.get(i); symbols.put(symbol, symbol.getShortName()); } for (SPParameter param : obj.getParameters()) { visitNode(param.getExpression()); } visitor.namingContext.currentSymbols = symbols; }
@Override public void visit(StoredProcedure obj) { if (!obj.isPushedInQuery()) { return; } List<ElementSymbol> selectSymbols = obj.getProjectedSymbols(); LinkedHashMap<Expression, String> symbols = new LinkedHashMap<Expression, String>(selectSymbols.size()); for (int i = 0; i < selectSymbols.size(); i++) { ElementSymbol symbol = selectSymbols.get(i); symbols.put(symbol, symbol.getShortName()); } for (SPParameter param : obj.getParameters()) { visitNode(param.getExpression()); } visitor.namingContext.currentSymbols = symbols; }
public void visit(StoredProcedure obj) { preVisitVisitor(obj); Collection<SPParameter> params = obj.getParameters(); if(params != null && !params.isEmpty()) { for (SPParameter parameter : params) { Expression expression = parameter.getExpression(); visitNode(expression); } } visitNode(obj.getOption()); postVisitVisitor(obj); } public void visit(SubqueryCompareCriteria obj) {
public void visit(StoredProcedure obj) { preVisitVisitor(obj); Collection<SPParameter> params = obj.getParameters(); if(params != null && !params.isEmpty()) { for (SPParameter parameter : params) { Expression expression = parameter.getExpression(); visitNode(expression); } } visitNode(obj.getOption()); postVisitVisitor(obj); } public void visit(SubqueryCompareCriteria obj) {
public void visit(StoredProcedure obj) { preVisitVisitor(obj); Collection<SPParameter> params = obj.getParameters(); if(params != null && !params.isEmpty()) { for (SPParameter parameter : params) { Expression expression = parameter.getExpression(); visitNode(expression); } } visitNode(obj.getOption()); postVisitVisitor(obj); } public void visit(SubqueryCompareCriteria obj) {
@Test public void testCallNoParams() throws QueryParserException { StoredProcedure sp = (StoredProcedure)QueryParser.getQueryParser().parseCommand("{call procedure_name}"); //$NON-NLS-1$ assertFalse(sp.returnsScalarValue()); assertEquals("procedure_name", sp.getProcedureName()); //$NON-NLS-1$ assertEquals(0, sp.getParameters().size()); }
@Test public void testProcParamComparison_defect13653() { String userSql = "SELECT * FROM (EXEC mmspTest1.MMSP5('a')) AS a, (EXEC mmsptest1.mmsp6('b')) AS b"; //$NON-NLS-1$ QueryMetadataInterface metadata = RealMetadataFactory.exampleBQTCached(); AnalysisRecord analysis = AnalysisRecord.createNonRecordingRecord(); Query query = (Query) helpResolve(userSql, metadata); From from = query.getFrom(); Collection fromClauses = from.getClauses(); SPParameter params[] = new SPParameter[2]; Iterator iter = fromClauses.iterator(); while(iter.hasNext()) { SubqueryFromClause clause = (SubqueryFromClause) iter.next(); StoredProcedure proc = (StoredProcedure) clause.getCommand(); for (SPParameter param : proc.getParameters()) { if(param.getParameterType() == ParameterInfo.IN) { if(params[0] == null) { params[0] = param; } else { params[1] = param; } } } } assertTrue("Params should be not equal", ! params[0].equals(params[1])); //$NON-NLS-1$ }
public Object clone() { StoredProcedure copy = new StoredProcedure(); copy.setModelID(getModelID()); copy.setProcedureName(getProcedureName()); copy.setProcedureCallableName(getProcedureCallableName()); copy.setProcedureID(getProcedureID()); copy.setGroup(getGroup().clone()); copy.callableName = callableName; copy.calledWithReturn = calledWithReturn; Collection<SPParameter> params = getParameters(); for (SPParameter spParameter : params) { copy.setParameter((SPParameter)spParameter.clone()); } copy.resultSetParameterKey = resultSetParameterKey; this.copyMetadataState(copy); copy.displayNamedParameters = displayNamedParameters; copy.isCallableStatement = isCallableStatement; copy.isProcedureRelational = isProcedureRelational; copy.pushedInQuery = pushedInQuery; return copy; }
public Object clone() { StoredProcedure copy = new StoredProcedure(); copy.setModelID(getModelID()); copy.setProcedureName(getProcedureName()); copy.setProcedureCallableName(getProcedureCallableName()); copy.setProcedureID(getProcedureID()); copy.setGroup(getGroup().clone()); copy.callableName = callableName; copy.calledWithReturn = calledWithReturn; Collection<SPParameter> params = getParameters(); for (SPParameter spParameter : params) { copy.setParameter((SPParameter)spParameter.clone()); } copy.resultSetParameterKey = resultSetParameterKey; this.copyMetadataState(copy); copy.displayNamedParameters = displayNamedParameters; copy.isCallableStatement = isCallableStatement; copy.isProcedureRelational = isProcedureRelational; copy.pushedInQuery = pushedInQuery; return copy; }
public Object clone() { StoredProcedure copy = new StoredProcedure(); copy.setModelID(getModelID()); copy.setProcedureName(getProcedureName()); copy.setProcedureCallableName(getProcedureCallableName()); copy.setProcedureID(getProcedureID()); copy.setGroup(getGroup().clone()); copy.callableName = callableName; copy.calledWithReturn = calledWithReturn; Collection<SPParameter> params = getParameters(); for (SPParameter spParameter : params) { copy.setParameter((SPParameter)spParameter.clone()); } copy.resultSetParameterKey = resultSetParameterKey; this.copyMetadataState(copy); copy.displayNamedParameters = displayNamedParameters; copy.isCallableStatement = isCallableStatement; copy.isProcedureRelational = isProcedureRelational; copy.pushedInQuery = pushedInQuery; return copy; }
@Test public void testStoredProcedure_9822() throws Exception { QueryParser parser = new QueryParser(); Command command = parser.parseCommand("exec pm1.sp4(5)"); //$NON-NLS-1$ // resolve QueryMetadataInterface metadata = RealMetadataFactory.example1Cached(); QueryResolver.resolveCommand(command, metadata); // rewrite Command rewriteCommand = QueryRewriter.rewrite(command, metadata, null); Collection<SPParameter> parameters = ((StoredProcedure)rewriteCommand).getParameters(); for (SPParameter param : parameters) { if(param.getParameterType() == ParameterInfo.IN || param.getParameterType() == ParameterInfo.INOUT){ assertTrue(param.getExpression() instanceof Constant); } } }
/** * Helper method to resolve an exec aka stored procedure, then check that the * expected parameter expressions are the same as actual parameter expressions. * @param sql * @param expectedParameterExpressions * @since 4.3 */ private StoredProcedure helpResolveExec(String sql, Object[] expectedParameterExpressions) { StoredProcedure proc = (StoredProcedure)helpResolve(sql); Collection<SPParameter> params = proc.getParameters(); // Check remaining params against expected expressions int i = 0; for (SPParameter param : params) { if (param.getParameterType() != SPParameter.IN && param.getParameterType() != SPParameter.INOUT) { continue; } if (expectedParameterExpressions[i] == null) { assertNull(param.getExpression()); } else { assertEquals(expectedParameterExpressions[i], param.getExpression()); } i++; } assertEquals(expectedParameterExpressions.length, i); return proc; }
for (SPParameter param : storedProcedureCommand.getParameters()) { Expression expr = param.getExpression(); if(expr == null) {