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/");
}
}