Skip to content

Commit ef8749a

Browse files
committed
Remove dead JSON serialization from Signature and FunctionMetadata
Neither type is ever serialized at runtime: there is no JsonCodec or deserializer binding for either, no server/REST DTO carries a raw Signature, and the plan wire form uses BoundSignature (resolved, with concrete types). The @JsonProperty getters and @JsonCreator fromJson factories were dead code — the only exercise was a single round-trip test. Remove them, and trim that test to the structural assertions it still covers, so the upcoming change to how a Signature represents its argument and return types need not carry a serialization format that nothing uses.
1 parent 3c7bbe1 commit ef8749a

4 files changed

Lines changed: 18 additions & 117 deletions

File tree

core/trino-main/src/test/java/io/trino/metadata/TestSignature.java

Lines changed: 3 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -13,72 +13,29 @@
1313
*/
1414
package io.trino.metadata;
1515

16-
import com.google.common.collect.ImmutableMap;
17-
import io.airlift.json.JsonCodec;
18-
import io.airlift.json.JsonCodecFactory;
19-
import io.airlift.json.JsonMapperProvider;
2016
import io.trino.spi.function.Signature;
2117
import io.trino.spi.function.Signature.Argument;
22-
import io.trino.spi.type.Type;
23-
import io.trino.spi.type.TypeSignature;
24-
import io.trino.type.TypeDeserializer;
25-
import io.trino.type.TypeSignatureDeserializer;
2618
import org.junit.jupiter.api.Test;
2719

2820
import java.util.Optional;
2921

3022
import static io.trino.spi.type.BigintType.BIGINT;
31-
import static io.trino.spi.type.BooleanType.BOOLEAN;
32-
import static io.trino.spi.type.DoubleType.DOUBLE;
3323
import static io.trino.spi.type.VarcharType.VARCHAR;
34-
import static io.trino.type.InternalTypeManager.TESTING_TYPE_MANAGER;
3524
import static org.assertj.core.api.Assertions.assertThat;
3625

