aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo/schema/derived
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-03-14 12:50:07 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-03-14 13:14:45 +0100
commit1fe5d1e05cce1dbb712f74b13731eb56a4be1b0d (patch)
tree0f1b76ab8cf342191bf3b1b247c35f6aa8def228 /config-model/src/main/java/com/yahoo/schema/derived
parent6c76d7dfcf6df3e1f92034d114b55425071faef8 (diff)
Add index mode to Schema
Diffstat (limited to 'config-model/src/main/java/com/yahoo/schema/derived')
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java17
-rw-r--r--config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java21
2 files changed, 29 insertions, 9 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
index b35918b3460..421f3d5a1d1 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/DerivedConfiguration.java
@@ -28,7 +28,7 @@ import java.io.Writer;
public class DerivedConfiguration {
private final Schema schema;
- private final boolean isStreaming;
+ private final SchemaInfo.IndexMode indexMode;
private Summaries summaries;
private Juniperrc juniperrc;
private AttributeFields attributeFields;
@@ -57,7 +57,8 @@ public class DerivedConfiguration {
}
DerivedConfiguration(Schema schema, RankProfileRegistry rankProfileRegistry, QueryProfileRegistry queryProfiles) {
- this(schema, new DeployState.Builder().rankProfileRegistry(rankProfileRegistry).queryProfiles(queryProfiles).build(), false);
+ this(new DeployState.Builder().rankProfileRegistry(rankProfileRegistry).queryProfiles(queryProfiles).build(),
+ schema, SchemaInfo.IndexMode.INDEX);
}
/**
@@ -67,8 +68,8 @@ public class DerivedConfiguration {
* argument is live. Which means that this object will be inconsistent if the given
* schema is later modified.
*/
- public DerivedConfiguration(Schema schema, DeployState deployState, boolean isStreaming) {
- this.isStreaming = isStreaming;
+ public DerivedConfiguration(DeployState deployState, Schema schema, SchemaInfo.IndexMode indexMode) {
+ this.indexMode = indexMode;
try {
Validator.ensureNotNull("Schema", schema);
this.schema = schema;
@@ -81,9 +82,9 @@ public class DerivedConfiguration {
summaries = new Summaries(schema, deployState.getDeployLogger(), deployState.getProperties().featureFlags());
juniperrc = new Juniperrc(schema);
rankProfileList = new RankProfileList(schema, schema.rankExpressionFiles(), attributeFields, deployState);
- indexingScript = new IndexingScript(schema, isStreaming);
- indexInfo = new IndexInfo(schema, isStreaming);
- schemaInfo = new SchemaInfo(schema, deployState.rankProfileRegistry(), summaries);
+ indexingScript = new IndexingScript(schema, isStreaming());
+ indexInfo = new IndexInfo(schema, isStreaming());
+ schemaInfo = new SchemaInfo(schema, indexMode, deployState.rankProfileRegistry(), summaries);
indexSchema = new IndexSchema(schema);
importedFields = new ImportedFields(schema);
}
@@ -153,7 +154,7 @@ public class DerivedConfiguration {
}
public boolean isStreaming() {
- return isStreaming;
+ return indexMode == SchemaInfo.IndexMode.STREAMING;
}
public Summaries getSummaries() {
diff --git a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
index 19a045ac444..f996b2624db 100644
--- a/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
+++ b/config-model/src/main/java/com/yahoo/schema/derived/SchemaInfo.java
@@ -42,13 +42,32 @@ public final class SchemaInfo extends Derived {
private final Map<String, RankProfileInfo> rankProfiles;
private final Summaries summaries;
+ private final IndexMode indexMode;
- public SchemaInfo(Schema schema, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
+ public enum IndexMode {INDEX, STREAMING, STORE_ONLY}
+
+ public SchemaInfo(Schema schema, String indexMode, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
+ this(schema, indexMode(indexMode), rankProfileRegistry, summaries);
+ }
+ public SchemaInfo(Schema schema, IndexMode indexMode, RankProfileRegistry rankProfileRegistry, Summaries summaries) {
this.schema = schema;
this.rankProfiles = Collections.unmodifiableMap(toRankProfiles(rankProfileRegistry.rankProfilesOf(schema)));
this.summaries = summaries;
+ this.indexMode = indexMode;
}
+ private static IndexMode indexMode(String mode) {
+ if (mode == null) return IndexMode.INDEX;
+ return switch (mode) {
+ case "index" -> IndexMode.INDEX;
+ case "streaming" -> IndexMode.STREAMING;
+ case "store-only" -> IndexMode.STORE_ONLY;
+ default -> IndexMode.STORE_ONLY;
+ };
+ }
+
+ public IndexMode getIndexMode() { return indexMode; }
+
public String name() { return schema.getName(); }
@Override