aboutsummaryrefslogtreecommitdiffstats
path: root/document/src
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-01-09 10:20:42 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-01-09 13:05:01 +0000
commit5f321f1d1df8da72187a711f9cdc36481dc25cae (patch)
tree5378915b89a25ead8cea4c7678357ec66916b38d /document/src
parenta9c77576da201d3da009e8f86800d23070284a41 (diff)
Brief implementation skeleton for bool field type.
Diffstat (limited to 'document/src')
-rw-r--r--document/src/vespa/document/datatype/datatype.cpp4
-rw-r--r--document/src/vespa/document/datatype/datatype.h4
-rw-r--r--document/src/vespa/document/datatype/primitivedatatype.cpp23
-rw-r--r--document/src/vespa/document/fieldvalue/CMakeLists.txt1
-rw-r--r--document/src/vespa/document/fieldvalue/boolfieldvalue.cpp60
-rw-r--r--document/src/vespa/document/fieldvalue/boolfieldvalue.h37
-rw-r--r--document/src/vespa/document/fieldvalue/document.cpp1
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvalues.h29
-rw-r--r--document/src/vespa/document/fieldvalue/fieldvaluevisitor.h3
-rw-r--r--document/src/vespa/document/fieldvalue/numericfieldvalue.hpp3
-rw-r--r--document/src/vespa/document/fieldvalue/predicatefieldvalue.h3
-rw-r--r--document/src/vespa/document/serialization/vespadocumentdeserializer.cpp17
-rw-r--r--document/src/vespa/document/serialization/vespadocumentdeserializer.h2
-rw-r--r--document/src/vespa/document/serialization/vespadocumentserializer.cpp6
-rw-r--r--document/src/vespa/document/serialization/vespadocumentserializer.h8
-rw-r--r--document/src/vespa/document/util/identifiableid.h2
16 files changed, 163 insertions, 40 deletions
diff --git a/document/src/vespa/document/datatype/datatype.cpp b/document/src/vespa/document/datatype/datatype.cpp
index 8d2721a4d9b..8c17ca4e383 100644
--- a/document/src/vespa/document/datatype/datatype.cpp
+++ b/document/src/vespa/document/datatype/datatype.cpp
@@ -21,6 +21,7 @@ NumericDataType INT_OBJ(DataType::T_INT);
NumericDataType LONG_OBJ(DataType::T_LONG);
NumericDataType FLOAT_OBJ(DataType::T_FLOAT);
NumericDataType DOUBLE_OBJ(DataType::T_DOUBLE);
+NumericDataType BOOL_OBJ(DataType::T_BOOL);
PrimitiveDataType STRING_OBJ(DataType::T_STRING);
PrimitiveDataType RAW_OBJ(DataType::T_RAW);
DocumentType DOCUMENT_OBJ("document");
@@ -37,6 +38,7 @@ const DataType *const DataType::INT(&INT_OBJ);
const DataType *const DataType::LONG(&LONG_OBJ);
const DataType *const DataType::FLOAT(&FLOAT_OBJ);
const DataType *const DataType::DOUBLE(&DOUBLE_OBJ);
+const DataType *const DataType::BOOL(&BOOL_OBJ);
const DataType *const DataType::STRING(&STRING_OBJ);
const DataType *const DataType::RAW(&RAW_OBJ);
const DocumentType *const DataType::DOCUMENT(&DOCUMENT_OBJ);
@@ -71,6 +73,7 @@ DataType2FieldValueId::DataType2FieldValueId()
_type2FieldValueId[DataType::T_LONG] = LongFieldValue::classId;
_type2FieldValueId[DataType::T_FLOAT] = FloatFieldValue::classId;
_type2FieldValueId[DataType::T_DOUBLE] = DoubleFieldValue::classId;
+ _type2FieldValueId[DataType::T_BOOL] = BoolFieldValue::classId;
_type2FieldValueId[DataType::T_STRING] = StringFieldValue::classId;
_type2FieldValueId[DataType::T_RAW] = RawFieldValue::classId;
_type2FieldValueId[DataType::T_URI] = StringFieldValue::classId;
@@ -103,6 +106,7 @@ DataType::getDefaultDataTypes()
types.push_back(LONG);
types.push_back(FLOAT);
types.push_back(DOUBLE);
+ types.push_back(BOOL);
types.push_back(STRING);
types.push_back(RAW);
types.push_back(DOCUMENT);
diff --git a/document/src/vespa/document/datatype/datatype.h b/document/src/vespa/document/datatype/datatype.h
index 4dd5d6aae64..723e7c69ed6 100644
--- a/document/src/vespa/document/datatype/datatype.h
+++ b/document/src/vespa/document/datatype/datatype.h
@@ -66,6 +66,7 @@ public:
T_RAW = 3,
T_LONG = 4,
T_DOUBLE = 5,
+ T_BOOL = 6,
T_DOCUMENT = 8, // Type of super document type Document.0 that all documents inherit.
// T_TIMESTAMP = 9, // Not used anymore, Id should probably not be reused
T_URI = 10,
@@ -88,6 +89,7 @@ public:
static const DataType *const LONG;
static const DataType *const FLOAT;
static const DataType *const DOUBLE;
+ static const DataType *const BOOL;
static const DataType *const STRING;
static const DataType *const RAW;
static const DocumentType *const DOCUMENT;
@@ -108,7 +110,7 @@ public:
* Create a field value using this datatype.
*/
virtual std::unique_ptr<FieldValue> createFieldValue() const = 0;
- virtual DataType* clone() const override = 0;
+ DataType* clone() const override = 0;
/**
* Whether another datatype is a supertype of this one. Document types may
diff --git a/document/src/vespa/document/datatype/primitivedatatype.cpp b/document/src/vespa/document/datatype/primitivedatatype.cpp
index e48e4464acf..7ec47f52d9c 100644
--- a/document/src/vespa/document/datatype/primitivedatatype.cpp
+++ b/document/src/vespa/document/datatype/primitivedatatype.cpp
@@ -23,6 +23,7 @@ namespace {
const char *Double = "Double";
const char *Uri = "Uri";
const char *Byte = "Byte";
+ const char *Bool = "Bool";
const char *Predicate = "Predicate";
const char *Tensor = "Tensor";
@@ -37,6 +38,7 @@ namespace {
case DataType::T_DOUBLE: return Double;
case DataType::T_URI: return Uri;
case DataType::T_BYTE: return Byte;
+ case DataType::T_BOOL: return Bool;
case DataType::T_PREDICATE: return Predicate;
case DataType::T_TENSOR: return Tensor;
default:
@@ -56,16 +58,17 @@ FieldValue::UP
PrimitiveDataType::createFieldValue() const
{
switch (getId()) {
- case T_INT: return FieldValue::UP(new IntFieldValue);
- case T_SHORT: return FieldValue::UP(new ShortFieldValue);
- case T_FLOAT: return FieldValue::UP(new FloatFieldValue);
- case T_URI: return FieldValue::UP(new StringFieldValue);
- case T_STRING: return FieldValue::UP(new StringFieldValue);
- case T_RAW: return FieldValue::UP(new RawFieldValue);
- case T_LONG: return FieldValue::UP(new LongFieldValue);
- case T_DOUBLE: return FieldValue::UP(new DoubleFieldValue);
- case T_BYTE: return FieldValue::UP(new ByteFieldValue);
- case T_PREDICATE: return FieldValue::UP(new PredicateFieldValue);
+ case T_INT: return std::make_unique<IntFieldValue>();
+ case T_SHORT: return std::make_unique<ShortFieldValue>();
+ case T_FLOAT: return std::make_unique<FloatFieldValue>();
+ case T_URI: return std::make_unique<StringFieldValue>();
+ case T_STRING: return std::make_unique<StringFieldValue>();
+ case T_RAW: return std::make_unique<RawFieldValue>();
+ case T_LONG: return std::make_unique<LongFieldValue>();
+ case T_DOUBLE: return std::make_unique<DoubleFieldValue>();
+ case T_BOOL: return std::make_unique<BoolFieldValue>();
+ case T_BYTE: return std::make_unique<ByteFieldValue>();
+ case T_PREDICATE: return std::make_unique<PredicateFieldValue>();
case T_TENSOR: return std::make_unique<TensorFieldValue>();
}
LOG_ABORT("getId() returned value out of range");
diff --git a/document/src/vespa/document/fieldvalue/CMakeLists.txt b/document/src/vespa/document/fieldvalue/CMakeLists.txt
index 0b161cff08a..dcef1bc8305 100644
--- a/document/src/vespa/document/fieldvalue/CMakeLists.txt
+++ b/document/src/vespa/document/fieldvalue/CMakeLists.txt
@@ -3,6 +3,7 @@ vespa_add_library(document_fieldvalues OBJECT
SOURCES
annotationreferencefieldvalue.cpp
arrayfieldvalue.cpp
+ boolfieldvalue.cpp
bytefieldvalue.cpp
collectionfieldvalue.cpp
document.cpp
diff --git a/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp b/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp
new file mode 100644
index 00000000000..8ee2556d751
--- /dev/null
+++ b/document/src/vespa/document/fieldvalue/boolfieldvalue.cpp
@@ -0,0 +1,60 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "boolfieldvalue.h"
+#include <vespa/document/datatype/datatype.h>
+#include <vespa/vespalib/util/xmlstream.h>
+#include <ostream>
+
+using namespace vespalib::xml;
+
+namespace document {
+
+IMPLEMENT_IDENTIFIABLE(BoolFieldValue, FieldValue);
+
+BoolFieldValue::BoolFieldValue(bool value)
+ : _value(value), _altered(false) {
+}
+
+BoolFieldValue::~BoolFieldValue() = default;
+
+FieldValue &BoolFieldValue::assign(const FieldValue &rhs) {
+ if (rhs.inherits(BoolFieldValue::classId)) {
+ operator=(static_cast<const BoolFieldValue &>(rhs));
+ return *this;
+ } else {
+ _altered = true;
+ return FieldValue::assign(rhs);
+ }
+}
+
+int BoolFieldValue::compare(const FieldValue&rhs) const {
+ int diff = FieldValue::compare(rhs);
+ if (diff != 0) return diff;
+ const BoolFieldValue &o = static_cast<const BoolFieldValue &>(rhs);
+ return (_value == o._value) ? 0 : _value ? 1 : -1;
+}
+
+void BoolFieldValue::printXml(XmlOutputStream& out) const {
+ out << XmlContent(getAsString());
+}
+
+void BoolFieldValue::print(std::ostream& out, bool, const std::string&) const {
+ out << (_value ? "true" : "false") << "\n";
+}
+
+const DataType *
+BoolFieldValue::getDataType() const {
+ return DataType::BOOL;
+}
+
+bool
+BoolFieldValue::hasChanged() const {
+ return _altered;
+}
+
+FieldValue *
+BoolFieldValue::clone() const {
+ return new BoolFieldValue(*this);
+}
+
+} // namespace document
diff --git a/document/src/vespa/document/fieldvalue/boolfieldvalue.h b/document/src/vespa/document/fieldvalue/boolfieldvalue.h
new file mode 100644
index 00000000000..d81fa25848d
--- /dev/null
+++ b/document/src/vespa/document/fieldvalue/boolfieldvalue.h
@@ -0,0 +1,37 @@
+// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "fieldvalue.h"
+
+namespace document {
+
+class BoolFieldValue : public FieldValue {
+ bool _value;
+ bool _altered;
+
+public:
+ BoolFieldValue(bool value=false);
+ ~BoolFieldValue() override;
+
+ void accept(FieldValueVisitor &visitor) override { visitor.visit(*this); }
+ void accept(ConstFieldValueVisitor &visitor) const override { visitor.visit(*this); }
+
+ FieldValue *clone() const override;
+ int compare(const FieldValue &rhs) const override;
+
+ void printXml(XmlOutputStream &out) const override;
+ void print(std::ostream &out, bool verbose, const std::string &indent) const override;
+
+ const DataType *getDataType() const override;
+ bool hasChanged() const override;
+
+ bool getValue() const { return _value; }
+ void setValue(bool v) { _value = v; }
+
+ FieldValue &assign(const FieldValue &rhs) override;
+
+ DECLARE_IDENTIFIABLE(BoolFieldValue);
+};
+
+}
diff --git a/document/src/vespa/document/fieldvalue/document.cpp b/document/src/vespa/document/fieldvalue/document.cpp
index 7acc7e97be9..d915d9fd66d 100644
--- a/document/src/vespa/document/fieldvalue/document.cpp
+++ b/document/src/vespa/document/fieldvalue/document.cpp
@@ -10,6 +10,7 @@
#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/document/util/serializableexceptions.h>
#include <vespa/document/base/exceptions.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/document/util/bytebuffer.h>
#include <vespa/vespalib/util/xmlstream.h>
#include <sstream>
diff --git a/document/src/vespa/document/fieldvalue/fieldvalues.h b/document/src/vespa/document/fieldvalue/fieldvalues.h
index 6d438bcd0d5..cc665cee95c 100644
--- a/document/src/vespa/document/fieldvalue/fieldvalues.h
+++ b/document/src/vespa/document/fieldvalue/fieldvalues.h
@@ -2,18 +2,19 @@
#pragma once
-#include <vespa/document/fieldvalue/arrayfieldvalue.h>
-#include <vespa/document/fieldvalue/bytefieldvalue.h>
-#include <vespa/document/fieldvalue/document.h>
-#include <vespa/document/fieldvalue/doublefieldvalue.h>
-#include <vespa/document/fieldvalue/floatfieldvalue.h>
-#include <vespa/document/fieldvalue/intfieldvalue.h>
-#include <vespa/document/fieldvalue/longfieldvalue.h>
-#include <vespa/document/fieldvalue/mapfieldvalue.h>
-#include <vespa/document/fieldvalue/predicatefieldvalue.h>
-#include <vespa/document/fieldvalue/rawfieldvalue.h>
-#include <vespa/document/fieldvalue/shortfieldvalue.h>
-#include <vespa/document/fieldvalue/stringfieldvalue.h>
-#include <vespa/document/fieldvalue/weightedsetfieldvalue.h>
-#include <vespa/document/fieldvalue/tensorfieldvalue.h>
+#include "arrayfieldvalue.h"
+#include "boolfieldvalue.h"
+#include "bytefieldvalue.h"
+#include "document.h"
+#include "doublefieldvalue.h"
+#include "floatfieldvalue.h"
+#include "intfieldvalue.h"
+#include "longfieldvalue.h"
+#include "mapfieldvalue.h"
+#include "predicatefieldvalue.h"
+#include "rawfieldvalue.h"
+#include "shortfieldvalue.h"
+#include "stringfieldvalue.h"
+#include "weightedsetfieldvalue.h"
+#include "tensorfieldvalue.h"
diff --git a/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h b/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
index ef07dd25212..778b1c77023 100644
--- a/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
+++ b/document/src/vespa/document/fieldvalue/fieldvaluevisitor.h
@@ -5,6 +5,7 @@
namespace document {
class AnnotationReferenceFieldValue;
class ArrayFieldValue;
+class BoolFieldValue;
class ByteFieldValue;
class Document;
class DoubleFieldValue;
@@ -26,6 +27,7 @@ struct FieldValueVisitor {
virtual void visit(AnnotationReferenceFieldValue &value) = 0;
virtual void visit(ArrayFieldValue &value) = 0;
+ virtual void visit(BoolFieldValue &value) = 0;
virtual void visit(ByteFieldValue &value) = 0;
virtual void visit(Document &value) = 0;
virtual void visit(DoubleFieldValue &value) = 0;
@@ -48,6 +50,7 @@ struct ConstFieldValueVisitor {
virtual void visit(const AnnotationReferenceFieldValue &value) = 0;
virtual void visit(const ArrayFieldValue &value) = 0;
+ virtual void visit(const BoolFieldValue &value) = 0;
virtual void visit(const ByteFieldValue &value) = 0;
virtual void visit(const Document &value) = 0;
virtual void visit(const DoubleFieldValue &value) = 0;
diff --git a/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp b/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
index 90c93e7a944..91873f021d1 100644
--- a/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
+++ b/document/src/vespa/document/fieldvalue/numericfieldvalue.hpp
@@ -27,8 +27,7 @@ NumericFieldValue<Number>::assign(const FieldValue& value)
_value = static_cast<Number>(value.getAsLong());
} else if (value.getClass().id() == IDENTIFIABLE_CLASSID(FloatFieldValue)) {
_value = static_cast<Number>(value.getAsFloat());
- } else if (value.getClass().id() == IDENTIFIABLE_CLASSID(DoubleFieldValue))
- {
+ } else if (value.getClass().id() == IDENTIFIABLE_CLASSID(DoubleFieldValue)) {
_value = static_cast<Number>(value.getAsDouble());
} else {
return FieldValue::assign(value);
diff --git a/document/src/vespa/document/fieldvalue/predicatefieldvalue.h b/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
index d5c58e862f5..e0df3a38353 100644
--- a/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
+++ b/document/src/vespa/document/fieldvalue/predicatefieldvalue.h
@@ -40,5 +40,4 @@ public:
DECLARE_IDENTIFIABLE(PredicateFieldValue);
};
-} // namespace document
-
+}
diff --git a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
index 4f30851ac4c..89172b0bc46 100644
--- a/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
+++ b/document/src/vespa/document/serialization/vespadocumentdeserializer.cpp
@@ -5,6 +5,7 @@
#include <vespa/document/annotation/spantree.h>
#include <vespa/document/fieldvalue/annotationreferencefieldvalue.h>
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
+#include <vespa/document/fieldvalue/boolfieldvalue.h>
#include <vespa/document/fieldvalue/bytefieldvalue.h>
#include <vespa/document/fieldvalue/document.h>
#include <vespa/document/fieldvalue/doublefieldvalue.h>
@@ -190,12 +191,12 @@ void VespaDocumentDeserializer::read(MapFieldValue &value) {
}
namespace {
-template <typename T> struct ValueType { typedef typename T::Number Type; };
-template <> struct ValueType<ShortFieldValue> { typedef uint16_t Type; };
-template <> struct ValueType<IntFieldValue> { typedef uint32_t Type; };
-template <> struct ValueType<LongFieldValue> { typedef uint64_t Type; };
-template <>
-struct ValueType<RawFieldValue> { typedef vespalib::string Type; };
+template <typename T> struct ValueType { using Type = typename T::Number; };
+template <> struct ValueType<BoolFieldValue> { using Type = bool; };
+template <> struct ValueType<ShortFieldValue> { using Type = uint16_t; };
+template <> struct ValueType<IntFieldValue> { using Type = uint32_t; };
+template <> struct ValueType<LongFieldValue> { using Type = uint64_t; };
+template <> struct ValueType<RawFieldValue> { using Type = vespalib::string; };
template <typename T>
void readFieldValue(nbostream &input, T &value) {
@@ -214,6 +215,10 @@ stringref readAttributeString(Input &input) {
}
} // namespace
+void VespaDocumentDeserializer::read(BoolFieldValue &value) {
+ readFieldValue(_stream, value);
+}
+
void VespaDocumentDeserializer::read(ByteFieldValue &value) {
readFieldValue(_stream, value);
}
diff --git a/document/src/vespa/document/serialization/vespadocumentdeserializer.h b/document/src/vespa/document/serialization/vespadocumentdeserializer.h
index 64346428cdd..e6b490e1075 100644
--- a/document/src/vespa/document/serialization/vespadocumentdeserializer.h
+++ b/document/src/vespa/document/serialization/vespadocumentdeserializer.h
@@ -21,6 +21,7 @@ class VespaDocumentDeserializer : private FieldValueVisitor {
void visit(AnnotationReferenceFieldValue &value) override { read(value); }
void visit(ArrayFieldValue &value) override { read(value); }
+ void visit(BoolFieldValue &value) override { read(value); }
void visit(ByteFieldValue &value) override { read(value); }
void visit(Document &value) override { read(value); }
void visit(DoubleFieldValue &value) override { read(value); }
@@ -63,6 +64,7 @@ public:
void read(AnnotationReferenceFieldValue &value);
void read(ArrayFieldValue &value);
void read(MapFieldValue &value);
+ void read(BoolFieldValue &value);
void read(ByteFieldValue &value);
void read(DoubleFieldValue &value);
void read(FloatFieldValue &value);
diff --git a/document/src/vespa/document/serialization/vespadocumentserializer.cpp b/document/src/vespa/document/serialization/vespadocumentserializer.cpp
index ae03bcc0d3c..3519f38baab 100644
--- a/document/src/vespa/document/serialization/vespadocumentserializer.cpp
+++ b/document/src/vespa/document/serialization/vespadocumentserializer.cpp
@@ -6,6 +6,7 @@
#include "util.h"
#include <vespa/document/fieldvalue/annotationreferencefieldvalue.h>
#include <vespa/document/fieldvalue/arrayfieldvalue.h>
+#include <vespa/document/fieldvalue/boolfieldvalue.h>
#include <vespa/document/fieldvalue/bytefieldvalue.h>
#include <vespa/document/fieldvalue/document.h>
#include <vespa/document/fieldvalue/doublefieldvalue.h>
@@ -24,6 +25,7 @@
#include <vespa/document/update/updates.h>
#include <vespa/document/update/fieldpathupdates.h>
#include <vespa/document/util/bytebuffer.h>
+#include <vespa/document/fieldset/fieldsets.h>
#include <vespa/vespalib/data/slime/binary_format.h>
#include <vespa/vespalib/objects/nbostream.h>
#include <vespa/vespalib/data/databuffer.h>
@@ -185,6 +187,10 @@ void VespaDocumentSerializer::write(const MapFieldValue &value) {
}
}
+void VespaDocumentSerializer::write(const BoolFieldValue &value) {
+ _stream << value.getValue();
+}
+
void VespaDocumentSerializer::write(const ByteFieldValue &value) {
_stream << value.getValue();
}
diff --git a/document/src/vespa/document/serialization/vespadocumentserializer.h b/document/src/vespa/document/serialization/vespadocumentserializer.h
index 818759d35b5..fde073c13b3 100644
--- a/document/src/vespa/document/serialization/vespadocumentserializer.h
+++ b/document/src/vespa/document/serialization/vespadocumentserializer.h
@@ -4,12 +4,10 @@
#include <vespa/document/fieldvalue/fieldvaluevisitor.h>
#include <vespa/document/fieldvalue/fieldvaluewriter.h>
-#include <vespa/document/fieldset/fieldsets.h>
+#include <vespa/document/fieldset/fieldset.h>
#include <vespa/document/update/updatevisitor.h>
-namespace vespalib {
- class nbostream;
-}
+namespace vespalib { class nbostream; }
namespace document {
@@ -40,6 +38,7 @@ public:
void write(const AnnotationReferenceFieldValue &value);
void write(const ArrayFieldValue &value);
void write(const MapFieldValue &map);
+ void write(const BoolFieldValue &value);
void write(const ByteFieldValue &value);
void write(const DoubleFieldValue &val);
void write(const FloatFieldValue &value);
@@ -90,6 +89,7 @@ private:
void visit(const AnnotationReferenceFieldValue &value) override { write(value); }
void visit(const ArrayFieldValue &value) override { write(value); }
+ void visit(const BoolFieldValue &value) override { write(value); }
void visit(const ByteFieldValue &value) override { write(value); }
void visit(const Document &value) override { write(value, COMPLETE); }
void visit(const DoubleFieldValue &value) override { write(value); }
diff --git a/document/src/vespa/document/util/identifiableid.h b/document/src/vespa/document/util/identifiableid.h
index c52888e8491..84cfc506bcc 100644
--- a/document/src/vespa/document/util/identifiableid.h
+++ b/document/src/vespa/document/util/identifiableid.h
@@ -19,7 +19,7 @@
#define CID_StringFieldValue DOCUMENT_CID(15)
#define CID_RawFieldValue DOCUMENT_CID(16)
//Gone with vespa 6 #define CID_ContentFieldValue DOCUMENT_CID(17)
-//Long gone #define CID_ContentMetaFieldValue DOCUMENT_CID(18)
+#define CID_BoolFieldValue DOCUMENT_CID(18)
#define CID_ArrayFieldValue DOCUMENT_CID(19)
#define CID_WeightedSetFieldValue DOCUMENT_CID(20)
#define CID_FieldMapValue DOCUMENT_CID(21)