diff --git a/core/src/main/java/com/arangodb/ArangoDatabase.java b/core/src/main/java/com/arangodb/ArangoDatabase.java
index 1c7653360..9ef0327a5 100644
--- a/core/src/main/java/com/arangodb/ArangoDatabase.java
+++ b/core/src/main/java/com/arangodb/ArangoDatabase.java
@@ -363,9 +363,24 @@ public interface ArangoDatabase extends ArangoSerdeAccessor {
* @return information about the query
* @see API
* Documentation
+ *
+ * @deprecated for removal, use {@link ArangoDatabase#explainAqlQuery(String, Map, AqlQueryExplainOptions)} instead
*/
+ @Deprecated
AqlExecutionExplainEntity explainQuery(String query, Map bindVars, AqlQueryExplainOptions options);
+ /**
+ * Explain an AQL query and return information about it
+ *
+ * @param query the query which you want explained
+ * @param bindVars key/value pairs representing the bind parameters
+ * @param options Additional options, can be null
+ * @return information about the query
+ * @see API
+ * Documentation
+ */
+ AqlQueryExplainEntity explainAqlQuery(String query, Map bindVars, AqlQueryExplainOptions options);
+
/**
* Parse an AQL query and return information about it This method is for query validation only. To actually query
* the database, see {@link ArangoDatabase#query(String, Class, Map, AqlQueryOptions)}
diff --git a/core/src/main/java/com/arangodb/ArangoDatabaseAsync.java b/core/src/main/java/com/arangodb/ArangoDatabaseAsync.java
index 6f4c2a366..9ab7fb0c2 100644
--- a/core/src/main/java/com/arangodb/ArangoDatabaseAsync.java
+++ b/core/src/main/java/com/arangodb/ArangoDatabaseAsync.java
@@ -164,9 +164,17 @@ public interface ArangoDatabaseAsync extends ArangoSerdeAccessor {
/**
* Asynchronous version of {@link ArangoDatabase#explainQuery(String, Map, AqlQueryExplainOptions)}
+ *
+ * @deprecated for removal, use {@link ArangoDatabaseAsync#explainAqlQuery(String, Map, AqlQueryExplainOptions)} instead
*/
+ @Deprecated
CompletableFuture explainQuery(String query, Map bindVars, AqlQueryExplainOptions options);
+ /**
+ * Asynchronous version of {@link ArangoDatabase#explainAqlQuery(String, Map, AqlQueryExplainOptions)}
+ */
+ CompletableFuture explainAqlQuery(String query, Map bindVars, AqlQueryExplainOptions options);
+
/**
* Asynchronous version of {@link ArangoDatabase#parseQuery(String)}
*/
diff --git a/core/src/main/java/com/arangodb/entity/AqlQueryExplainEntity.java b/core/src/main/java/com/arangodb/entity/AqlQueryExplainEntity.java
new file mode 100644
index 000000000..cc200bfda
--- /dev/null
+++ b/core/src/main/java/com/arangodb/entity/AqlQueryExplainEntity.java
@@ -0,0 +1,147 @@
+/*
+ * DISCLAIMER
+ *
+ * Copyright 2016 ArangoDB GmbH, Cologne, Germany
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Copyright holder is ArangoDB GmbH, Cologne, Germany
+ */
+
+package com.arangodb.entity;
+
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+public final class AqlQueryExplainEntity {
+
+ private ExecutionPlan plan;
+ private Collection plans;
+ private Collection warnings;
+ private ExecutionStats stats;
+ private Boolean cacheable;
+
+ public ExecutionPlan getPlan() {
+ return plan;
+ }
+
+ public Collection getPlans() {
+ return plans;
+ }
+
+ public Collection getWarnings() {
+ return warnings;
+ }
+
+ public ExecutionStats getStats() {
+ return stats;
+ }
+
+ public Boolean getCacheable() {
+ return cacheable;
+ }
+
+ public static final class ExecutionPlan {
+ private final Map properties = new HashMap<>();
+ private Collection nodes;
+ private Double estimatedCost;
+ private Collection collections;
+ private Collection rules;
+ private Collection variables;
+
+ @JsonAnySetter
+ public void add(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+
+ public Collection getNodes() {
+ return nodes;
+ }
+
+ public Double getEstimatedCost() {
+ return estimatedCost;
+ }
+
+ public Collection getCollections() {
+ return collections;
+ }
+
+ public Collection getRules() {
+ return rules;
+ }
+
+ public Collection getVariables() {
+ return variables;
+ }
+ }
+
+ public static final class ExecutionNode {
+ private final Map properties = new HashMap<>();
+
+ @JsonAnySetter
+ public void add(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+ }
+
+ public static final class ExecutionVariable {
+ private final Map properties = new HashMap<>();
+
+ @JsonAnySetter
+ public void add(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+ }
+
+ public static final class ExecutionCollection {
+ private final Map properties = new HashMap<>();
+
+ @JsonAnySetter
+ public void add(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+ }
+
+ public static final class ExecutionStats {
+ private final Map properties = new HashMap<>();
+
+ @JsonAnySetter
+ public void add(String key, Object value) {
+ properties.put(key, value);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+ }
+
+}
diff --git a/core/src/main/java/com/arangodb/internal/ArangoDatabaseAsyncImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDatabaseAsyncImpl.java
index cf5ceeecc..490333c5d 100644
--- a/core/src/main/java/com/arangodb/internal/ArangoDatabaseAsyncImpl.java
+++ b/core/src/main/java/com/arangodb/internal/ArangoDatabaseAsyncImpl.java
@@ -223,6 +223,12 @@ public CompletableFuture explainQuery(
return executorAsync().execute(() -> explainQueryRequest(query, bindVars, options), AqlExecutionExplainEntity.class);
}
+ @Override
+ public CompletableFuture explainAqlQuery(
+ String query, Map bindVars, AqlQueryExplainOptions options) {
+ return executorAsync().execute(() -> explainQueryRequest(query, bindVars, options), AqlQueryExplainEntity.class);
+ }
+
@Override
public CompletableFuture parseQuery(final String query) {
return executorAsync().execute(() -> parseQueryRequest(query), AqlParseEntity.class);
diff --git a/core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java b/core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java
index 63fec8e66..3129d06aa 100644
--- a/core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java
+++ b/core/src/main/java/com/arangodb/internal/ArangoDatabaseImpl.java
@@ -244,6 +244,11 @@ public AqlExecutionExplainEntity explainQuery(
return executorSync().execute(explainQueryRequest(query, bindVars, options), AqlExecutionExplainEntity.class);
}
+ @Override
+ public AqlQueryExplainEntity explainAqlQuery(String query, Map bindVars, AqlQueryExplainOptions options) {
+ return executorSync().execute(explainQueryRequest(query, bindVars, options), AqlQueryExplainEntity.class);
+ }
+
@Override
public AqlParseEntity parseQuery(final String query) {
return executorSync().execute(parseQueryRequest(query), AqlParseEntity.class);
diff --git a/core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java b/core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java
index a09889378..a5e4d6a79 100644
--- a/core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java
+++ b/core/src/main/java/com/arangodb/model/AqlQueryExplainOptions.java
@@ -110,7 +110,7 @@ public AqlQueryExplainOptions rules(final Collection rules) {
return this;
}
- private Options getOptions() {
+ public Options getOptions() {
if (options == null) {
options = new Options();
}
@@ -128,9 +128,21 @@ public Optimizer getOptimizer() {
}
return optimizer;
}
+
+ public Integer getMaxNumberOfPlans() {
+ return maxNumberOfPlans;
+ }
+
+ public Boolean getAllPlans() {
+ return allPlans;
+ }
}
public static final class Optimizer {
private Collection rules;
+
+ public Collection getRules() {
+ return rules;
+ }
}
}
diff --git a/driver/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver/reflect-config.json b/driver/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver/reflect-config.json
index a25499327..aeeb8de38 100644
--- a/driver/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver/reflect-config.json
+++ b/driver/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver/reflect-config.json
@@ -270,13 +270,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
+ "name": "com.arangodb.entity.arangosearch.ConsolidationType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationType",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -318,13 +318,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.CursorEntity",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoPointAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoPointAnalyzerProperties",
+ "name": "com.arangodb.entity.CursorEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -377,6 +377,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionStats",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.arangosearch.analyzer.StopwordsAnalyzerProperties",
"allDeclaredFields": true,
@@ -437,12 +443,24 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionVariable",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.TransactionEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.ArangoDBEngine",
"allDeclaredFields": true,
@@ -462,13 +480,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.AqlExecutionExplainEntity$ExecutionStats",
+ "name": "com.arangodb.entity.arangosearch.analyzer.DelimiterAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.DelimiterAnalyzerProperties",
+ "name": "com.arangodb.entity.AqlExecutionExplainEntity$ExecutionStats",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -479,6 +497,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionNode",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.AqlParseEntity$AstNode",
"allDeclaredFields": true,
@@ -563,6 +587,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.arangosearch.ConsolidationPolicy",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.arangosearch.analyzer.MinHashAnalyzerProperties",
"allDeclaredFields": true,
@@ -570,7 +600,7 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationPolicy",
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionPlan",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -581,6 +611,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionCollection",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.KeyOptions",
"allDeclaredFields": true,
@@ -618,13 +654,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.StreamTransactionEntity",
+ "name": "com.arangodb.entity.arangosearch.analyzer.WildcardAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.WildcardAnalyzerProperties",
+ "name": "com.arangodb.entity.StreamTransactionEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1038,13 +1074,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
+ "name": "com.arangodb.entity.arangosearch.ConsolidationType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationType",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1055,6 +1091,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.model.TransactionalOptions",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.model.IndexOptions",
"allDeclaredFields": true,
@@ -1140,19 +1182,19 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionDropOptions",
+ "name": "com.arangodb.model.CollectionCountOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.LogLevelOptions",
+ "name": "com.arangodb.model.DocumentDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DBCreateOptions",
+ "name": "com.arangodb.model.EdgeDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1164,313 +1206,313 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlFunctionDeleteOptions",
+ "name": "com.arangodb.model.EdgeReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.AnalyzerDeleteOptions",
+ "name": "com.arangodb.model.VertexReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserUpdateOptions",
+ "name": "com.arangodb.model.DocumentUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.StreamTransactionOptions",
+ "name": "com.arangodb.model.GraphDocumentReadOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentReplaceOptions",
+ "name": "com.arangodb.model.EdgeUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DatabaseUsersOptions",
+ "name": "com.arangodb.model.VertexUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ViewRenameOptions",
+ "name": "com.arangodb.model.DocumentExistsOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasPropertiesOptions",
+ "name": "com.arangodb.model.DocumentReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCollectionDropOptions",
+ "name": "com.arangodb.model.VertexDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionCreateOptions",
+ "name": "com.arangodb.model.EdgeCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlQueryExplainOptions$Options",
+ "name": "com.arangodb.model.CollectionTruncateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ViewCreateOptions",
+ "name": "com.arangodb.model.DocumentCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionCreateOptions$Options",
+ "name": "com.arangodb.model.VertexCollectionDropOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchOptionsBuilder",
+ "name": "com.arangodb.model.LogLevelOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlQueryParseOptions",
+ "name": "com.arangodb.model.DBCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserAccessOptions",
+ "name": "com.arangodb.model.AqlFunctionDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ComputedValue",
+ "name": "com.arangodb.model.arangosearch.AnalyzerDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCollectionRemoveOptions",
+ "name": "com.arangodb.model.StreamTransactionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions",
+ "name": "com.arangodb.model.UserUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeUpdateOptions",
+ "name": "com.arangodb.model.DatabaseUsersOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionCreateOptions",
+ "name": "com.arangodb.model.ViewRenameOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchCreateOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexDeleteOptions",
+ "name": "com.arangodb.model.EdgeCollectionDropOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCreateOptions",
+ "name": "com.arangodb.model.CollectionCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphCreateOptions",
+ "name": "com.arangodb.model.AqlQueryExplainOptions$Options",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionsReadOptions",
+ "name": "com.arangodb.model.ViewCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.TransactionOptions",
+ "name": "com.arangodb.model.VertexCollectionCreateOptions$Options",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionTruncateOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchOptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionSchema",
+ "name": "com.arangodb.model.AqlQueryParseOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentImportOptions",
+ "name": "com.arangodb.model.UserAccessOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentDeleteOptions",
+ "name": "com.arangodb.model.ComputedValue",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeReplaceOptions",
+ "name": "com.arangodb.model.EdgeCollectionRemoveOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexReplaceOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphDocumentReadOptions",
+ "name": "com.arangodb.model.VertexCollectionCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentUpdateOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexUpdateOptions",
+ "name": "com.arangodb.model.GraphCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.OptionsBuilder",
+ "name": "com.arangodb.model.CollectionsReadOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.TransactionCollectionOptions",
+ "name": "com.arangodb.model.TransactionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.LogOptions",
+ "name": "com.arangodb.model.DocumentImportOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ReplaceEdgeDefinitionOptions",
+ "name": "com.arangodb.model.CollectionSchema",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserCreateOptions",
+ "name": "com.arangodb.model.OptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionPropertiesOptions",
+ "name": "com.arangodb.model.TransactionCollectionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DatabaseOptions",
+ "name": "com.arangodb.model.ReplaceEdgeDefinitionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionRemoveOptions",
+ "name": "com.arangodb.model.LogOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentCreateOptions",
+ "name": "com.arangodb.model.CollectionPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphCreateOptions$SmartOptions",
+ "name": "com.arangodb.model.UserCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionCountOptions",
+ "name": "com.arangodb.model.DatabaseOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeDeleteOptions",
+ "name": "com.arangodb.model.VertexCollectionRemoveOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasOptionsBuilder",
+ "name": "com.arangodb.model.GraphCreateOptions$SmartOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionRenameOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasOptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasCreateOptions",
+ "name": "com.arangodb.model.CollectionRenameOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentExistsOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1481,12 +1523,6 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
- {
- "name": "com.arangodb.model.AqlQueryOptionsTest",
- "allDeclaredFields": true,
- "allDeclaredMethods": true,
- "allDeclaredConstructors": true
- },
{
"name": "com.arangodb.model.AqlFunctionCreateOptions",
"allDeclaredFields": true,
@@ -1607,4 +1643,4 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
}
-]
+]
\ No newline at end of file
diff --git a/shaded/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver-shaded/reflect-config.json b/shaded/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver-shaded/reflect-config.json
index a25499327..aeeb8de38 100644
--- a/shaded/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver-shaded/reflect-config.json
+++ b/shaded/src/main/resources/META-INF/native-image/com.arangodb/arangodb-java-driver-shaded/reflect-config.json
@@ -270,13 +270,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
+ "name": "com.arangodb.entity.arangosearch.ConsolidationType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationType",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -318,13 +318,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.CursorEntity",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoPointAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoPointAnalyzerProperties",
+ "name": "com.arangodb.entity.CursorEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -377,6 +377,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionStats",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.arangosearch.analyzer.StopwordsAnalyzerProperties",
"allDeclaredFields": true,
@@ -437,12 +443,24 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionVariable",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.TransactionEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.ArangoDBEngine",
"allDeclaredFields": true,
@@ -462,13 +480,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.AqlExecutionExplainEntity$ExecutionStats",
+ "name": "com.arangodb.entity.arangosearch.analyzer.DelimiterAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.DelimiterAnalyzerProperties",
+ "name": "com.arangodb.entity.AqlExecutionExplainEntity$ExecutionStats",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -479,6 +497,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionNode",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.AqlParseEntity$AstNode",
"allDeclaredFields": true,
@@ -563,6 +587,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.arangosearch.ConsolidationPolicy",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.arangosearch.analyzer.MinHashAnalyzerProperties",
"allDeclaredFields": true,
@@ -570,7 +600,7 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationPolicy",
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionPlan",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -581,6 +611,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.entity.AqlQueryExplainEntity$ExecutionCollection",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.entity.KeyOptions",
"allDeclaredFields": true,
@@ -618,13 +654,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.StreamTransactionEntity",
+ "name": "com.arangodb.entity.arangosearch.analyzer.WildcardAnalyzerProperties",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.WildcardAnalyzerProperties",
+ "name": "com.arangodb.entity.StreamTransactionEntity",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1038,13 +1074,13 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
+ "name": "com.arangodb.entity.arangosearch.ConsolidationType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.entity.arangosearch.ConsolidationType",
+ "name": "com.arangodb.entity.arangosearch.analyzer.GeoS2AnalyzerProperties$GeoS2AnalyzerType",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1055,6 +1091,12 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
+ {
+ "name": "com.arangodb.model.TransactionalOptions",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
{
"name": "com.arangodb.model.IndexOptions",
"allDeclaredFields": true,
@@ -1140,19 +1182,19 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionDropOptions",
+ "name": "com.arangodb.model.CollectionCountOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.LogLevelOptions",
+ "name": "com.arangodb.model.DocumentDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DBCreateOptions",
+ "name": "com.arangodb.model.EdgeDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1164,313 +1206,313 @@
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlFunctionDeleteOptions",
+ "name": "com.arangodb.model.EdgeReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.AnalyzerDeleteOptions",
+ "name": "com.arangodb.model.VertexReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserUpdateOptions",
+ "name": "com.arangodb.model.DocumentUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.StreamTransactionOptions",
+ "name": "com.arangodb.model.GraphDocumentReadOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentReplaceOptions",
+ "name": "com.arangodb.model.EdgeUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DatabaseUsersOptions",
+ "name": "com.arangodb.model.VertexUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ViewRenameOptions",
+ "name": "com.arangodb.model.DocumentExistsOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasPropertiesOptions",
+ "name": "com.arangodb.model.DocumentReplaceOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCollectionDropOptions",
+ "name": "com.arangodb.model.VertexDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionCreateOptions",
+ "name": "com.arangodb.model.EdgeCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlQueryExplainOptions$Options",
+ "name": "com.arangodb.model.CollectionTruncateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ViewCreateOptions",
+ "name": "com.arangodb.model.DocumentCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionCreateOptions$Options",
+ "name": "com.arangodb.model.VertexCollectionDropOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchOptionsBuilder",
+ "name": "com.arangodb.model.LogLevelOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.AqlQueryParseOptions",
+ "name": "com.arangodb.model.DBCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserAccessOptions",
+ "name": "com.arangodb.model.AqlFunctionDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ComputedValue",
+ "name": "com.arangodb.model.arangosearch.AnalyzerDeleteOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCollectionRemoveOptions",
+ "name": "com.arangodb.model.StreamTransactionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions",
+ "name": "com.arangodb.model.UserUpdateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeUpdateOptions",
+ "name": "com.arangodb.model.DatabaseUsersOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionCreateOptions",
+ "name": "com.arangodb.model.ViewRenameOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.ArangoSearchCreateOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexDeleteOptions",
+ "name": "com.arangodb.model.EdgeCollectionDropOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeCreateOptions",
+ "name": "com.arangodb.model.CollectionCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphCreateOptions",
+ "name": "com.arangodb.model.AqlQueryExplainOptions$Options",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionsReadOptions",
+ "name": "com.arangodb.model.ViewCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.TransactionOptions",
+ "name": "com.arangodb.model.VertexCollectionCreateOptions$Options",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionTruncateOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchOptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionSchema",
+ "name": "com.arangodb.model.AqlQueryParseOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentImportOptions",
+ "name": "com.arangodb.model.UserAccessOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentDeleteOptions",
+ "name": "com.arangodb.model.ComputedValue",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeReplaceOptions",
+ "name": "com.arangodb.model.EdgeCollectionRemoveOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexReplaceOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphDocumentReadOptions",
+ "name": "com.arangodb.model.VertexCollectionCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentUpdateOptions",
+ "name": "com.arangodb.model.arangosearch.ArangoSearchCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexUpdateOptions",
+ "name": "com.arangodb.model.GraphCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.OptionsBuilder",
+ "name": "com.arangodb.model.CollectionsReadOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.TransactionCollectionOptions",
+ "name": "com.arangodb.model.TransactionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.LogOptions",
+ "name": "com.arangodb.model.DocumentImportOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.ReplaceEdgeDefinitionOptions",
+ "name": "com.arangodb.model.CollectionSchema",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.UserCreateOptions",
+ "name": "com.arangodb.model.OptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionPropertiesOptions",
+ "name": "com.arangodb.model.TransactionCollectionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DatabaseOptions",
+ "name": "com.arangodb.model.ReplaceEdgeDefinitionOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.VertexCollectionRemoveOptions",
+ "name": "com.arangodb.model.LogOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentCreateOptions",
+ "name": "com.arangodb.model.CollectionPropertiesOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.GraphCreateOptions$SmartOptions",
+ "name": "com.arangodb.model.UserCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionCountOptions",
+ "name": "com.arangodb.model.DatabaseOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.EdgeDeleteOptions",
+ "name": "com.arangodb.model.VertexCollectionRemoveOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasOptionsBuilder",
+ "name": "com.arangodb.model.GraphCreateOptions$SmartOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.CollectionRenameOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasOptionsBuilder",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.arangosearch.SearchAliasCreateOptions",
+ "name": "com.arangodb.model.CollectionRenameOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
{
- "name": "com.arangodb.model.DocumentExistsOptions",
+ "name": "com.arangodb.model.arangosearch.SearchAliasCreateOptions",
"allDeclaredFields": true,
"allDeclaredMethods": true,
"allDeclaredConstructors": true
@@ -1481,12 +1523,6 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
},
- {
- "name": "com.arangodb.model.AqlQueryOptionsTest",
- "allDeclaredFields": true,
- "allDeclaredMethods": true,
- "allDeclaredConstructors": true
- },
{
"name": "com.arangodb.model.AqlFunctionCreateOptions",
"allDeclaredFields": true,
@@ -1607,4 +1643,4 @@
"allDeclaredMethods": true,
"allDeclaredConstructors": true
}
-]
+]
\ No newline at end of file
diff --git a/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java b/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java
index 35502380a..e52bb65d7 100644
--- a/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java
+++ b/test-functional/src/test/java/com/arangodb/ArangoDatabaseAsyncTest.java
@@ -42,6 +42,8 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.catchThrowable;
+import static org.assertj.core.api.InstanceOfAssertFactories.*;
+import static org.assertj.core.api.InstanceOfAssertFactories.DOUBLE;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
@@ -1054,79 +1056,196 @@ void queryAllowRetryCloseSingleBatch(ArangoDBAsync arangoDB) throws ExecutionExc
cursor.close().get();
}
+ private String getExplainQuery(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
+ ArangoCollectionAsync character = db.collection("got_characters");
+ ArangoCollectionAsync actor = db.collection("got_actors");
+
+ if (!character.exists().get())
+ character.create().get();
+
+ if (!actor.exists().get())
+ actor.create().get();
+
+ return "FOR `character` IN `got_characters` " +
+ " FOR `actor` IN `got_actors` " +
+ " FILTER `actor`.`_id` == @myId" +
+ " FILTER `character`.`actor` == `actor`.`_id` " +
+ " FILTER `character`.`value` != 1/0 " +
+ " RETURN {`character`, `actor`}";
+ }
+
+ void checkExecutionPlan(AqlExecutionExplainEntity.ExecutionPlan plan) {
+ assertThat(plan).isNotNull();
+ assertThat(plan.getEstimatedNrItems())
+ .isNotNull()
+ .isNotNegative();
+ assertThat(plan.getNodes()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionNode node = plan.getNodes().iterator().next();
+ assertThat(node.getEstimatedCost()).isNotNull();
+
+ assertThat(plan.getEstimatedCost()).isNotNull().isNotNegative();
+ assertThat(plan.getCollections()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionCollection collection = plan.getCollections().iterator().next();
+ assertThat(collection.getName())
+ .isNotNull()
+ .isNotEmpty();
+
+ assertThat(plan.getRules()).isNotEmpty();
+ assertThat(plan.getVariables()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionVariable variable = plan.getVariables().iterator().next();
+ assertThat(variable.getName())
+ .isNotNull()
+ .isNotEmpty();
+ }
+
+ @SuppressWarnings("deprecation")
@ParameterizedTest
@MethodSource("asyncDbs")
void explainQuery(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
- final AqlExecutionExplainEntity explain = db.explainQuery("for i in 1..1 return i", null, null).get();
+ AqlExecutionExplainEntity explain = db.explainQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions()).get();
assertThat(explain).isNotNull();
- assertThat(explain.getPlan()).isNotNull();
+
+ checkExecutionPlan(explain.getPlan());
assertThat(explain.getPlans()).isNull();
- final ExecutionPlan plan = explain.getPlan();
- assertThat(plan.getCollections()).isEmpty();
- assertThat(plan.getEstimatedCost()).isPositive();
- assertThat(plan.getEstimatedNrItems()).isPositive();
- assertThat(plan.getVariables()).hasSize(2);
- assertThat(plan.getNodes()).isNotEmpty();
- if (isAtLeastVersion(3, 10)) {
- assertThat(explain.getStats().getPeakMemoryUsage()).isNotNull();
- assertThat(explain.getStats().getExecutionTime()).isNotNull();
- }
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().getExecutionTime())
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isFalse();
}
+ @SuppressWarnings("deprecation")
@ParameterizedTest
@MethodSource("asyncDbs")
- void explainQueryWithBindVars(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
- final AqlExecutionExplainEntity explain = db.explainQuery("for i in 1..1 return @value",
- Collections.singletonMap("value", 11), null).get();
+ void explainQueryAllPlans(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
+ AqlExecutionExplainEntity explain = db.explainQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions().allPlans(true)).get();
assertThat(explain).isNotNull();
- assertThat(explain.getPlan()).isNotNull();
- assertThat(explain.getPlans()).isNull();
- final ExecutionPlan plan = explain.getPlan();
- assertThat(plan.getCollections()).isEmpty();
- assertThat(plan.getEstimatedCost()).isPositive();
- assertThat(plan.getEstimatedNrItems()).isPositive();
- assertThat(plan.getVariables()).hasSize(3);
+
+ assertThat(explain.getPlan()).isNull();
+ assertThat(explain.getPlans()).allSatisfy(this::checkExecutionPlan);
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().getExecutionTime())
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isNull();
+ }
+
+ void checkUntypedExecutionPlan(AqlQueryExplainEntity.ExecutionPlan plan) {
+ assertThat(plan).isNotNull();
+ assertThat(plan.get("estimatedNrItems"))
+ .isInstanceOf(Integer.class)
+ .asInstanceOf(INTEGER)
+ .isNotNull()
+ .isNotNegative();
assertThat(plan.getNodes()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionNode node = plan.getNodes().iterator().next();
+ assertThat(node.get("estimatedCost")).isNotNull();
+
+ assertThat(plan.getEstimatedCost()).isNotNull().isNotNegative();
+ assertThat(plan.getCollections()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionCollection collection = plan.getCollections().iterator().next();
+ assertThat(collection.get("name"))
+ .isInstanceOf(String.class)
+ .asInstanceOf(STRING)
+ .isNotNull()
+ .isNotEmpty();
+
+ assertThat(plan.getRules()).isNotEmpty();
+ assertThat(plan.getVariables()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionVariable variable = plan.getVariables().iterator().next();
+ assertThat(variable.get("name"))
+ .isInstanceOf(String.class)
+ .asInstanceOf(STRING)
+ .isNotNull()
+ .isNotEmpty();
}
@ParameterizedTest
@MethodSource("asyncDbs")
- void explainQueryWithWarnings(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
- AqlExecutionExplainEntity explain = db.explainQuery("return 1/0", null, null).get();
- assertThat(explain.getWarnings())
- .hasSize(1)
- .allSatisfy(w -> {
- assertThat(w.getCode()).isEqualTo(1562);
- assertThat(w.getMessage()).isEqualTo("division by zero");
- });
+ void explainAqlQuery(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
+ AqlQueryExplainEntity explain = db.explainAqlQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions()).get();
+ assertThat(explain).isNotNull();
+
+ checkUntypedExecutionPlan(explain.getPlan());
+ assertThat(explain.getPlans()).isNull();
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().get("executionTime"))
+ .isInstanceOf(Double.class)
+ .asInstanceOf(DOUBLE)
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isFalse();
}
@ParameterizedTest
@MethodSource("asyncDbs")
- void explainQueryWithIndexNode(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
- ArangoCollectionAsync character = db.collection("got_characters");
- ArangoCollectionAsync actor = db.collection("got_actors");
+ void explainAqlQueryAllPlans(ArangoDatabaseAsync db) throws ExecutionException, InterruptedException {
+ AqlQueryExplainEntity explain = db.explainAqlQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions().allPlans(true)).get();
+ assertThat(explain).isNotNull();
- if (!character.exists().get())
- character.create().get();
+ assertThat(explain.getPlan()).isNull();
+ assertThat(explain.getPlans()).allSatisfy(this::checkUntypedExecutionPlan);
+ assertThat(explain.getWarnings()).isNotEmpty();
- if (!actor.exists().get())
- actor.create().get();
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().get("executionTime"))
+ .isInstanceOf(Double.class)
+ .asInstanceOf(DOUBLE)
+ .isNotNull()
+ .isPositive();
- String query = "" +
- "FOR `character` IN `got_characters` " +
- " FOR `actor` IN `got_actors` " +
- " FILTER `character`.`actor` == `actor`.`_id` " +
- " RETURN `character`";
-
- final ExecutionPlan plan = db.explainQuery(query, null, null).get().getPlan();
- plan.getNodes().stream()
- .filter(it -> "IndexNode".equals(it.getType()))
- .flatMap(it -> it.getIndexes().stream())
- .forEach(it -> {
- assertThat(it.getType()).isEqualTo(IndexType.primary);
- assertThat(it.getFields()).contains("_key");
- });
+ assertThat(explain.getCacheable()).isNull();
}
@ParameterizedTest
diff --git a/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java b/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java
index b44ed20bb..d041c26ec 100644
--- a/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java
+++ b/test-functional/src/test/java/com/arangodb/ArangoDatabaseTest.java
@@ -21,7 +21,6 @@
package com.arangodb;
import com.arangodb.entity.*;
-import com.arangodb.entity.AqlExecutionExplainEntity.ExecutionPlan;
import com.arangodb.entity.QueryCachePropertiesEntity.CacheMode;
import com.arangodb.model.*;
import com.arangodb.util.*;
@@ -45,6 +44,7 @@
import static org.assertj.core.api.Assertions.catchThrowable;
import static org.junit.jupiter.api.Assertions.fail;
import static org.junit.jupiter.api.Assumptions.assumeTrue;
+import static org.assertj.core.api.InstanceOfAssertFactories.*;
/**
@@ -1125,79 +1125,196 @@ void queryAllowRetryCloseSingleBatch(ArangoDB arangoDB) throws IOException {
cursor.close();
}
+ private String getExplainQuery(ArangoDatabase db) {
+ ArangoCollection character = db.collection("got_characters");
+ ArangoCollection actor = db.collection("got_actors");
+
+ if (!character.exists())
+ character.create();
+
+ if (!actor.exists())
+ actor.create();
+
+ return "FOR `character` IN `got_characters` " +
+ " FOR `actor` IN `got_actors` " +
+ " FILTER `actor`.`_id` == @myId" +
+ " FILTER `character`.`actor` == `actor`.`_id` " +
+ " FILTER `character`.`value` != 1/0 " +
+ " RETURN {`character`, `actor`}";
+ }
+
+ void checkExecutionPlan(AqlExecutionExplainEntity.ExecutionPlan plan) {
+ assertThat(plan).isNotNull();
+ assertThat(plan.getEstimatedNrItems())
+ .isNotNull()
+ .isNotNegative();
+ assertThat(plan.getNodes()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionNode node = plan.getNodes().iterator().next();
+ assertThat(node.getEstimatedCost()).isNotNull();
+
+ assertThat(plan.getEstimatedCost()).isNotNull().isNotNegative();
+ assertThat(plan.getCollections()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionCollection collection = plan.getCollections().iterator().next();
+ assertThat(collection.getName())
+ .isNotNull()
+ .isNotEmpty();
+
+ assertThat(plan.getRules()).isNotEmpty();
+ assertThat(plan.getVariables()).isNotEmpty();
+
+ AqlExecutionExplainEntity.ExecutionVariable variable = plan.getVariables().iterator().next();
+ assertThat(variable.getName())
+ .isNotNull()
+ .isNotEmpty();
+ }
+
+ @SuppressWarnings("deprecation")
@ParameterizedTest
@MethodSource("dbs")
void explainQuery(ArangoDatabase db) {
- final AqlExecutionExplainEntity explain = db.explainQuery("for i in 1..1 return i", null, null);
+ AqlExecutionExplainEntity explain = db.explainQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions());
assertThat(explain).isNotNull();
- assertThat(explain.getPlan()).isNotNull();
+
+ checkExecutionPlan(explain.getPlan());
assertThat(explain.getPlans()).isNull();
- final ExecutionPlan plan = explain.getPlan();
- assertThat(plan.getCollections()).isEmpty();
- assertThat(plan.getEstimatedCost()).isPositive();
- assertThat(plan.getEstimatedNrItems()).isPositive();
- assertThat(plan.getVariables()).hasSize(2);
- assertThat(plan.getNodes()).isNotEmpty();
- if (isAtLeastVersion(3, 10)) {
- assertThat(explain.getStats().getPeakMemoryUsage()).isNotNull();
- assertThat(explain.getStats().getExecutionTime()).isNotNull();
- }
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().getExecutionTime())
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isFalse();
}
+ @SuppressWarnings("deprecation")
@ParameterizedTest
@MethodSource("dbs")
- void explainQueryWithBindVars(ArangoDatabase db) {
- final AqlExecutionExplainEntity explain = db.explainQuery("for i in 1..1 return @value",
- Collections.singletonMap("value", 11), null);
+ void explainQueryAllPlans(ArangoDatabase db) {
+ AqlExecutionExplainEntity explain = db.explainQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions().allPlans(true));
assertThat(explain).isNotNull();
- assertThat(explain.getPlan()).isNotNull();
- assertThat(explain.getPlans()).isNull();
- final ExecutionPlan plan = explain.getPlan();
- assertThat(plan.getCollections()).isEmpty();
- assertThat(plan.getEstimatedCost()).isPositive();
- assertThat(plan.getEstimatedNrItems()).isPositive();
- assertThat(plan.getVariables()).hasSize(3);
+
+ assertThat(explain.getPlan()).isNull();
+ assertThat(explain.getPlans()).allSatisfy(this::checkExecutionPlan);
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().getExecutionTime())
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isNull();
+ }
+
+ void checkUntypedExecutionPlan(AqlQueryExplainEntity.ExecutionPlan plan) {
+ assertThat(plan).isNotNull();
+ assertThat(plan.get("estimatedNrItems"))
+ .isInstanceOf(Integer.class)
+ .asInstanceOf(INTEGER)
+ .isNotNull()
+ .isNotNegative();
assertThat(plan.getNodes()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionNode node = plan.getNodes().iterator().next();
+ assertThat(node.get("estimatedCost")).isNotNull();
+
+ assertThat(plan.getEstimatedCost()).isNotNull().isNotNegative();
+ assertThat(plan.getCollections()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionCollection collection = plan.getCollections().iterator().next();
+ assertThat(collection.get("name"))
+ .isInstanceOf(String.class)
+ .asInstanceOf(STRING)
+ .isNotNull()
+ .isNotEmpty();
+
+ assertThat(plan.getRules()).isNotEmpty();
+ assertThat(plan.getVariables()).isNotEmpty();
+
+ AqlQueryExplainEntity.ExecutionVariable variable = plan.getVariables().iterator().next();
+ assertThat(variable.get("name"))
+ .isInstanceOf(String.class)
+ .asInstanceOf(STRING)
+ .isNotNull()
+ .isNotEmpty();
}
@ParameterizedTest
@MethodSource("dbs")
- void explainQueryWithWarnings(ArangoDatabase db) {
- AqlExecutionExplainEntity explain = db.explainQuery("return 1/0", null, null);
- assertThat(explain.getWarnings())
- .hasSize(1)
- .allSatisfy(w -> {
- assertThat(w.getCode()).isEqualTo(1562);
- assertThat(w.getMessage()).isEqualTo("division by zero");
- });
+ void explainAqlQuery(ArangoDatabase db) {
+ AqlQueryExplainEntity explain = db.explainAqlQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions());
+ assertThat(explain).isNotNull();
+
+ checkUntypedExecutionPlan(explain.getPlan());
+ assertThat(explain.getPlans()).isNull();
+ assertThat(explain.getWarnings()).isNotEmpty();
+
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().get("executionTime"))
+ .isInstanceOf(Double.class)
+ .asInstanceOf(DOUBLE)
+ .isNotNull()
+ .isPositive();
+
+ assertThat(explain.getCacheable()).isFalse();
}
@ParameterizedTest
@MethodSource("dbs")
- void explainQueryWithIndexNode(ArangoDatabase db) {
- ArangoCollection character = db.collection("got_characters");
- ArangoCollection actor = db.collection("got_actors");
+ void explainAqlQueryAllPlans(ArangoDatabase db) {
+ AqlQueryExplainEntity explain = db.explainAqlQuery(
+ getExplainQuery(db),
+ Collections.singletonMap("myId", "123"),
+ new AqlQueryExplainOptions().allPlans(true));
+ assertThat(explain).isNotNull();
- if (!character.exists())
- character.create();
+ assertThat(explain.getPlan()).isNull();
+ assertThat(explain.getPlans()).allSatisfy(this::checkUntypedExecutionPlan);
+ assertThat(explain.getWarnings()).isNotEmpty();
- if (!actor.exists())
- actor.create();
+ CursorWarning warning = explain.getWarnings().iterator().next();
+ assertThat(warning).isNotNull();
+ assertThat(warning.getCode()).isEqualTo(1562);
+ assertThat(warning.getMessage()).contains("division by zero");
+
+ assertThat(explain.getStats()).isNotNull();
+
+ assertThat(explain.getStats().get("executionTime"))
+ .isInstanceOf(Double.class)
+ .asInstanceOf(DOUBLE)
+ .isNotNull()
+ .isPositive();
- String query = "" +
- "FOR `character` IN `got_characters` " +
- " FOR `actor` IN `got_actors` " +
- " FILTER `character`.`actor` == `actor`.`_id` " +
- " RETURN `character`";
-
- final ExecutionPlan plan = db.explainQuery(query, null, null).getPlan();
- plan.getNodes().stream()
- .filter(it -> "IndexNode".equals(it.getType()))
- .flatMap(it -> it.getIndexes().stream())
- .forEach(it -> {
- assertThat(it.getType()).isEqualTo(IndexType.primary);
- assertThat(it.getFields()).contains("_key");
- });
+ assertThat(explain.getCacheable()).isNull();
}
@ParameterizedTest