package com.orientechnologies.orient.core.sql; import static org.testng.AssertJUnit.assertEquals; import java.util.List; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; import com.orientechnologies.orient.core.metadata.schema.OClass; import com.orientechnologies.orient.core.metadata.schema.OClass.INDEX_TYPE; import com.orientechnologies.orient.core.metadata.schema.OProperty; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; public class OChainIndexFetchTest { private ODatabaseDocument db; @BeforeMethod public void before() { db = new ODatabaseDocumentTx("memory:" + OChainIndexFetchTest.class.getSimpleName()); db.create(); } @Test public void testFetchChaninedIndex() { OClass baseClass = db.getMetadata().getSchema().createClass("BaseClass"); OProperty propr = baseClass.createProperty("ref", OType.LINK); OClass linkedClass = db.getMetadata().getSchema().createClass("LinkedClass"); OProperty id = linkedClass.createProperty("id", OType.STRING); id.createIndex(INDEX_TYPE.UNIQUE); propr.setLinkedClass(linkedClass); propr.createIndex(INDEX_TYPE.NOTUNIQUE); ODocument doc = new ODocument(linkedClass); doc.field("id", "referred"); db.save(doc); ODocument doc1 = new ODocument(baseClass); doc1.field("ref", doc); db.save(doc1); List<ODocument> res = db.query(new OSQLSynchQuery(" select from BaseClass where ref.id ='wrong_referred' ")); assertEquals(0, res.size()); } @AfterMethod public void after() { db.drop(); } }