private static void deleteIndexKey(final OIndex<?> index, final ODocument iRecord, final Object origValue, List<IndexChange> changes) { final OIndexDefinition indexDefinition = index.getDefinition(); if (origValue instanceof Collection) { for (final Object valueItem : (Collection<?>) origValue) { if (!indexDefinition.isNullValuesIgnored() || valueItem != null) addRemove(changes, index, valueItem, iRecord); } } else if (!indexDefinition.isNullValuesIgnored() || origValue != null) { addRemove(changes, index, origValue, iRecord); } }
private void fetchNullKeys() { if (index.getDefinition().isNullValuesIgnored()) { nullKeyIterator = Collections.emptyIterator(); return; } Object nullIter = index.get(null); if (nullIter instanceof OIdentifiable) { nullKeyIterator = Collections.singleton(nullIter).iterator(); } else if (nullIter instanceof Iterable) { nullKeyIterator = ((Iterable) nullIter).iterator(); } else if (nullIter instanceof Iterator) { nullKeyIterator = (Iterator) nullIter; } else { nullKeyIterator = Collections.emptyIterator(); } }
private static void addIndexEntry(ODocument document, OIdentifiable rid, OIndex<?> index, List<IndexChange> changes) { final OIndexDefinition indexDefinition = index.getDefinition(); final Object key = indexDefinition.getDocumentValueToIndex(document); if (key instanceof Collection) { for (final Object keyItem : (Collection<?>) key) if (!indexDefinition.isNullValuesIgnored() || keyItem != null) addPut(changes, index, keyItem, rid); } else if (!indexDefinition.isNullValuesIgnored() || key != null) addPut(changes, index, key, rid); }
public Set<OIndex<?>> getClassInvolvedIndexes(final String className, Collection<String> fields) { final OMultiKey multiKey = new OMultiKey(fields); final Map<OMultiKey, Set<OIndex<?>>> propertyIndex = getIndexOnProperty(className); if (propertyIndex == null || !propertyIndex.containsKey(multiKey)) return Collections.emptySet(); final Set<OIndex<?>> rawResult = propertyIndex.get(multiKey); final Set<OIndex<?>> transactionalResult = new HashSet<>(rawResult.size()); for (final OIndex<?> index : rawResult) { //ignore indexes that ignore null values on partial match if (fields.size() == index.getDefinition().getFields().size() || !index.getDefinition().isNullValuesIgnored()) { transactionalResult.add(preProcessBeforeReturn(getDatabase(), index)); } } return transactionalResult; }
private static void processIndexUpdateFieldAssignment(OIndex<?> index, ODocument iRecord, final Object origValue, final Object newValue, List<IndexChange> changes) { final OIndexDefinition indexDefinition = index.getDefinition(); if ((origValue instanceof Collection) && (newValue instanceof Collection)) { final Set<Object> valuesToRemove = new HashSet<>((Collection<?>) origValue); final Set<Object> valuesToAdd = new HashSet<>((Collection<?>) newValue); valuesToRemove.removeAll((Collection<?>) newValue); valuesToAdd.removeAll((Collection<?>) origValue); for (final Object valueToRemove : valuesToRemove) { if (!indexDefinition.isNullValuesIgnored() || valueToRemove != null) { addRemove(changes, index, valueToRemove, iRecord); } } for (final Object valueToAdd : valuesToAdd) { if (!indexDefinition.isNullValuesIgnored() || valueToAdd != null) { addPut(changes, index, valueToAdd, iRecord); } } } else { deleteIndexKey(index, iRecord, origValue, changes); if (newValue instanceof Collection) { for (final Object newValueItem : (Collection<?>) newValue) { addPut(changes, index, newValueItem, iRecord.getIdentity()); } } else if (!indexDefinition.isNullValuesIgnored() || newValue != null) { addPut(changes, index, newValue, iRecord.getIdentity()); } } }
private void fetchNullKeyEntries(OIndex<Object> index) { if (index.getDefinition().isNullValuesIgnored()) { return;
if (searchResult.containsNullValues && indexDefinition.isNullValuesIgnored()) { continue;
.isIndexSigns(classIndex.getDefinition().isNullValuesIgnored()) .matchRequiredSigns(type, annotation.ignoreNullValues()); if (!correct) {
.isIndexSigns(classIndex.getDefinition().isNullValuesIgnored()) .matchRequiredSigns(type, annotation.ignoreNullValues()); if (!correct) {
if (searchResult.containsNullValues && indexDefinition.isNullValuesIgnored()) { continue;
OGlobalConfiguration.INDEX_IGNORE_NULL_VALUES_DEFAULT.setValue(indexDefinition.isNullValuesIgnored()); final OIndex index = indexManager .createIndex(indexName, indexType, indexDefinition, clusterIdsToIndex, null, metadata, indexAlgorithm);
cursors.add(OIndexChangesWrapper.wrap(index, cursor, indexRebuildVersion)); if (index.getMetadata() != null && !index.getDefinition().isNullValuesIgnored()) { Object nullValue = index.get(null); if (nullValue != null) {
if (fieldValue != null || !indexDefinition.isNullValuesIgnored()) { try { populateIndex(doc, fieldValue);
final int keySize = determineKeySize(indexDefinition); final OType[] keyTypes = indexDefinition != null ? indexDefinition.getTypes() : null; final boolean nullValuesSupport = indexDefinition != null && !indexDefinition.isNullValuesIgnored(); final byte serializerId;
final int keySize = determineKeySize(indexDefinition); final OType[] keyTypes = indexDefinition != null ? indexDefinition.getTypes() : null; final boolean nullValuesSupport = indexDefinition != null && !indexDefinition.isNullValuesIgnored();