diff --git a/client/trino-client/pom.xml b/client/trino-client/pom.xml index e0bdce83ecf7..ff18fe62524a 100644 --- a/client/trino-client/pom.xml +++ b/client/trino-client/pom.xml @@ -54,6 +54,11 @@ logging-interceptor + + com.squareup.okhttp3 + okhttp-brotli + + com.squareup.okhttp3 okhttp-jvm @@ -64,6 +69,11 @@ okhttp-urlconnection + + com.squareup.okhttp3 + okhttp-zstd + + dev.failsafe failsafe diff --git a/client/trino-client/src/main/java/io/trino/client/uri/HttpClientFactory.java b/client/trino-client/src/main/java/io/trino/client/uri/HttpClientFactory.java index b882792c146d..ebe896dd2750 100644 --- a/client/trino-client/src/main/java/io/trino/client/uri/HttpClientFactory.java +++ b/client/trino-client/src/main/java/io/trino/client/uri/HttpClientFactory.java @@ -21,7 +21,11 @@ import io.trino.client.auth.external.HttpTokenPoller; import io.trino.client.auth.external.RedirectHandler; import io.trino.client.auth.external.TokenPoller; +import okhttp3.CompressionInterceptor; +import okhttp3.Gzip; import okhttp3.OkHttpClient; +import okhttp3.brotli.Brotli; +import okhttp3.zstd.Zstd; import java.io.File; import java.time.Duration; @@ -126,6 +130,10 @@ public static OkHttpClient.Builder unauthenticatedClientBuilder(TrinoUri uri, St setupTimeouts(builder, toIntExact(uri.getTimeout().toMillis()), TimeUnit.MILLISECONDS); setupHttpLogging(builder, uri.getHttpLoggingLevel()); + if (!uri.isCompressionDisabled()) { + setupCompression(builder); + } + if (uri.isLocalRedirectDisallowed()) { builder.addNetworkInterceptor(new DisallowLocalRedirectInterceptor()); } @@ -166,6 +174,11 @@ public static OkHttpClient.Builder unauthenticatedClientBuilder(TrinoUri uri, St return builder; } + private static void setupCompression(OkHttpClient.Builder builder) + { + builder.addInterceptor(new CompressionInterceptor(Zstd.INSTANCE, Brotli.INSTANCE, Gzip.INSTANCE)); + } + protected static void setupUserAgent(OkHttpClient.Builder builder, String userAgent) { builder.addInterceptor(userAgent(userAgent)); diff --git a/client/trino-jdbc/pom.xml b/client/trino-jdbc/pom.xml index 110db6624cc7..08567f73372f 100644 --- a/client/trino-jdbc/pom.xml +++ b/client/trino-jdbc/pom.xml @@ -476,6 +476,10 @@ com.google.thirdparty ${shadeBase}.guava + + com.squareup + ${shadeBase}.squareup + io.airlift ${shadeBase}.airlift @@ -488,6 +492,10 @@ net.bytebuddy ${shadeBase}.net.bytebuddy + + org.brotli + ${shadeBase}.brotli + org.joda.time ${shadeBase}.joda.time diff --git a/client/trino-jdbc/src/test/java/io/trino/jdbc/JdbcDriverIT.java b/client/trino-jdbc/src/test/java/io/trino/jdbc/JdbcDriverIT.java index c18aa7026c48..24247096766e 100644 --- a/client/trino-jdbc/src/test/java/io/trino/jdbc/JdbcDriverIT.java +++ b/client/trino-jdbc/src/test/java/io/trino/jdbc/JdbcDriverIT.java @@ -75,6 +75,6 @@ public void testOpenTelemetryIsNotShaded() public static boolean isExpectedFile(String filename) { - return MANIFEST_FILES.contains(filename) || filename.startsWith("io/trino/jdbc") || filename.startsWith("aircompressor/"); + return MANIFEST_FILES.contains(filename) || filename.startsWith("io/trino/jdbc") || filename.startsWith("aircompressor/") || filename.startsWith("jni/"); } }