I just managed to make the problem reproducible:
package com.axxelia;
import com.orientechnologies.orient.core.config.OGlobalConfiguration;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
public class OrientDBTest {
public static void main(String [] args) {
OGlobalConfiguration.CACHE_LEVEL1_ENABLED.setValue(false);
OObjectDatabaseTx db = new OObjectDatabaseTx("memory:test");
if(!db.exists()) {
db.create();
System.out.println("db.create()");
}
db.getEntityManager().registerEntityClasses("com.axxelia.domain");
try {
TestCase4.testCase(db);
}
finally {
db.close();
}
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.axxelia;
import com.axxelia.domain.*;
import com.orientechnologies.orient.core.record.impl.ODocument;
import com.orientechnologies.orient.core.sql.OCommandSQL;
import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
import java.util.List;
public class TestCase4 {
public static void testCase(OObjectDatabaseTx db) {
ItemWorkStep idt1 = new ItemWorkStep();
idt1.setStatus(Status.NONE);
db.save(idt1);
ItemWorkStep idt2 = new ItemWorkStep();
idt2.setStatus(Status.STARTED);
db.save(idt2);
WorkOrderWorkStep idt3 = new WorkOrderWorkStep();
idt3.setStatus(Status.NONE);
db.save(idt3);
WorkOrderWorkStep idt4 = new WorkOrderWorkStep();
idt4.setStatus(Status.STARTED);
db.save(idt4);
List<WorkOrderWorkStep> subs;
List<ODocument> counts;
counts = db.query(new OSQLSynchQuery("SELECT count(*) FROM ItemWorkStep
WHERE status IN ['NONE', 'STARTED']"));
assert ((Long) (counts.iterator().next().field("count"))) == 4;
counts = db.query(new OSQLSynchQuery("SELECT count(*) FROM
WorkOrderWorkStep WHERE status IN ['NONE', 'STARTED']"));
assert ((Long) (counts.iterator().next().field("count"))) == 2;
db.command(new OCommandSQL("CREATE PROPERTY AdaptiveTask.status
STRING")).execute();
counts = db.query(new OSQLSynchQuery("SELECT count(*) FROM
WorkOrderWorkStep WHERE status IN ['NONE', 'STARTED']"));
assert ((Long) (counts.iterator().next().field("count"))) == 2;
/**
* create the index
*/
db.command(new OCommandSQL("CREATE INDEX AdaptiveTask.status ON
AdaptiveTask (status) NOTUNIQUE")).execute();
/**
* huh!! those two tests fail. if you remove the index above, they will
succeed!!!
*/
counts = db.query(new OSQLSynchQuery("SELECT count(*) FROM
WorkOrderWorkStep WHERE status='NONE'"));
assert ((Long) (counts.iterator().next().field("count"))) == 1;
counts = db.query(new OSQLSynchQuery("SELECT count(*) FROM
WorkOrderWorkStep WHERE status in ['NONE']"));
assert ((Long) (counts.iterator().next().field("count"))) == 1;
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.axxelia.domain;
public class AdaptiveTask {
private Status status;
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.axxelia.domain;
public class ItemWorkStep extends AdaptiveTask {}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.axxelia.domain;
public class WorkOrderWorkStep extends ItemWorkStep {}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.