LUCENE-4055: enforce that omitNorms implies normType == null

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene4055@1341475 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Robert Muir 2012-05-22 13:46:20 +00:00
parent 6fef20d76a
commit c510b3b2b9
3 changed files with 7 additions and 4 deletions

View File

@ -94,7 +94,6 @@ public final class FieldInfo {
}
private boolean checkConsistency() {
// nocommit more checks here
if (!indexed) {
assert !storeTermVector;
assert !storePayloads;
@ -103,6 +102,9 @@ public final class FieldInfo {
assert indexOptions == IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
} else {
assert indexOptions != null;
if (omitNorms) {
assert normType == null;
}
}
// Cannot store payloads unless positions are indexed:
@ -126,6 +128,7 @@ public final class FieldInfo {
}
if (this.omitNorms != omitNorms) {
this.omitNorms = true; // if one require omitNorms at least once, it remains off for life
this.normType = null;
}
if (this.indexOptions != indexOptions) {
// downgrade
@ -199,7 +202,7 @@ public final class FieldInfo {
* @return true if this field actually has any norms.
*/
public boolean hasNorms() {
return indexed && !omitNorms && normType != null;
return normType != null;
}
/**

View File

@ -278,7 +278,7 @@ public class FieldInfos implements Iterable<FieldInfo> {
if (docValues != null) {
fi.setDocValuesType(docValues);
}
if (normType != null) {
if (!fi.omitsNorms() && normType != null) {
fi.setNormValueType(normType);
}
}

View File

@ -239,7 +239,7 @@ final class SegmentMerger {
} else {
assert promoter != TypePromoter.getIdentityPromoter();
if (norms) {
if (fi.getNormType() != promoter.type()) {
if (fi.getNormType() != promoter.type() && !fi.omitsNorms()) {
// reset the type if we got promoted
fi.setNormValueType(promoter.type());
}