Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
If someone configures _version_ using a LongPointField which is indexed="true" then VersionInfo.getMaxVersionFromIndex() will incorrectly assume...
// if indexed, then we have terms to get the max from if (versionField.indexed()) { LeafReader leafReader = SlowCompositeReaderWrapper.wrap(searcher.getIndexReader()); Terms versionTerms = leafReader.terms(versionFieldName); Long max = (versionTerms != null) ? LegacyNumericUtils.getMaxLong(versionTerms) : null;
...which will not work because Point based fields have no Terms.
potential work around: configuring _version_ to use indexed="false" docValues="true" should cause this branch to be skipped and the existing ValueSource/DocValues based fallback to be used.
We should either:
- figure out if an alternative option exists for determining the "max" value of a LongPointField, and if so use that if versionField.indexed() && versionField.getType().isPointField()
- change VersionInfo.getAndCheckVersionField() to check if the version field IsPointField() and if so error unless indexed="false" && docValues="true"
Attachments
Attachments
Issue Links
- is related to
-
SOLR-10872 _version_ returns exception when changed to point field
- Open
- relates to
-
SOLR-10807 Randomize PointFields in all tests unless explicit reason not to
- Closed