3726
public class TestSignature
3827
{
39-
private static final JsonCodec<Signature> CODEC = new JsonCodecFactory(
40-
new JsonMapperProvider()
41-
.withJsonDeserializers(ImmutableMap.of(
42-
Type.class, new TypeDeserializer(TESTING_TYPE_MANAGER),
43-
TypeSignature.class, new TypeSignatureDeserializer()))
44-
.get())
45-
.prettyPrint()
46-
.jsonCodec(Signature.class);
47-
48-
@Test
49-
public void testSerializationRoundTrip()
50-
{
51-
Signature expected = Signature.builder()
52-
.returnType(BIGINT)
53-
.argumentType(BOOLEAN)
54-
.argumentType(DOUBLE)
55-
.argumentType(VARCHAR)
56-
.build();
57-
58-
String json = CODEC.toJson(expected);
59-
Signature actual = CODEC.fromJson(json);
60-
61-
assertThat(actual).isEqualTo(expected);
62-
assertThat(actual.getArguments()).allSatisfy(argument -> assertThat(argument.name()).isEmpty());
63-
}
64-
6528
@Test
66-
public void testArgumentNamesRoundTrip()
29+
public void testArgumentNames()
6730
{
68-
Signature expected = Signature.builder()
31+
Signature signature = Signature.builder()
6932
.returnType(VARCHAR.getTypeSignature())
7033
.argumentType(VARCHAR.getTypeSignature(), "string")
7134
.argumentType(BIGINT.getTypeSignature(), "from")
7235
.argumentType(BIGINT.getTypeSignature())
7336
.build();
7437

75-
assertThat(expected.getArguments())
76-
.extracting(Argument::name)
77-
.containsExactly(Optional.of("string"), Optional.of("from"), Optional.empty());
78-
79-
Signature actual = CODEC.fromJson(CODEC.toJson(expected));
80-
assertThat(actual).isEqualTo(expected);
81-
assertThat(actual.getArguments())
38+
assertThat(signature.getArguments())
8239
.extracting(Argument::name)
8340
.containsExactly(Optional.of("string"), Optional.of("from"), Optional.empty());
8441
}

core/trino-spi/pom.xml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,20 @@
346346
<annotationType>com.fasterxml.jackson.annotation.JsonProperty</annotationType>
347347
<justification>getArgumentTypes() is now a derived view; JsonProperty moved to getArguments()</justification>
348348
</item>
349+
<!-- Remove dead JSON serialization from Signature and FunctionMetadata (never serialized at runtime). -->
350+
<item>
351+
<regex>true</regex>
352+
<code>java.annotation.removed</code>
353+
<old>method .* io\.trino\.spi\.function\.(Signature|FunctionMetadata)::.*</old>
354+
<annotationType>com\.fasterxml\.jackson\.annotation\.Json.*</annotationType>
355+
<justification>Signature and FunctionMetadata are never JSON-serialized at runtime; removing the dead serialization.</justification>
356+
</item>
357+
<item>
358+
<regex>true</regex>
359+
<code>java.method.removed</code>
360+
<old>method .* io\.trino\.spi\.function\.(Signature|FunctionMetadata)::fromJson\(.*</old>
361+
<justification>Remove the dead @JsonCreator; Signature/FunctionMetadata are never deserialized.</justification>
362+
</item>
349363
</differences>
350364
</revapi.differences>
351365
</analysisConfiguration>

core/trino-spi/src/main/java/io/trino/spi/function/FunctionMetadata.java

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@
1313
*/
1414
package io.trino.spi.function;
1515

16-
import com.fasterxml.jackson.annotation.JsonCreator;
17-
import com.fasterxml.jackson.annotation.JsonProperty;
18-
import com.google.errorprone.annotations.DoNotCall;
1916
import io.trino.spi.type.TypeSignature;
2017

2118
import java.util.ArrayList;
@@ -93,7 +90,6 @@ private FunctionMetadata(
9390
/**
9491
* Unique id of this function.
9592
*/
96-
@JsonProperty
9793
public FunctionId getFunctionId()
9894
{
9995
return functionId;
@@ -102,7 +98,6 @@ public FunctionId getFunctionId()
10298
/**
10399
* Signature of a matching call site.
104100
*/
105-
@JsonProperty
106101
public Signature getSignature()
107102
{
108103
return signature;
@@ -111,7 +106,6 @@ public Signature getSignature()
111106
/**
112107
* The canonical name of the function.
113108
*/
114-
@JsonProperty
115109
public String getCanonicalName()
116110
{
117111
return canonicalName;
@@ -120,25 +114,21 @@ public String getCanonicalName()
120114
/**
121115
* Canonical name and any aliases.
122116
*/
123-
@JsonProperty
124117
public Set<String> getNames()
125118
{
126119
return names;
127120
}
128121

129-
@JsonProperty
130122
public FunctionNullability getFunctionNullability()
131123
{
132124
return functionNullability;
133125
}
134126

135-
@JsonProperty
136127
public boolean isHidden()
137128
{
138129
return hidden;
139130
}
140131

141-
@JsonProperty
142132
public boolean isDeterministic()
143133
{
144134
return deterministic;
@@ -147,25 +137,21 @@ public boolean isDeterministic()
147137
/**
148138
* Whether function never fails for any possible combination of input parameters.
149139
*/
150-
@JsonProperty
151140
public boolean isNeverFails()
152141
{
153142
return neverFails;
154143
}
155144

156-
@JsonProperty
157145
public String getDescription()
158146
{
159147
return description;
160148
}
161149

162-
@JsonProperty
163150
public FunctionKind getKind()
164151
{
165152
return kind;
166153
}
167154

168-
@JsonProperty
169155
public boolean isDeprecated()
170156
{
171157
return deprecated;
@@ -178,7 +164,6 @@ public boolean isDeprecated()
178164
* the type of the {@code self} parameter (the first declared argument).
179165
* Empty for regular functions.
180166
*/
181-
@JsonProperty
182167
public Optional<TypeSignature> getReceiverType()
183168
{
184169
return receiverType;
@@ -189,45 +174,11 @@ public Optional<TypeSignature> getReceiverType()
189174
* argument) rather than a static method. Only meaningful when
190175
* {@link #getReceiverType()} is present.
191176
*/
192-
@JsonProperty
193177
public boolean isInstanceMethod()
194178
{
195179
return instanceMethod;
196180
}
197181

198-
@JsonCreator
199-
@DoNotCall // For JSON deserialization only
200-
public static FunctionMetadata fromJson(
201-
@JsonProperty FunctionId functionId,
202-
@JsonProperty Signature signature,
203-
@JsonProperty String canonicalName,
204-
@JsonProperty Set<String> names,
205-
@JsonProperty FunctionNullability functionNullability,
206-
@JsonProperty boolean hidden,
207-
@JsonProperty boolean deterministic,
208-
@JsonProperty boolean neverFails,
209-
@JsonProperty String description,
210-
@JsonProperty FunctionKind kind,
211-
@JsonProperty boolean deprecated,
212-
@JsonProperty Optional<TypeSignature> receiverType,
213-
@JsonProperty boolean instanceMethod)
214-
{
215-
return new FunctionMetadata(
216-
functionId,
217-
signature,
218-
canonicalName,
219-
names,
220-
functionNullability,
221-
hidden,
222-
deterministic,
223-
neverFails,
224-
description,
225-
kind,
226-
deprecated,
227-
receiverType == null ? Optional.empty() : receiverType,
228-
instanceMethod);
229-
}
230-
231182
@Override
232183
public String toString()
233184
{

core/trino-spi/src/main/java/io/trino/spi/function/Signature.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@
1313
*/
1414
package io.trino.spi.function;
1515

16-
import com.fasterxml.jackson.annotation.JsonCreator;
17-
import com.fasterxml.jackson.annotation.JsonProperty;
18-
import com.google.errorprone.annotations.DoNotCall;
1916
import io.trino.spi.type.Type;
2017
import io.trino.spi.type.TypeSignature;
2118

@@ -32,7 +29,7 @@
3229

3330
public class Signature
3431
{
35-
public record Argument(@JsonProperty("type") TypeSignature type, @JsonProperty("name") Optional<String> name)
32+
public record Argument(TypeSignature type, Optional<String> name)
3633
{
3734
public static Argument of(TypeSignature type)
3835
{
@@ -65,13 +62,11 @@ private Signature(
6562
this.variableArity = variableArity;
6663
}
6764

68-
@JsonProperty
6965
public TypeSignature getReturnType()
7066
{
7167
return returnType;
7268
}
7369

74-
@JsonProperty
7570
public List<Argument> getArguments()
7671
{
7772
return arguments;
@@ -84,7 +79,6 @@ public List<TypeSignature> getArgumentTypes()
8479
.collect(toUnmodifiableList());
8580
}
8681

87-
@JsonProperty
8882
public boolean isVariableArity()
8983
{
9084
return variableArity;
@@ -98,13 +92,11 @@ public boolean isGeneric()
9892
return !typeVariableConstraints.isEmpty();
9993
}
10094

101-
@JsonProperty
10295
public List<TypeVariableConstraint> getTypeVariableConstraints()
10396
{
10497
return typeVariableConstraints;
10598
}
10699

107-
@JsonProperty
108100
public List<LongVariableConstraint> getLongVariableConstraints()
109101
{
110102
return longVariableConstraints;
@@ -308,17 +300,4 @@ public Signature build()
308300
return new Signature(typeVariableConstraints, longVariableConstraints, returnType, arguments, variableArity);
309301
}
310302
}
311-
312-
@JsonCreator
313-
@DoNotCall // For JSON deserialization only
314-
@Deprecated // Discourage usages in SPI consumers
315-
public static Signature fromJson(
316-
@JsonProperty("typeVariableConstraints") List<TypeVariableConstraint> typeVariableConstraints,
317-
@JsonProperty("longVariableConstraints") List<LongVariableConstraint> longVariableConstraints,
318-
@JsonProperty("returnType") TypeSignature returnType,
319-
@JsonProperty("arguments") List<Argument> arguments,
320-
@JsonProperty("variableArity") boolean variableArity)
321-
{
322-
return new Signature(typeVariableConstraints, longVariableConstraints, returnType, arguments, variableArity);
323-
}
324303
}

0 commit comments

Comments
 (0)