aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahooinc.com>2022-06-07 08:36:38 +0000
committergjoranv <gv@verizonmedia.com>2022-06-08 11:45:30 +0200
commita3836826938bd0414a611c79beadeedd644c6fb0 (patch)
tree48d7875df9ab0b4ce2c03b702737bdbf27948181
parentcb830cc2153ecc488eb532784e115e0ba7e37d26 (diff)
add fieldsets after inheriting
* bad design of DocumentType class (in both Java and C++) causes silent failures when this is done in the wrong order.
-rw-r--r--config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedTypes.java2
-rw-r--r--document/src/vespa/document/repo/documenttyperepo.cpp14
2 files changed, 8 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedTypes.java b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedTypes.java
index 9f1203ffc9f..fd493a90249 100644
--- a/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedTypes.java
+++ b/config-model/src/main/java/com/yahoo/schema/parser/ConvertParsedTypes.java
@@ -170,10 +170,10 @@ public class ConvertParsedTypes {
for (var fieldset : schema.getFieldSets()) {
fieldSets.put(fieldset.name(), fieldset.getFieldNames());
}
- docToFill.addFieldSets(fieldSets);
for (String inherit : doc.getInherited()) {
docToFill.inherit(findDocFromSchemas(inherit));
}
+ docToFill.addFieldSets(fieldSets);
}
}
diff --git a/document/src/vespa/document/repo/documenttyperepo.cpp b/document/src/vespa/document/repo/documenttyperepo.cpp
index 488dfea2fd7..c9473c90934 100644
--- a/document/src/vespa/document/repo/documenttyperepo.cpp
+++ b/document/src/vespa/document/repo/documenttyperepo.cpp
@@ -819,13 +819,6 @@ private:
for (const auto & importD : docT.importedfield) {
doc_type->add_imported_field_name(importD.name);
}
- for (const auto & entry : docT.fieldsets) {
- DocumentType::FieldSet::Fields fields;
- for (const auto& f : entry.second.fields) {
- fields.insert(f);
- }
- doc_type->addFieldSet(entry.first, fields);
- }
for (const auto & inheritD : docT.inherits) {
const DataType *dt = _made_types[inheritD.idx];
const DocumentType * parent = dynamic_cast<const DocumentType *>(dt);
@@ -837,6 +830,13 @@ private:
doc_type->inherit(*parent);
}
}
+ for (const auto & entry : docT.fieldsets) {
+ DocumentType::FieldSet::Fields fields;
+ for (const auto& f : entry.second.fields) {
+ fields.insert(f);
+ }
+ doc_type->addFieldSet(entry.first, fields);
+ }
}
void fillAnnotationTypes(DocTypeInProgress & dtInP) {