diff --git a/.mvn/modernizer/violations.xml b/.mvn/modernizer/violations.xml
index 060379962a39..f9f25afda8de 100644
--- a/.mvn/modernizer/violations.xml
+++ b/.mvn/modernizer/violations.xml
@@ -313,4 +313,16 @@
1.8
Prefer org.testng.annotations.AfterClass
+
+
+ com/fasterxml/jackson/core/JsonFactory."<init>":()V
+ 1.8
+ Use io.trino.plugin.base.util.JsonUtils.jsonFactory()
+
+
+
+ com/fasterxml/jackson/core/JsonFactoryBuilder."<init>":()V
+ 1.8
+ Use io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder() instead
+
diff --git a/client/trino-cli/src/main/java/io/trino/cli/JsonPrinter.java b/client/trino-cli/src/main/java/io/trino/cli/JsonPrinter.java
index 6b6e69a4614c..ff7e4aba0eda 100644
--- a/client/trino-cli/src/main/java/io/trino/cli/JsonPrinter.java
+++ b/client/trino-cli/src/main/java/io/trino/cli/JsonPrinter.java
@@ -14,8 +14,11 @@
package io.trino.cli;
import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.StreamReadConstraints;
import com.google.common.collect.ImmutableList;
+import org.gaul.modernizer_maven_annotations.SuppressModernizer;
import java.io.IOException;
import java.io.Writer;
@@ -40,7 +43,7 @@ public JsonPrinter(List fieldNames, Writer writer)
public void printRows(List> rows, boolean complete)
throws IOException
{
- JsonFactory jsonFactory = new JsonFactory().configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
+ JsonFactory jsonFactory = jsonFactory();
try (JsonGenerator jsonGenerator = jsonFactory.createGenerator(writer)) {
jsonGenerator.setRootValueSeparator(null);
for (List> row : rows) {
@@ -70,4 +73,18 @@ private static Object formatValue(Object o)
}
return o;
}
+
+ @SuppressModernizer
+ // JsonFactoryBuilder usage is intentional as we don't want to bring additional dependency on plugin-toolkit module
+ private static JsonFactory jsonFactory()
+ {
+ return new JsonFactoryBuilder()
+ .streamReadConstraints(StreamReadConstraints.builder()
+ .maxNumberLength(Integer.MAX_VALUE)
+ .maxNestingDepth(Integer.MAX_VALUE)
+ .maxStringLength(Integer.MAX_VALUE)
+ .build())
+ .build()
+ .configure(JsonGenerator.Feature.AUTO_CLOSE_TARGET, false);
+ }
}
diff --git a/core/trino-main/src/main/java/io/trino/operator/scalar/JsonExtract.java b/core/trino-main/src/main/java/io/trino/operator/scalar/JsonExtract.java
index b65e12129007..7aa3d1885f30 100644
--- a/core/trino-main/src/main/java/io/trino/operator/scalar/JsonExtract.java
+++ b/core/trino-main/src/main/java/io/trino/operator/scalar/JsonExtract.java
@@ -14,7 +14,6 @@
package io.trino.operator.scalar;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
@@ -36,6 +35,7 @@
import static com.fasterxml.jackson.core.JsonToken.START_OBJECT;
import static com.fasterxml.jackson.core.JsonToken.VALUE_NULL;
import static io.airlift.slice.Slices.utf8Slice;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static io.trino.util.JsonUtil.createJsonGenerator;
import static io.trino.util.JsonUtil.createJsonParser;
@@ -118,7 +118,7 @@ public final class JsonExtract
{
private static final int ESTIMATED_JSON_OUTPUT_SIZE = 512;
- private static final JsonFactory JSON_FACTORY = new JsonFactoryBuilder()
+ private static final JsonFactory JSON_FACTORY = jsonFactoryBuilder()
.disable(CANONICALIZE_FIELD_NAMES)
.build();
diff --git a/core/trino-main/src/main/java/io/trino/operator/scalar/JsonFunctions.java b/core/trino-main/src/main/java/io/trino/operator/scalar/JsonFunctions.java
index 0e33c6b9e205..0bcda5aa9254 100644
--- a/core/trino-main/src/main/java/io/trino/operator/scalar/JsonFunctions.java
+++ b/core/trino-main/src/main/java/io/trino/operator/scalar/JsonFunctions.java
@@ -14,7 +14,6 @@
package io.trino.operator.scalar;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.MappingJsonFactory;
@@ -47,6 +46,7 @@
import static com.fasterxml.jackson.core.JsonToken.VALUE_STRING;
import static com.fasterxml.jackson.core.JsonToken.VALUE_TRUE;
import static io.airlift.slice.Slices.utf8Slice;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static io.trino.spi.type.Chars.padSpaces;
import static io.trino.util.JsonUtil.createJsonParser;
@@ -54,7 +54,7 @@
public final class JsonFunctions
{
- private static final JsonFactory JSON_FACTORY = new JsonFactoryBuilder()
+ private static final JsonFactory JSON_FACTORY = jsonFactoryBuilder()
.disable(CANONICALIZE_FIELD_NAMES)
.build();
diff --git a/core/trino-main/src/main/java/io/trino/util/JsonUtil.java b/core/trino-main/src/main/java/io/trino/util/JsonUtil.java
index b8b4156a653e..2449665235cb 100644
--- a/core/trino-main/src/main/java/io/trino/util/JsonUtil.java
+++ b/core/trino-main/src/main/java/io/trino/util/JsonUtil.java
@@ -14,7 +14,6 @@
package io.trino.util;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
@@ -77,6 +76,7 @@
import static com.fasterxml.jackson.core.JsonToken.START_ARRAY;
import static com.fasterxml.jackson.core.JsonToken.START_OBJECT;
import static com.google.common.base.Verify.verify;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.spi.StandardErrorCode.INVALID_CAST_ARGUMENT;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static io.trino.spi.type.BigintType.BIGINT;
@@ -114,7 +114,7 @@ private JsonUtil() {}
// Note: JsonFactory is mutable, instances cannot be shared openly.
public static JsonFactory createJsonFactory()
{
- return new JsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
+ return jsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
}
public static JsonParser createJsonParser(JsonFactory factory, Slice json)
diff --git a/core/trino-main/src/test/java/io/trino/operator/scalar/TestJsonExtract.java b/core/trino-main/src/test/java/io/trino/operator/scalar/TestJsonExtract.java
index e6c261d3f6d3..6a96d0ed1dab 100644
--- a/core/trino-main/src/test/java/io/trino/operator/scalar/TestJsonExtract.java
+++ b/core/trino-main/src/test/java/io/trino/operator/scalar/TestJsonExtract.java
@@ -30,6 +30,7 @@
import static io.trino.operator.scalar.JsonExtract.ObjectFieldJsonExtractor;
import static io.trino.operator.scalar.JsonExtract.ScalarValueJsonExtractor;
import static io.trino.operator.scalar.JsonExtract.generateExtractor;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static io.trino.spi.type.VarcharType.VARCHAR;
import static io.trino.testing.assertions.TrinoExceptionAssert.assertTrinoExceptionThrownBy;
@@ -341,7 +342,7 @@ public void testNoAutomaticEncodingDetection()
private static String doExtract(JsonExtractor jsonExtractor, String json)
throws IOException
{
- JsonFactory jsonFactory = new JsonFactory();
+ JsonFactory jsonFactory = jsonFactory();
JsonParser jsonParser = jsonFactory.createParser(json);
jsonParser.nextToken(); // Advance to the first token
Slice extract = jsonExtractor.extract(jsonParser);
diff --git a/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonDeserializer.java b/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonDeserializer.java
index 17f4f21a2ea1..e408082b4edc 100644
--- a/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonDeserializer.java
+++ b/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonDeserializer.java
@@ -14,7 +14,6 @@
package io.trino.hive.formats.line.json;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonLocation;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
@@ -68,6 +67,7 @@
import static io.trino.hive.formats.HiveFormatUtils.parseHiveDate;
import static io.trino.hive.formats.HiveFormatUtils.writeDecimal;
import static io.trino.plugin.base.type.TrinoTimestampEncoderFactory.createTimestampEncoder;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.spi.type.BigintType.BIGINT;
import static io.trino.spi.type.BooleanType.BOOLEAN;
import static io.trino.spi.type.Chars.truncateToLengthAndTrimSpaces;
@@ -107,7 +107,7 @@
public class JsonDeserializer
implements LineDeserializer
{
- private static final JsonFactory JSON_FACTORY = new JsonFactoryBuilder()
+ private static final JsonFactory JSON_FACTORY = jsonFactoryBuilder()
.disable(INTERN_FIELD_NAMES)
.build();
diff --git a/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonSerializer.java b/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonSerializer.java
index f6994e1d67a2..803e60560d0e 100644
--- a/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonSerializer.java
+++ b/lib/trino-hive-formats/src/main/java/io/trino/hive/formats/line/json/JsonSerializer.java
@@ -41,6 +41,7 @@
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.collect.ImmutableList.toImmutableList;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static io.trino.spi.type.BigintType.BIGINT;
import static io.trino.spi.type.BooleanType.BOOLEAN;
import static io.trino.spi.type.DateType.DATE;
@@ -67,7 +68,7 @@ public JsonSerializer(List columns)
.map(column -> field(column.name().toLowerCase(Locale.ROOT), column.type()))
.collect(toImmutableList()));
- jsonFactory = new JsonFactory();
+ jsonFactory = jsonFactory();
}
@Override
diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonTypeUtil.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonTypeUtil.java
index 92286a81b098..46150e5975df 100644
--- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonTypeUtil.java
+++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonTypeUtil.java
@@ -14,7 +14,6 @@
package io.trino.plugin.base.util;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.airlift.json.ObjectMapperProvider;
@@ -31,13 +30,14 @@
import static com.fasterxml.jackson.core.JsonFactory.Feature.CANONICALIZE_FIELD_NAMES;
import static com.fasterxml.jackson.databind.SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS;
import static com.google.common.base.Preconditions.checkState;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.spi.StandardErrorCode.INVALID_FUNCTION_ARGUMENT;
import static java.lang.String.format;
import static java.nio.charset.StandardCharsets.UTF_8;
public final class JsonTypeUtil
{
- private static final JsonFactory JSON_FACTORY = new JsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
+ private static final JsonFactory JSON_FACTORY = jsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
private static final ObjectMapper SORTED_MAPPER = new ObjectMapperProvider().get().configure(ORDER_MAP_ENTRIES_BY_KEYS, true);
private JsonTypeUtil() {}
diff --git a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java
index 41696f5f6b83..e5e2fb40a36d 100644
--- a/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java
+++ b/lib/trino-plugin-toolkit/src/main/java/io/trino/plugin/base/util/JsonUtils.java
@@ -13,13 +13,17 @@
*/
package io.trino.plugin.base.util;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.StreamReadConstraints;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.airlift.json.ObjectMapperProvider;
+import org.gaul.modernizer_maven_annotations.SuppressModernizer;
import java.io.IOException;
import java.io.InputStream;
@@ -144,6 +148,24 @@ private static T parseJson(JsonNode node, String jsonPointer, Class javaT
return jsonTreeToValue(mappingsNode, javaType);
}
+ public static JsonFactory jsonFactory()
+ {
+ return jsonFactoryBuilder().build();
+ }
+
+ @SuppressModernizer
+ // JsonFactoryBuilder usage is intentional as we need to disable read constraints
+ // due to the limits introduced by Jackson 2.15
+ public static JsonFactoryBuilder jsonFactoryBuilder()
+ {
+ return new JsonFactoryBuilder()
+ .streamReadConstraints(StreamReadConstraints.builder()
+ .maxStringLength(Integer.MAX_VALUE)
+ .maxNestingDepth(Integer.MAX_VALUE)
+ .maxNumberLength(Integer.MAX_VALUE)
+ .build());
+ }
+
private interface ParserConstructor
{
JsonParser createParser(ObjectMapper mapper, I input)
diff --git a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java
index 47e32eed38bc..8aded8864c92 100644
--- a/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java
+++ b/lib/trino-plugin-toolkit/src/test/java/io/trino/plugin/base/util/TestJsonUtils.java
@@ -14,12 +14,15 @@
package io.trino.plugin.base.util;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.StreamReadConstraints;
import com.fasterxml.jackson.databind.JsonNode;
import org.testng.annotations.Test;
import java.io.IOException;
import java.io.UncheckedIOException;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static io.trino.plugin.base.util.JsonUtils.parseJson;
import static io.trino.plugin.base.util.TestJsonUtils.TestEnum.OPTION_A;
import static java.nio.charset.StandardCharsets.US_ASCII;
@@ -70,4 +73,28 @@ public void testTrailingContent()
.hasMessage("Could not parse JSON")
.hasStackTraceContaining("Unrecognized token 'not': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')");
}
+
+ @Test
+ public void testFactoryHasNoReadContraints()
+ {
+ assertReadConstraints(jsonFactory().streamReadConstraints());
+ assertReadConstraints(jsonFactoryBuilder().build().streamReadConstraints());
+ }
+
+ @Test
+ public void testBuilderHasNoReadConstraints()
+ {
+ assertReadConstraints(jsonFactoryBuilder().build().streamReadConstraints());
+ }
+
+ private static void assertReadConstraints(StreamReadConstraints constraints)
+ {
+ // Jackson 2.15 introduced read constraints limit that are too strict for
+ // Trino use-cases. Ensure that those limits are no longer present for JsonFactories.
+ //
+ // https://github.com/trinodb/trino/issues/17843
+ assertThat(constraints.getMaxStringLength()).isEqualTo(Integer.MAX_VALUE);
+ assertThat(constraints.getMaxNestingDepth()).isEqualTo(Integer.MAX_VALUE);
+ assertThat(constraints.getMaxNumberLength()).isEqualTo(Integer.MAX_VALUE);
+ }
}
diff --git a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/PartitionData.java b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/PartitionData.java
index b4e3b315ed84..b1e1fbbb818f 100644
--- a/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/PartitionData.java
+++ b/plugin/trino-iceberg/src/main/java/io/trino/plugin/iceberg/PartitionData.java
@@ -28,6 +28,7 @@
import java.nio.ByteBuffer;
import java.util.UUID;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static io.trino.spi.type.DecimalType.createDecimalType;
import static io.trino.spi.type.Decimals.rescale;
import static java.lang.String.format;
@@ -37,7 +38,7 @@ public class PartitionData
implements StructLike
{
private static final String PARTITION_VALUES_FIELD = "partitionValues";
- private static final JsonFactory FACTORY = new JsonFactory();
+ private static final JsonFactory FACTORY = jsonFactory();
private static final ObjectMapper MAPPER = new ObjectMapper(FACTORY)
.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS, true);
diff --git a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusQueryResponseParse.java b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusQueryResponseParse.java
index 86ab33b9c630..a6a785ddd6d7 100644
--- a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusQueryResponseParse.java
+++ b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusQueryResponseParse.java
@@ -13,7 +13,6 @@
*/
package io.trino.plugin.prometheus;
-import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -28,6 +27,7 @@
import java.util.List;
import java.util.Map;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static io.trino.plugin.prometheus.PrometheusErrorCode.PROMETHEUS_PARSE_ERROR;
import static java.util.Collections.singletonList;
@@ -46,7 +46,7 @@ public PrometheusQueryResponseParse(InputStream response)
{
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
- JsonParser parser = new JsonFactory().createParser(response);
+ JsonParser parser = jsonFactory().createParser(response);
while (!parser.isClosed()) {
JsonToken jsonToken = parser.nextToken();
if (JsonToken.FIELD_NAME.equals(jsonToken)) {
diff --git a/service/trino-proxy/pom.xml b/service/trino-proxy/pom.xml
index 53853be2d662..2f5a332a9935 100644
--- a/service/trino-proxy/pom.xml
+++ b/service/trino-proxy/pom.xml
@@ -18,6 +18,11 @@
+
+ io.trino
+ trino-plugin-toolkit
+
+
io.airlift
bootstrap
diff --git a/service/trino-proxy/src/main/java/io/trino/proxy/ProxyResource.java b/service/trino-proxy/src/main/java/io/trino/proxy/ProxyResource.java
index d065c5394c41..0c6708676fc4 100644
--- a/service/trino-proxy/src/main/java/io/trino/proxy/ProxyResource.java
+++ b/service/trino-proxy/src/main/java/io/trino/proxy/ProxyResource.java
@@ -14,7 +14,6 @@
package io.trino.proxy;
import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonFactoryBuilder;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
@@ -72,6 +71,7 @@
import static io.airlift.http.client.Request.Builder.preparePost;
import static io.airlift.http.client.StaticBodyGenerator.createStaticBodyGenerator;
import static io.airlift.jaxrs.AsyncResponseHandler.bindAsyncResponse;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactoryBuilder;
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
import static jakarta.ws.rs.core.MediaType.TEXT_PLAIN_TYPE;
import static jakarta.ws.rs.core.Response.Status.BAD_GATEWAY;
@@ -93,7 +93,7 @@ public class ProxyResource
private static final String X509_ATTRIBUTE = "jakarta.servlet.request.X509Certificate";
private static final Duration ASYNC_TIMEOUT = new Duration(2, MINUTES);
- private static final JsonFactory JSON_FACTORY = new JsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
+ private static final JsonFactory JSON_FACTORY = jsonFactoryBuilder().disable(CANONICALIZE_FIELD_NAMES).build();
private final ExecutorService executor = newCachedThreadPool(daemonThreadsNamed("proxy-%s"));
private final HttpClient httpClient;
diff --git a/service/trino-verifier/pom.xml b/service/trino-verifier/pom.xml
index c91462f926d6..77a3d4222910 100644
--- a/service/trino-verifier/pom.xml
+++ b/service/trino-verifier/pom.xml
@@ -28,6 +28,11 @@
trino-parser
+
+ io.trino
+ trino-plugin-toolkit
+
+
io.trino
trino-spi
diff --git a/service/trino-verifier/src/main/java/io/trino/verifier/JsonEventClient.java b/service/trino-verifier/src/main/java/io/trino/verifier/JsonEventClient.java
index 121c570da325..243c9451e7d4 100644
--- a/service/trino-verifier/src/main/java/io/trino/verifier/JsonEventClient.java
+++ b/service/trino-verifier/src/main/java/io/trino/verifier/JsonEventClient.java
@@ -26,6 +26,7 @@
import java.io.PrintStream;
import java.io.UncheckedIOException;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static java.nio.charset.Charset.defaultCharset;
import static java.util.Objects.requireNonNull;
@@ -34,7 +35,7 @@ public class JsonEventClient
{
// TODO we should use JsonEventWriter instead
private final JsonEventSerializer serializer = new JsonEventSerializer(VerifierQueryEvent.class);
- private final JsonFactory factory = new JsonFactory();
+ private final JsonFactory factory = jsonFactory();
private final PrintStream out;
@Inject
diff --git a/testing/trino-benchmark/pom.xml b/testing/trino-benchmark/pom.xml
index 945813234f0f..dbb71318e75a 100644
--- a/testing/trino-benchmark/pom.xml
+++ b/testing/trino-benchmark/pom.xml
@@ -27,6 +27,11 @@
trino-parser
+
+ io.trino
+ trino-plugin-toolkit
+
+
io.trino
trino-spi
diff --git a/testing/trino-benchmark/src/main/java/io/trino/benchmark/JsonBenchmarkResultWriter.java b/testing/trino-benchmark/src/main/java/io/trino/benchmark/JsonBenchmarkResultWriter.java
index 0b9fca6034a8..c54cc896b112 100644
--- a/testing/trino-benchmark/src/main/java/io/trino/benchmark/JsonBenchmarkResultWriter.java
+++ b/testing/trino-benchmark/src/main/java/io/trino/benchmark/JsonBenchmarkResultWriter.java
@@ -14,7 +14,6 @@
package io.trino.benchmark;
import com.fasterxml.jackson.core.JsonEncoding;
-import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import java.io.IOException;
@@ -22,6 +21,7 @@
import java.io.UncheckedIOException;
import java.util.Map;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static java.util.Objects.requireNonNull;
public class JsonBenchmarkResultWriter
@@ -33,7 +33,7 @@ public JsonBenchmarkResultWriter(OutputStream outputStream)
{
requireNonNull(outputStream, "outputStream is null");
try {
- jsonGenerator = new JsonFactory().createGenerator(outputStream, JsonEncoding.UTF8);
+ jsonGenerator = jsonFactory().createGenerator(outputStream, JsonEncoding.UTF8);
jsonGenerator.writeStartObject();
jsonGenerator.writeArrayFieldStart("samples");
}
diff --git a/testing/trino-benchmark/src/main/java/io/trino/benchmark/OdsBenchmarkResultWriter.java b/testing/trino-benchmark/src/main/java/io/trino/benchmark/OdsBenchmarkResultWriter.java
index 949aea6ec9c3..6730e02bd8ea 100644
--- a/testing/trino-benchmark/src/main/java/io/trino/benchmark/OdsBenchmarkResultWriter.java
+++ b/testing/trino-benchmark/src/main/java/io/trino/benchmark/OdsBenchmarkResultWriter.java
@@ -14,7 +14,6 @@
package io.trino.benchmark;
import com.fasterxml.jackson.core.JsonEncoding;
-import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import java.io.IOException;
@@ -22,6 +21,7 @@
import java.io.UncheckedIOException;
import java.util.Map;
+import static io.trino.plugin.base.util.JsonUtils.jsonFactory;
import static java.util.Objects.requireNonNull;
public class OdsBenchmarkResultWriter
@@ -36,7 +36,7 @@ public OdsBenchmarkResultWriter(String entity, OutputStream outputStream)
requireNonNull(outputStream, "outputStream is null");
this.entity = entity;
try {
- jsonGenerator = new JsonFactory().createGenerator(outputStream, JsonEncoding.UTF8);
+ jsonGenerator = jsonFactory().createGenerator(outputStream, JsonEncoding.UTF8);
jsonGenerator.writeStartArray();
}
catch (IOException e) {