public Optional<Signature> bind(List<? extends TypeSignatureProvider> actualArgumentTypes) { Optional<BoundVariables> boundVariables = bindVariables(actualArgumentTypes); if (!boundVariables.isPresent()) { return Optional.empty(); } return Optional.of(applyBoundVariables(declaredSignature, boundVariables.get(), actualArgumentTypes.size())); }
public Optional<Signature> bind(List<? extends TypeSignatureProvider> actualArgumentTypes, Type actualReturnType) { Optional<BoundVariables> boundVariables = bindVariables(actualArgumentTypes, actualReturnType); if (!boundVariables.isPresent()) { return Optional.empty(); } return Optional.of(applyBoundVariables(declaredSignature, boundVariables.get(), actualArgumentTypes.size())); }
public Optional<Signature> bind(List<? extends TypeSignatureProvider> actualArgumentTypes) { Optional<BoundVariables> boundVariables = bindVariables(actualArgumentTypes); if (!boundVariables.isPresent()) { return Optional.empty(); } return Optional.of(applyBoundVariables(declaredSignature, boundVariables.get(), actualArgumentTypes.size())); }
public Optional<Signature> bind(List<? extends TypeSignatureProvider> actualArgumentTypes, Type actualReturnType) { Optional<BoundVariables> boundVariables = bindVariables(actualArgumentTypes, actualReturnType); if (!boundVariables.isPresent()) { return Optional.empty(); } return Optional.of(applyBoundVariables(declaredSignature, boundVariables.get(), actualArgumentTypes.size())); }
private Optional<BoundVariables> bindVariables() { assertNotNull(argumentTypes); SignatureBinder signatureBinder = new SignatureBinder(typeRegistry, function, allowCoercion); if (returnType == null) { return signatureBinder.bindVariables(argumentTypes); } else { return signatureBinder.bindVariables(argumentTypes, returnType); } } }
private Optional<BoundVariables> bindVariables() { assertNotNull(argumentTypes); SignatureBinder signatureBinder = new SignatureBinder(typeRegistry, function, allowCoercion); if (returnType == null) { return signatureBinder.bindVariables(argumentTypes); } else { return signatureBinder.bindVariables(argumentTypes, returnType); } } }
/** * One method is more specific than another if invocation handled by the first method could be passed on to the other one */ private boolean isMoreSpecificThan(ApplicableFunction left, ApplicableFunction right) { List<TypeSignatureProvider> resolvedTypes = fromTypeSignatures(left.getBoundSignature().getArgumentTypes()); Optional<BoundVariables> boundVariables = new SignatureBinder(typeManager, right.getDeclaredSignature(), true) .bindVariables(resolvedTypes); return boundVariables.isPresent(); }
/** * One method is more specific than another if invocation handled by the first method could be passed on to the other one */ private boolean isMoreSpecificThan(ApplicableFunction left, ApplicableFunction right) { List<TypeSignatureProvider> resolvedTypes = fromTypeSignatures(left.getBoundSignature().getArgumentTypes()); Optional<BoundVariables> boundVariables = new SignatureBinder(typeManager, right.getDeclaredSignature(), true) .bindVariables(resolvedTypes); return boundVariables.isPresent(); }
for (SqlFunction candidate : candidates) { Optional<BoundVariables> boundVariables = new SignatureBinder(typeManager, candidate.getSignature(), false) .bindVariables(argumentTypeSignatureProviders, returnType); if (boundVariables.isPresent()) { return new SpecializedFunctionKey(candidate, boundVariables.get(), argumentTypeSignatureProviders.size()); for (SqlFunction candidate : candidates) { SignatureBinder binder = new SignatureBinder(typeManager, candidate.getSignature(), true); Optional<BoundVariables> boundVariables = binder.bindVariables(argumentTypeSignatureProviders, returnType); if (!boundVariables.isPresent()) { continue;
for (SqlFunction candidate : candidates) { Optional<BoundVariables> boundVariables = new SignatureBinder(typeManager, candidate.getSignature(), false) .bindVariables(argumentTypeSignatureProviders, returnType); if (boundVariables.isPresent()) { return new SpecializedFunctionKey(candidate, boundVariables.get(), argumentTypeSignatureProviders.size()); for (SqlFunction candidate : candidates) { SignatureBinder binder = new SignatureBinder(typeManager, candidate.getSignature(), true); Optional<BoundVariables> boundVariables = binder.bindVariables(argumentTypeSignatureProviders, returnType); if (!boundVariables.isPresent()) { continue;