Search in sources :

Example 76 with OIndex

use of com.orientechnologies.orient.core.index.OIndex in project orientdb by orientechnologies.

the class IndexManagerTest method testGetInvolvedIndexesPropertiesMorThanNeeded.

@Test(dependsOnMethods = { "createCompositeIndexTestWithListener", "createCompositeIndexTestWithoutListener", "testCreateOnePropertyIndexTest" })
public void testGetInvolvedIndexesPropertiesMorThanNeeded() {
    final OIndexManager indexManager = database.getMetadata().getIndexManager();
    final Set<OIndex<?>> result = indexManager.getClassInvolvedIndexes(CLASS_NAME, Arrays.asList("fTwo", "fOne", "fThee", "fFour"));
    assertEquals(result.size(), 0);
}
Also used : OIndexManager(com.orientechnologies.orient.core.index.OIndexManager) OIndex(com.orientechnologies.orient.core.index.OIndex) Test(org.testng.annotations.Test)

Example 77 with OIndex

use of com.orientechnologies.orient.core.index.OIndex in project orientdb by orientechnologies.

the class IndexCrashRestoreMultiValueIT method compareIndexes.

private void compareIndexes() {
    baseDocumentTx.activateOnCurrentThread();
    OIndexCursor cursor = baseDocumentTx.getMetadata().getIndexManager().getIndex("mi").cursor();
    long lastTs = 0;
    long minLostTs = Long.MAX_VALUE;
    long restoredRecords = 0;
    Map.Entry<Object, OIdentifiable> entry = cursor.nextEntry();
    while (entry != null) {
        baseDocumentTx.activateOnCurrentThread();
        Integer key = (Integer) entry.getKey();
        OIdentifiable identifiable = entry.getValue();
        ODocument doc = identifiable.getRecord();
        long ts = doc.<Long>field("ts");
        if (ts > lastTs)
            lastTs = ts;
        entry = cursor.nextEntry();
        testDocumentTx.activateOnCurrentThread();
        OIndex testIndex = testDocumentTx.getMetadata().getIndexManager().getIndex("mi");
        Set<OIdentifiable> result = (Set<OIdentifiable>) testIndex.get(key);
        if (result == null || result.size() < 10) {
            if (minLostTs > ts)
                minLostTs = ts;
        } else {
            boolean cnt = true;
            for (int i = 0; i < 10; i++) {
                if (!result.contains(new ORecordId("#0:" + i))) {
                    cnt = false;
                    break;
                }
            }
            if (!cnt) {
                if (minLostTs > ts)
                    minLostTs = ts;
            } else {
                restoredRecords++;
            }
        }
    }
    baseDocumentTx.activateOnCurrentThread();
    System.out.println("Restored entries : " + restoredRecords + " out of : " + baseDocumentTx.getMetadata().getIndexManager().getIndex("mi").getSize() + " minLostTs:: " + minLostTs);
    long maxInterval = minLostTs == Long.MAX_VALUE ? 0 : lastTs - minLostTs;
    System.out.println("Lost records max interval (ms) : " + maxInterval);
    assertThat(maxInterval).isLessThan(2000);
}
Also used : Set(java.util.Set) OIndex(com.orientechnologies.orient.core.index.OIndex) OIndexCursor(com.orientechnologies.orient.core.index.OIndexCursor) OIdentifiable(com.orientechnologies.orient.core.db.record.OIdentifiable) ORecordId(com.orientechnologies.orient.core.id.ORecordId) AtomicLong(java.util.concurrent.atomic.AtomicLong) Map(java.util.Map) ODocument(com.orientechnologies.orient.core.record.impl.ODocument)

Example 78 with OIndex

use of com.orientechnologies.orient.core.index.OIndex in project orientdb by orientechnologies.

the class IndexCrashRestoreSingleValueIT method compareIndexes.

private void compareIndexes() {
    ODatabaseRecordThreadLocal.INSTANCE.set(baseDocumentTx);
    OIndexCursor cursor = baseDocumentTx.getMetadata().getIndexManager().getIndex("mi").cursor();
    long lastTs = 0;
    long minLostTs = Long.MAX_VALUE;
    long restoredRecords = 0;
    Map.Entry<Object, OIdentifiable> entry = cursor.nextEntry();
    while (entry != null) {
        ODatabaseRecordThreadLocal.INSTANCE.set(baseDocumentTx);
        Integer key = (Integer) entry.getKey();
        OIdentifiable identifiable = entry.getValue();
        ODocument doc = identifiable.getRecord();
        long ts = doc.<Long>field("ts");
        if (ts > lastTs)
            lastTs = ts;
        entry = cursor.nextEntry();
        ODatabaseRecordThreadLocal.INSTANCE.set(testDocumentTx);
        OIndex testIndex = testDocumentTx.getMetadata().getIndexManager().getIndex("mi");
        Set<OIdentifiable> result = (Set<OIdentifiable>) testIndex.get(key);
        if (result == null || result.isEmpty()) {
            if (minLostTs > ts)
                minLostTs = ts;
        } else
            restoredRecords++;
    }
    ODatabaseRecordThreadLocal.INSTANCE.set(baseDocumentTx);
    System.out.println("Restored entries : " + restoredRecords + " out of : " + baseDocumentTx.getMetadata().getIndexManager().getIndex("mi").getSize());
    long maxInterval = minLostTs == Long.MAX_VALUE ? 0 : lastTs - minLostTs;
    System.out.println("Lost records max interval (ms) : " + maxInterval);
    assertThat(maxInterval).isLessThan(2000);
}
Also used : Set(java.util.Set) OIndex(com.orientechnologies.orient.core.index.OIndex) AtomicLong(java.util.concurrent.atomic.AtomicLong) OIndexCursor(com.orientechnologies.orient.core.index.OIndexCursor) Map(java.util.Map) OIdentifiable(com.orientechnologies.orient.core.db.record.OIdentifiable) ODocument(com.orientechnologies.orient.core.record.impl.ODocument)

