You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ri...@apache.org on 2026/10/04 10:14:57 UTC
(asterixdb) branch master updated: [ASTERIXDB-3817][COMP] Drop excludeUnknownKey from VectorIndexDetails
This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
The following commit(s) were added to refs/heads/master by this push:
new b49cd3437c [ASTERIXDB-3817][COMP] Drop excludeUnknownKey from VectorIndexDetails
b49cd3437c is described below
commit b49cd3437c042bb8fd18c559c232eda3979c8017
Author: Le0shy <le...@gmail.com>
AuthorDate: Sat Sep 5 02:44:33 2026 -0700
[ASTERIXDB-3817][COMP] Drop excludeUnknownKey from VectorIndexDetails
- user model changes: no
- storage format changes: no
- interface changes: yes
Details:
The EXCLUDE UNKNOWN KEY clause is already dropped in master, so removing
the field it fed is a clean deletion and does not involve a format
change on index metadata.
Ext-ref: MB-73194
Change-Id: I055099e76af12494c11f4b2c55e98b3477ea5647
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/21704
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Ali Alsuliman <al...@gmail.com>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Hongyu Shi <le...@gmail.com>
---
.../asterix/optimizer/rules/cbo/indexadvisor/FakeIndex.java | 3 +--
.../org/apache/asterix/app/translator/QueryTranslator.java | 8 ++------
.../main/java/org/apache/asterix/metadata/entities/Index.java | 10 +---------
.../metadata/entitytupletranslators/IndexTupleTranslator.java | 4 +---
.../VectorIndexParametersTupleTranslatorTest.java | 3 +--
5 files changed, 6 insertions(+), 22 deletions(-)
diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndex.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndex.java
index c68ab7d8c9..54d5ee5fc2 100644
--- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndex.java
+++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/cbo/indexadvisor/FakeIndex.java
@@ -49,8 +49,7 @@ public class FakeIndex extends Index {
super(databaseName, dataverseName, datasetName, indexName, DatasetConfig.IndexType.VTREE,
new VectorIndexDetails(vectorFieldName, includeFieldNames,
Collections.nCopies(includeFieldNames.size(), 0),
- Collections.nCopies(includeFieldNames.size(), BuiltinType.ANY), false, OptionalBoolean.empty(),
- vectorParameters),
+ Collections.nCopies(includeFieldNames.size(), BuiltinType.ANY), false, vectorParameters),
false, false, MetadataUtil.PENDING_NO_OP, Creator.DEFAULT_CREATOR);
}
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index f1cd96b8db..ff94f0531c 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -319,7 +319,6 @@ import org.apache.hyracks.storage.am.lsm.common.api.ILSMMergePolicyFactory;
import org.apache.hyracks.storage.am.lsm.common.dataflow.LSMTreeIndexInsertUpdateDeleteOperatorDescriptor;
import org.apache.hyracks.storage.am.lsm.invertedindex.fulltext.TokenizerCategory;
import org.apache.hyracks.util.LogRedactionUtil;
-import org.apache.hyracks.util.OptionalBoolean;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -1924,17 +1923,14 @@ public class QueryTranslator extends AbstractLangTranslator implements IStatemen
}
}
- // excludeUnknownKey is a BTree/Array-index DDL option that does not apply to a vector index;
- // the vector CREATE INDEX path never sets it, so it is always empty here.
// Fix the sizing before the record is written. num_clusters and train_list_fraction are
// derived from the per-partition cardinality when the user leaves them out, and the record is
// written before any build job runs, so deriving them later would leave the catalog silent
// about what the build actually used. Same reason the seed is drawn at DDL time.
VectorIndexParameters vectorParameters = VTreeParamsInference.infer(metadataProvider, ds,
stmtCreateIndex.getVectorParameters(), warningCollector, sourceLoc);
- indexDetails =
- new Index.VectorIndexDetails(keyFieldNames, includeFieldNames, includeFieldSourceIndicators,
- includeFieldTypes, false, OptionalBoolean.empty(), vectorParameters);
+ indexDetails = new Index.VectorIndexDetails(keyFieldNames, includeFieldNames,
+ includeFieldSourceIndicators, includeFieldTypes, false, vectorParameters);
Index newIndex = new Index(databaseName, dataverseName, datasetName, indexName, indexType, indexDetails,
stmtCreateIndex.isEnforced(), false, MetadataUtil.PENDING_ADD_OP, creator);
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
index 481e3f6963..151c2173e0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/Index.java
@@ -464,17 +464,13 @@ public class Index implements IMetadataEntity<Index>, Comparable<Index> {
private final boolean overrideKeyFieldTypes;
- private final Boolean excludeUnknownKey;
-
private final VectorIndexParameters vectorParameters;
public VectorIndexDetails(List<String> keyFieldNames, List<List<String>> includeFieldNames,
List<Integer> includeFieldSourceIndicators, List<IAType> includeFieldTypes,
- boolean overrideKeyFieldTypes, OptionalBoolean excludeUnknownKey,
- VectorIndexParameters vectorParameters) {
+ boolean overrideKeyFieldTypes, VectorIndexParameters vectorParameters) {
this.keyFieldNames = keyFieldNames;
this.overrideKeyFieldTypes = overrideKeyFieldTypes;
- this.excludeUnknownKey = excludeUnknownKey.isEmpty() ? null : excludeUnknownKey.get();
this.includeFieldNames = includeFieldNames;
this.includeFieldTypes = includeFieldTypes;
this.includeFieldSourceIndicators = includeFieldSourceIndicators;
@@ -501,10 +497,6 @@ public class Index implements IMetadataEntity<Index>, Comparable<Index> {
return includeFieldTypes;
}
- public OptionalBoolean getExcludeUnknownKey() {
- return OptionalBoolean.ofNullable(excludeUnknownKey);
- }
-
/** The index's validated {@code WITH} parameters; never {@code null}. */
public VectorIndexParameters getVectorParameters() {
return vectorParameters;
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
index 942593b752..3d856ac215 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entitytupletranslators/IndexTupleTranslator.java
@@ -468,7 +468,6 @@ public class IndexTupleTranslator extends AbstractTupleTranslator<Index> {
searchElements.stream().map(Pair::getRight).map(List::getFirst).collect(Collectors.toList());
keyFieldTypes = searchKeyType.stream().map(List::getFirst).collect(Collectors.toList());
- excludeUnknownKey = OptionalBoolean.empty();
castDefaultNull = OptionalBoolean.empty();
VectorIndexParameters vectorParameters = VectorIndexParameters.readFields(indexRecord);
@@ -499,8 +498,7 @@ public class IndexTupleTranslator extends AbstractTupleTranslator<Index> {
}
indexDetails = new Index.VectorIndexDetails(keyFieldNames.getFirst(), includeFieldNames,
- includeFieldSourceIndicators, includeFieldTypes, isOverridingKeyTypes, excludeUnknownKey,
- vectorParameters);
+ includeFieldSourceIndicators, includeFieldTypes, isOverridingKeyTypes, vectorParameters);
break;
case TEXT:
keyFieldNames =
diff --git a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/VectorIndexParametersTupleTranslatorTest.java b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/VectorIndexParametersTupleTranslatorTest.java
index 72d94a3f8d..bb50bb0591 100644
--- a/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/VectorIndexParametersTupleTranslatorTest.java
+++ b/asterixdb/asterix-metadata/src/test/java/org/apache/asterix/metadata/entitytupletranslators/VectorIndexParametersTupleTranslatorTest.java
@@ -57,7 +57,6 @@ import org.apache.asterix.om.vector.VectorIndexParameters;
import org.apache.asterix.runtime.compression.CompressionManager;
import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException;
import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.util.OptionalBoolean;
import org.junit.Assert;
import org.junit.Test;
@@ -204,7 +203,7 @@ public class VectorIndexParametersTupleTranslatorTest {
private static Index.VectorIndexDetails vectorIndexDetails(VectorIndexParameters parameters) {
return new Index.VectorIndexDetails(Collections.singletonList("embedding"), Collections.emptyList(),
- Collections.emptyList(), Collections.emptyList(), false, OptionalBoolean.empty(), parameters);
+ Collections.emptyList(), Collections.emptyList(), false, parameters);
}
private static VectorIndexParameters roundTrip(VectorIndexParameters parameters)