diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/Exchange.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/Exchange.java index 56d5d9de5ada..b58e0c048053 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/Exchange.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/Exchange.java @@ -14,6 +14,7 @@ package io.trino.spi.exchange; import io.airlift.slice.Slice; +import io.trino.spi.Experimental; import javax.annotation.concurrent.ThreadSafe; @@ -22,6 +23,7 @@ import java.util.concurrent.CompletableFuture; @ThreadSafe +@Experimental(eta = "2023-01-01") public interface Exchange extends Closeable { diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeContext.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeContext.java index 0cce51baddcd..38fd8807d35c 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeContext.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeContext.java @@ -13,10 +13,12 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; import io.trino.spi.QueryId; import static java.util.Objects.requireNonNull; +@Experimental(eta = "2023-01-01") public class ExchangeContext { private final QueryId queryId; diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeId.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeId.java index c5f1f99482a0..95d977cae916 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeId.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeId.java @@ -15,6 +15,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; +import io.trino.spi.Experimental; import java.util.Objects; import java.util.regex.Pattern; @@ -22,6 +23,7 @@ import static java.util.Objects.requireNonNull; import static java.util.UUID.randomUUID; +@Experimental(eta = "2023-01-01") public class ExchangeId { private static final Pattern ID_PATTERN = Pattern.compile("[a-zA-Z0-9_-]+"); diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManager.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManager.java index 2f8515781e26..f8171324d164 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManager.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManager.java @@ -14,6 +14,7 @@ package io.trino.spi.exchange; import io.airlift.slice.Slice; +import io.trino.spi.Experimental; import javax.annotation.concurrent.ThreadSafe; @@ -39,6 +40,7 @@ * data written by other instances must be safely discarded */ @ThreadSafe +@Experimental(eta = "2023-01-01") public interface ExchangeManager { /** diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerFactory.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerFactory.java index 6ac7b5e5dfbe..8848834e7691 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerFactory.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerFactory.java @@ -13,8 +13,11 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + import java.util.Map; +@Experimental(eta = "2023-01-01") public interface ExchangeManagerFactory { String getName(); diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerHandleResolver.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerHandleResolver.java index b349c6165206..0a359340b3ce 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerHandleResolver.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeManagerHandleResolver.java @@ -13,6 +13,9 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + +@Experimental(eta = "2023-01-01") public interface ExchangeManagerHandleResolver { Class getExchangeSinkInstanceHandleClass(); diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSink.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSink.java index 3ba58b66d4db..38b690daaf4e 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSink.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSink.java @@ -14,12 +14,14 @@ package io.trino.spi.exchange; import io.airlift.slice.Slice; +import io.trino.spi.Experimental; import javax.annotation.concurrent.ThreadSafe; import java.util.concurrent.CompletableFuture; @ThreadSafe +@Experimental(eta = "2023-01-01") public interface ExchangeSink { CompletableFuture NOT_BLOCKED = CompletableFuture.completedFuture(null); diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkHandle.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkHandle.java index cb853176ae2f..9485647650a3 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkHandle.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkHandle.java @@ -13,9 +13,12 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + /* * Implementation is expected to be Jackson serializable */ +@Experimental(eta = "2023-01-01") public interface ExchangeSinkHandle { } diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkInstanceHandle.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkInstanceHandle.java index 6c68b733b1b5..c02865842f86 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkInstanceHandle.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSinkInstanceHandle.java @@ -13,6 +13,9 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + +@Experimental(eta = "2023-01-01") public interface ExchangeSinkInstanceHandle { } diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSource.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSource.java index 21f1aa52f3d7..615d1d2f6d9a 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSource.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSource.java @@ -14,6 +14,7 @@ package io.trino.spi.exchange; import io.airlift.slice.Slice; +import io.trino.spi.Experimental; import javax.annotation.Nullable; import javax.annotation.concurrent.ThreadSafe; @@ -22,6 +23,7 @@ import java.util.concurrent.CompletableFuture; @ThreadSafe +@Experimental(eta = "2023-01-01") public interface ExchangeSource extends Closeable { diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceHandle.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceHandle.java index 7e2d0b7814e1..31b4b8b43905 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceHandle.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceHandle.java @@ -13,9 +13,12 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + /* * Implementation is expected to be Jackson serializable and include equals, hashCode and toString methods */ +@Experimental(eta = "2023-01-01") public interface ExchangeSourceHandle { int getPartitionId(); diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceSplitter.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceSplitter.java index 8eb1e39a3078..19d543b39ec6 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceSplitter.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceSplitter.java @@ -13,10 +13,13 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + import java.io.Closeable; import java.util.Optional; import java.util.concurrent.CompletableFuture; +@Experimental(eta = "2023-01-01") public interface ExchangeSourceSplitter extends Closeable { diff --git a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceStatistics.java b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceStatistics.java index ca52fcc203d7..2fcbb4e58f00 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceStatistics.java +++ b/core/trino-spi/src/main/java/io/trino/spi/exchange/ExchangeSourceStatistics.java @@ -13,6 +13,9 @@ */ package io.trino.spi.exchange; +import io.trino.spi.Experimental; + +@Experimental(eta = "2023-01-01") public class ExchangeSourceStatistics { private final long sizeInBytes; diff --git a/core/trino-spi/src/test/java/io/trino/spi/TestSpiBackwardCompatibility.java b/core/trino-spi/src/test/java/io/trino/spi/TestSpiBackwardCompatibility.java index 401c87aeda73..919764da11ff 100644 --- a/core/trino-spi/src/test/java/io/trino/spi/TestSpiBackwardCompatibility.java +++ b/core/trino-spi/src/test/java/io/trino/spi/TestSpiBackwardCompatibility.java @@ -113,13 +113,13 @@ private static URL getUrl(Path path) } } - private static Set getSpiEntities(ClassLoader classLoader, boolean includeDeprecated) + private static Set getSpiEntities(ClassLoader classLoader, boolean includeDeprecatedAndExperimental) throws IOException { ImmutableSet.Builder entities = ImmutableSet.builder(); for (ClassInfo classInfo : ClassPath.from(classLoader).getTopLevelClassesRecursive("io.trino.spi")) { Class clazz = classInfo.load(); - addClassEntities(entities, clazz, includeDeprecated); + addClassEntities(entities, clazz, includeDeprecatedAndExperimental); } return entities.build().stream() // Ignore `final` so that we can e.g. remove final from a SPI method. @@ -128,9 +128,9 @@ private static Set getSpiEntities(ClassLoader classLoader, boolean inclu .collect(toImmutableSet()); } - private static void addClassEntities(ImmutableSet.Builder entities, Class clazz, boolean includeDeprecated) + private static void addClassEntities(ImmutableSet.Builder entities, Class clazz, boolean includeDeprecatedAndExperimental) { - if (isExperimental(clazz, "class " + clazz.getName())) { + if (!includeDeprecatedAndExperimental && isExperimental(clazz, "class " + clazz.getName())) { return; } @@ -139,46 +139,46 @@ private static void addClassEntities(ImmutableSet.Builder entities, Clas } // TODO remove this after Experimental is released - if (isOriginalPtfClass(clazz, includeDeprecated)) { + if (isOriginalPtfClass(clazz, includeDeprecatedAndExperimental)) { return; } for (Class nestedClass : clazz.getDeclaredClasses()) { - addClassEntities(entities, nestedClass, includeDeprecated); + addClassEntities(entities, nestedClass, includeDeprecatedAndExperimental); } - if (!includeDeprecated && clazz.isAnnotationPresent(Deprecated.class)) { + if (!includeDeprecatedAndExperimental && clazz.isAnnotationPresent(Deprecated.class)) { return; } entities.add("Class: " + clazz.toGenericString()); for (Constructor constructor : clazz.getConstructors()) { - if (isExperimental(constructor, "constructor " + constructor)) { + if (!includeDeprecatedAndExperimental && isExperimental(constructor, "constructor " + constructor)) { continue; } - if (!includeDeprecated && constructor.isAnnotationPresent(Deprecated.class)) { + if (!includeDeprecatedAndExperimental && constructor.isAnnotationPresent(Deprecated.class)) { continue; } entities.add("Constructor: " + constructor.toGenericString()); } for (Method method : clazz.getDeclaredMethods()) { - if (isExperimental(method, "method " + method)) { + if (!includeDeprecatedAndExperimental && isExperimental(method, "method " + method)) { continue; } if (!isPublic(method.getModifiers())) { continue; } - if (!includeDeprecated && method.isAnnotationPresent(Deprecated.class)) { + if (!includeDeprecatedAndExperimental && method.isAnnotationPresent(Deprecated.class)) { continue; } entities.add("Method: " + method.toGenericString()); } for (Field field : clazz.getDeclaredFields()) { - if (isExperimental(field, "field " + field)) { + if (!includeDeprecatedAndExperimental && isExperimental(field, "field " + field)) { continue; } if (!isPublic(field.getModifiers())) { continue; } - if (!includeDeprecated && field.isAnnotationPresent(Deprecated.class)) { + if (!includeDeprecatedAndExperimental && field.isAnnotationPresent(Deprecated.class)) { continue; } entities.add("Field: " + field.toGenericString()); @@ -203,8 +203,8 @@ private static boolean isExperimental(AnnotatedElement element, String descripti } // TODO remove this after Experimental is released - private static boolean isOriginalPtfClass(Class clazz, boolean includeDeprecated) + private static boolean isOriginalPtfClass(Class clazz, boolean includeDeprecatedAndExperimental) { - return !includeDeprecated && clazz.getName().startsWith("io.trino.spi.ptf."); + return !includeDeprecatedAndExperimental && clazz.getName().startsWith("io.trino.spi.ptf."); } }