Example 79 with OIndex

use of com.orientechnologies.orient.core.index.OIndex in project orientdb by orientechnologies.

the class PropertyIndexTest method testGetIndexes.

@Test(dependsOnMethods = "createAdditionalSchemas")
public void testGetIndexes() {
    final OSchema schema = database.getMetadata().getSchema();
    final OClass oClass = schema.getClass("PropertyIndexTestClass");
    final OProperty propOne = oClass.getProperty("prop1");
    final Collection<OIndex<?>> indexes = propOne.getIndexes();
    Assert.assertEquals(indexes.size(), 1);
    Assert.assertNotNull(containsIndex(indexes, "PropertyIndexTestClass.prop1"));
}
Also used : OSchema(com.orientechnologies.orient.core.metadata.schema.OSchema) OProperty(com.orientechnologies.orient.core.metadata.schema.OProperty) OIndex(com.orientechnologies.orient.core.index.OIndex) OClass(com.orientechnologies.orient.core.metadata.schema.OClass)

Example 80 with OIndex

use of com.orientechnologies.orient.core.index.OIndex in project orientdb by orientechnologies.

the class PropertyIndexTest method testCreateUniqueIndex.

@Test
public void testCreateUniqueIndex() {
    final OSchema schema = database.getMetadata().getSchema();
    final OClass oClass = schema.getClass("PropertyIndexTestClass");
    final OProperty propOne = oClass.getProperty("prop1");
    propOne.createIndex(OClass.INDEX_TYPE.UNIQUE, new ODocument().field("ignoreNullValues", true));
    final Collection<OIndex<?>> indexes = propOne.getIndexes();
    OIndexDefinition indexDefinition = null;
    for (final OIndex<?> index : indexes) {
        if (index.getName().equals("PropertyIndexTestClass.prop1")) {
            indexDefinition = index.getDefinition();
            break;
        }
    }
    Assert.assertNotNull(indexDefinition);
    Assert.assertEquals(indexDefinition.getParamCount(), 1);
    Assert.assertEquals(indexDefinition.getFields().size(), 1);
    Assert.assertTrue(indexDefinition.getFields().contains("prop1"));
    Assert.assertEquals(indexDefinition.getTypes().length, 1);
    Assert.assertEquals(indexDefinition.getTypes()[0], OType.STRING);
    schema.save();
}
Also used : OSchema(com.orientechnologies.orient.core.metadata.schema.OSchema) OProperty(com.orientechnologies.orient.core.metadata.schema.OProperty) OIndexDefinition(com.orientechnologies.orient.core.index.OIndexDefinition) OIndex(com.orientechnologies.orient.core.index.OIndex) OClass(com.orientechnologies.orient.core.metadata.schema.OClass) ODocument(com.orientechnologies.orient.core.record.impl.ODocument)

Aggregations

OIndex (com.orientechnologies.orient.core.index.OIndex)98 ODocument (com.orientechnologies.orient.core.record.impl.ODocument)54 Test (org.testng.annotations.Test)50 OIndexDefinition (com.orientechnologies.orient.core.index.OIndexDefinition)26 OClass (com.orientechnologies.orient.core.metadata.schema.OClass)20 OIndexManager (com.orientechnologies.orient.core.index.OIndexManager)18 OCompositeIndexDefinition (com.orientechnologies.orient.core.index.OCompositeIndexDefinition)16 OSchema (com.orientechnologies.orient.core.metadata.schema.OSchema)16 Test (org.junit.Test)14 OIdentifiable (com.orientechnologies.orient.core.db.record.OIdentifiable)12 Collection (java.util.Collection)11 OPropertyIndexDefinition (com.orientechnologies.orient.core.index.OPropertyIndexDefinition)9 OPropertyMapIndexDefinition (com.orientechnologies.orient.core.index.OPropertyMapIndexDefinition)8 OProperty (com.orientechnologies.orient.core.metadata.schema.OProperty)8 HashSet (java.util.HashSet)6 OConfigurationException (com.orientechnologies.orient.core.exception.OConfigurationException)5 OIndexManagerProxy (com.orientechnologies.orient.core.index.OIndexManagerProxy)5 OIndexUnique (com.orientechnologies.orient.core.index.OIndexUnique)5 Map (java.util.Map)4 AtomicLong (java.util.concurrent.atomic.AtomicLong)4