Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2304,12 +2304,15 @@ public ResolvedFunction resolve(Session session, CatalogHandle catalogHandle, Fu
.filter(Objects::nonNull)
.forEach(functions::add);

boolean deprecated = functionMetadata.isDeprecated();
return new ResolvedFunction(
functionBinding.getBoundSignature(),
catalogHandle,
functionBinding.getFunctionId(),
functionMetadata.getKind(),
functionMetadata.isDeterministic(),
deprecated,
deprecated ? Optional.of(functionMetadata.getDescription()) : Optional.empty(),
functionMetadata.getFunctionNullability(),
dependentTypes,
functions.build());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public class ResolvedFunction
private final FunctionId functionId;
private final FunctionKind functionKind;
private final boolean deterministic;
private final boolean deprecated;
private final Optional<String> description;
private final FunctionNullability functionNullability;
private final Map<TypeSignature, Type> typeDependencies;
private final Set<ResolvedFunction> functionDependencies;
Expand All @@ -76,6 +78,8 @@ public ResolvedFunction(
@JsonProperty("id") FunctionId functionId,
@JsonProperty("functionKind") FunctionKind functionKind,
@JsonProperty("deterministic") boolean deterministic,
@JsonProperty("deprecated") boolean deprecated,
@JsonProperty("description") Optional<String> description,
@JsonProperty("functionNullability") FunctionNullability functionNullability,
@JsonProperty("typeDependencies") Map<TypeSignature, Type> typeDependencies,
@JsonProperty("functionDependencies") Set<ResolvedFunction> functionDependencies)
Expand All @@ -85,6 +89,8 @@ public ResolvedFunction(
this.functionId = requireNonNull(functionId, "functionId is null");
this.functionKind = requireNonNull(functionKind, "functionKind is null");
this.deterministic = deterministic;
this.deprecated = deprecated;
this.description = requireNonNull(description, "description is null");
this.functionNullability = requireNonNull(functionNullability, "functionNullability is null");
this.typeDependencies = ImmutableMap.copyOf(requireNonNull(typeDependencies, "typeDependencies is null"));
this.functionDependencies = ImmutableSet.copyOf(requireNonNull(functionDependencies, "functionDependencies is null"));
Expand Down Expand Up @@ -121,6 +127,18 @@ public boolean isDeterministic()
return deterministic;
}

@JsonProperty
public boolean isDeprecated()
{
return deprecated;
}

@JsonProperty
public Optional<String> getDescription()
{
return description;
}

@JsonProperty
public FunctionNullability getFunctionNullability()
{
Expand Down Expand Up @@ -175,6 +193,8 @@ public boolean equals(Object o)
Objects.equals(functionId, that.functionId) &&
functionKind == that.functionKind &&
deterministic == that.deterministic &&
deprecated == that.deprecated &&
Objects.equals(description, that.description) &&
Objects.equals(functionNullability, that.functionNullability) &&
Objects.equals(typeDependencies, that.typeDependencies) &&
Objects.equals(functionDependencies, that.functionDependencies);
Expand All @@ -183,7 +203,7 @@ public boolean equals(Object o)
@Override
public int hashCode()
{
return Objects.hash(signature, catalogHandle, functionId, functionKind, deterministic, functionNullability, typeDependencies, functionDependencies);
return Objects.hash(signature, catalogHandle, functionId, functionKind, deterministic, deprecated, description, functionNullability, typeDependencies, functionDependencies);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import io.trino.spi.TrinoException;
import io.trino.spi.TrinoWarning;
import io.trino.spi.function.BoundSignature;
import io.trino.spi.function.FunctionMetadata;
import io.trino.spi.function.OperatorType;
import io.trino.spi.type.CharType;
import io.trino.spi.type.DateType;
Expand Down Expand Up @@ -1313,12 +1312,11 @@ else if (node.getArguments().size() > 127) {

resolvedFunctions.put(NodeRef.of(node), function);

FunctionMetadata functionMetadata = plannerContext.getMetadata().getFunctionMetadata(session, function);
if (functionMetadata.isDeprecated()) {
if (function.isDeprecated()) {
warningCollector.add(new TrinoWarning(DEPRECATED_FUNCTION,
format("Use of deprecated function: %s: %s",
functionMetadata.getSignature().getName(),
functionMetadata.getDescription())));
function.getSignature().toSignature().getName(),
function.getDescription().get())));
}

Type type = signature.getReturnType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,8 @@ public ResolvedFunction resolveFunction(Session session, QualifiedName name, Lis
toFunctionId(boundSignature.toSignature()),
SCALAR,
true,
false,
Optional.empty(),
new FunctionNullability(false, ImmutableList.of()),
ImmutableMap.of(),
ImmutableSet.of());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ private static ResolvedFunction createResolvedFunction(String name, int depth)
.build()),
SCALAR,
true,
false,
Optional.empty(),
new FunctionNullability(false, ImmutableList.of(false, false)),
ImmutableSet.of(createVarcharType(11), createVarcharType(12), createVarcharType(13)).stream()
.collect(toImmutableMap(Type::getTypeSignature, Function.identity())),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1214,6 +1214,8 @@ private static ResolvedFunction fakeFunction(String name)
toFunctionId(boundSignature.toSignature()),
SCALAR,
true,
false,
Optional.empty(),
new FunctionNullability(false, ImmutableList.of()),
ImmutableMap.of(),
ImmutableSet.of());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import java.util.Arrays;
import java.util.Base64;
import java.util.Map;
import java.util.Optional;
import java.util.function.BiPredicate;

import static com.google.common.base.Verify.verify;
Expand Down Expand Up @@ -90,6 +91,8 @@ public class TestLiteralEncoder
new LiteralFunction(PLANNER_CONTEXT.getBlockEncodingSerde()).getFunctionMetadata().getFunctionId(),
SCALAR,
true,
false,
Optional.empty(),
new FunctionNullability(false, ImmutableList.of(false)),
ImmutableMap.of(),
ImmutableSet.of());
Expand All @@ -104,6 +107,8 @@ public class TestLiteralEncoder
.build()),
SCALAR,
true,
false,
Optional.empty(),
new FunctionNullability(false, ImmutableList.of(false)),
ImmutableMap.of(),
ImmutableSet.of());
Expand Down