diff --git a/docs/reference/query-languages/esql/images/functions/decay.svg b/docs/reference/query-languages/esql/images/functions/decay.svg
index 176ef68b5b730..03973b34d2767 100644
--- a/docs/reference/query-languages/esql/images/functions/decay.svg
+++ b/docs/reference/query-languages/esql/images/functions/decay.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/reference/query-languages/esql/images/functions/knn.svg b/docs/reference/query-languages/esql/images/functions/knn.svg
index aefae3476031f..326dd00a40976 100644
--- a/docs/reference/query-languages/esql/images/functions/knn.svg
+++ b/docs/reference/query-languages/esql/images/functions/knn.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
index d9c096ab8a8c7..ffa28db2fa7af 100644
--- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
+++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java
@@ -1329,6 +1329,11 @@ public enum Cap {
*/
FIX_MV_EXPAND_INCONSISTENT_COLUMN_ORDER,
+ /**
+ * Support for the SET command.
+ */
+ SET_COMMAND(Build.current().isSnapshot()),
+
/**
* (Re)Added EXPLAIN command
*/
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/ParsingTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/ParsingTests.java
index aa9501f998d39..927872ab23cb9 100644
--- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/ParsingTests.java
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/ParsingTests.java
@@ -213,6 +213,7 @@ public void testInvalidSample() {
}
public void testSet() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse("SET foo = \"bar\"; row a = 1", new QueryParams());
assertThat(query.plan(), is(instanceOf(Row.class)));
assertThat(query.settings().size(), is(1));
@@ -232,6 +233,7 @@ public void testSet() {
}
public void testSetWithTripleQuotes() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse("SET foo = \"\"\"bar\"baz\"\"\"; row a = 1", new QueryParams());
assertThat(query.plan(), is(instanceOf(Row.class)));
assertThat(query.settings().size(), is(1));
@@ -249,6 +251,7 @@ public void testSetWithTripleQuotes() {
}
public void testMultipleSet() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse(
"SET foo = \"bar\"; SET bar = 2; SET foo = \"baz\"; SET x = 3.5; SET y = false; SET z = null; row a = 1",
new QueryParams()
@@ -265,6 +268,7 @@ public void testMultipleSet() {
}
public void testSetArrays() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse("SET foo = [\"bar\", \"baz\"]; SET bar = [1, 2, 3]; row a = 1", new QueryParams());
assertThat(query.plan(), is(instanceOf(Row.class)));
assertThat(query.settings().size(), is(2));
@@ -274,6 +278,7 @@ public void testSetArrays() {
}
public void testSetWithNamedParams() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse(
"SET foo = \"bar\"; SET bar = ?a; SET foo = \"baz\"; SET x = ?x; row a = 1",
new QueryParams(
@@ -293,6 +298,7 @@ public void testSetWithNamedParams() {
}
public void testSetWithPositionalParams() {
+ assumeTrue("SET command available in snapshot only", EsqlCapabilities.Cap.SET_COMMAND.isEnabled());
EsqlStatement query = parse(
"SET foo = \"bar\"; SET bar = ?; SET foo = \"baz\"; SET x = ?; row a = ?",
new QueryParams(
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/VerifierTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/VerifierTests.java
index cbbbe7bbeceff..3b884921d05be 100644
--- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/VerifierTests.java
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/analysis/VerifierTests.java
@@ -2069,6 +2069,8 @@ public void testCategorizeOptionSimilarityThreshold() {
}
public void testCategorizeWithInlineStats() {
+ assumeTrue("CATEGORIZE must be enabled", EsqlCapabilities.Cap.CATEGORIZE_V6.isEnabled());
+ assumeTrue("INLINESTATS must be enabled", EsqlCapabilities.Cap.INLINESTATS_V11.isEnabled());
assertEquals(
"1:37: CATEGORIZE [CATEGORIZE(last_name, { \"similarity_threshold\": 1 })] is not yet supported with "
+ "INLINESTATS [INLINESTATS COUNT(*) BY CATEGORIZE(last_name, { \"similarity_threshold\": 1 })]",
diff --git a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/score/DecayTests.java b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/score/DecayTests.java
index fda42d74a0e30..c68896b13884d 100644
--- a/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/score/DecayTests.java
+++ b/x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/scalar/score/DecayTests.java
@@ -13,6 +13,7 @@
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.script.ScoreScriptUtils;
+import org.elasticsearch.xpack.esql.action.EsqlCapabilities;
import org.elasticsearch.xpack.esql.core.expression.Expression;
import org.elasticsearch.xpack.esql.core.expression.Literal;
import org.elasticsearch.xpack.esql.core.expression.MapExpression;
@@ -20,6 +21,7 @@
import org.elasticsearch.xpack.esql.core.type.DataType;
import org.elasticsearch.xpack.esql.expression.function.AbstractScalarFunctionTestCase;
import org.elasticsearch.xpack.esql.expression.function.TestCaseSupplier;
+import org.junit.BeforeClass;
import java.time.Duration;
import java.time.Instant;
@@ -44,6 +46,11 @@ public DecayTests(@Name("TestCase") Supplier testCase
this.testCase = testCaseSupplier.get();
}
+ @BeforeClass
+ public static void checkCapability() {
+ assumeTrue("Decay function tests require the DECAY_FUNCTION capability", EsqlCapabilities.Cap.DECAY_FUNCTION.isEnabled());
+ }
+
@ParametersFactory
public static Iterable