use of com.orientechnologies.orient.core.metadata.schema.OSchema in project orientdb by orientechnologies.
the class OMatchStatement method estimateRootEntries.
private Map<String, Long> estimateRootEntries(Map<String, String> aliasClasses, Map<String, OWhereClause> aliasFilters, OCommandContext ctx) {
Set<String> allAliases = new LinkedHashSet<String>();
allAliases.addAll(aliasClasses.keySet());
allAliases.addAll(aliasFilters.keySet());
OSchema schema = getDatabase().getMetadata().getSchema();
Map<String, Long> result = new LinkedHashMap<String, Long>();
for (String alias : allAliases) {
if (this.pattern.aliasToNode.get(alias).isOptionalNode()) {
continue;
}
String className = aliasClasses.get(alias);
if (className == null) {
continue;
}
if (!schema.existsClass(className)) {
throw new OCommandExecutionException("class not defined: " + className);
}
OClass oClass = schema.getClass(className);
long upperBound;
OWhereClause filter = aliasFilters.get(alias);
if (filter != null) {
List<String> aliasesOnPattern = filter.baseExpression.getMatchPatternInvolvedAliases();
if (aliasesOnPattern != null && aliasesOnPattern.size() > 0) {
//skip root nodes that have a condition on $matched, because they have to be calculated as downstream
continue;
}
upperBound = filter.estimate(oClass, this.threshold, ctx);
} else {
upperBound = oClass.count();
}
result.put(alias, upperBound);
}
return result;
}
use of com.orientechnologies.orient.core.metadata.schema.OSchema in project orientdb by orientechnologies.
the class OCommandExecutorSQLTruncateCluster method execute.
/**
* Execute the command.
*/
public Object execute(final Map<Object, Object> iArgs) {
if (clusterName == null)
throw new OCommandExecutionException("Cannot execute the command because it has not been parsed yet");
final ODatabaseDocumentInternal database = getDatabase();
final int clusterId = database.getClusterIdByName(clusterName);
if (clusterId < 0) {
throw new ODatabaseException("Cluster with name " + clusterName + " does not exist");
}
final OSchema schema = database.getMetadata().getSchema();
final OClass clazz = schema.getClassByClusterId(clusterId);
if (clazz == null) {
final OStorage storage = database.getStorage();
final OCluster cluster = storage.getClusterById(clusterId);
if (cluster == null) {
throw new ODatabaseException("Cluster with name " + clusterName + " does not exist");
}
try {
storage.checkForClusterPermissions(cluster.getName());
cluster.truncate();
} catch (IOException ioe) {
throw OException.wrapException(new ODatabaseException("Error during truncation of cluster with name " + clusterName), ioe);
}
} else {
clazz.truncateCluster(clusterName);
}
return true;
}
use of com.orientechnologies.orient.core.metadata.schema.OSchema in project orientdb by orientechnologies.
the class ODocumentTest method testRemovingReadonlyField.
@Test
public void testRemovingReadonlyField() {
ODatabaseDocumentTx db = new ODatabaseDocumentTx("memory:" + ODocumentTest.class.getSimpleName());
db.create();
try {
OSchema schema = db.getMetadata().getSchema();
OClass classA = schema.createClass("TestRemovingField2");
classA.createProperty("name", OType.STRING);
OProperty property = classA.createProperty("property", OType.STRING);
property.setReadonly(true);
ODocument doc = new ODocument(classA);
doc.field("name", "My Name");
doc.field("property", "value1");
doc.save();
doc.field("name", "My Name 2");
doc.field("property", "value2");
// we decided undo everything
doc.undo();
// change something
doc.field("name", "My Name 3");
doc.save();
doc.field("name", "My Name 4");
doc.field("property", "value4");
// we decided undo readonly field
doc.undo("property");
doc.save();
} finally {
db.drop();
}
}
use of com.orientechnologies.orient.core.metadata.schema.OSchema in project orientdb by orientechnologies.
the class OCommandExecutorSQLSelectTest method beforeClass.
@BeforeClass
public void beforeClass() throws Exception {
db = new ODatabaseDocumentTx(DB_STORAGE + ":" + DB_NAME);
db.create();
getProfilerInstance().startRecording();
db.command(new OCommandSQL("CREATE class foo")).execute();
db.command(new OCommandSQL("CREATE property foo.name STRING")).execute();
db.command(new OCommandSQL("CREATE property foo.bar INTEGER")).execute();
db.command(new OCommandSQL("CREATE property foo.address EMBEDDED")).execute();
db.command(new OCommandSQL("CREATE property foo.comp STRING")).execute();
db.command(new OCommandSQL("CREATE property foo.osite INTEGER")).execute();
db.command(new OCommandSQL("CREATE index foo_name on foo (name) NOTUNIQUE")).execute();
db.command(new OCommandSQL("CREATE index foo_bar on foo (bar) NOTUNIQUE")).execute();
db.command(new OCommandSQL("CREATE index foo_comp_osite on foo (comp, osite) NOTUNIQUE")).execute();
db.command(new OCommandSQL("insert into foo (name, bar, address) values ('a', 1, {'street':'1st street', 'city':'NY', '@type':'d'})")).execute();
db.command(new OCommandSQL("insert into foo (name, bar) values ('b', 2)")).execute();
db.command(new OCommandSQL("insert into foo (name, bar) values ('c', 3)")).execute();
db.command(new OCommandSQL("insert into foo (comp, osite) values ('a', 1)")).execute();
db.command(new OCommandSQL("insert into foo (comp, osite) values ('b', 2)")).execute();
db.command(new OCommandSQL("CREATE class bar")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('a', 1)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('b', 2)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('c', 3)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('d', 4)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('e', 5)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('f', 1)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('g', 2)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('h', 3)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('i', 4)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('j', 5)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('k', 1)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('l', 2)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('m', 3)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('n', 4)")).execute();
db.command(new OCommandSQL("insert into bar (name, foo) values ('o', 5)")).execute();
db.command(new OCommandSQL("CREATE class ridsorttest clusters 1")).execute();
db.command(new OCommandSQL("CREATE property ridsorttest.name INTEGER")).execute();
db.command(new OCommandSQL("CREATE index ridsorttest_name on ridsorttest (name) NOTUNIQUE")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (1)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (5)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (3)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (4)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (1)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (8)")).execute();
db.command(new OCommandSQL("insert into ridsorttest (name) values (6)")).execute();
db.command(new OCommandSQL("CREATE class unwindtest")).execute();
db.command(new OCommandSQL("insert into unwindtest (name, coll) values ('foo', ['foo1', 'foo2'])")).execute();
db.command(new OCommandSQL("insert into unwindtest (name, coll) values ('bar', ['bar1', 'bar2'])")).execute();
db.command(new OCommandSQL("CREATE class unwindtest2")).execute();
db.command(new OCommandSQL("insert into unwindtest2 (name, coll) values ('foo', [])")).execute();
db.command(new OCommandSQL("CREATE class `edge`")).execute();
db.command(new OCommandSQL("CREATE class TestFromInSquare")).execute();
db.command(new OCommandSQL("insert into TestFromInSquare set tags = {' from ':'foo',' to ':'bar'}")).execute();
db.command(new OCommandSQL("CREATE class TestMultipleClusters")).execute();
db.command(new OCommandSQL("alter class TestMultipleClusters addcluster testmultipleclusters1 ")).execute();
db.command(new OCommandSQL("alter class TestMultipleClusters addcluster testmultipleclusters2 ")).execute();
db.command(new OCommandSQL("insert into cluster:testmultipleclusters set name = 'aaa'")).execute();
db.command(new OCommandSQL("insert into cluster:testmultipleclusters1 set name = 'foo'")).execute();
db.command(new OCommandSQL("insert into cluster:testmultipleclusters2 set name = 'bar'")).execute();
db.command(new OCommandSQL("CREATE class TestUrl")).execute();
db.command(new OCommandSQL("insert into TestUrl content { \"url\": \"http://www.google.com\" }")).execute();
db.command(new OCommandSQL("CREATE class TestParams")).execute();
db.command(new OCommandSQL("insert into TestParams set name = 'foo', surname ='foo', active = true")).execute();
db.command(new OCommandSQL("insert into TestParams set name = 'foo', surname ='bar', active = false")).execute();
db.command(new OCommandSQL("CREATE class TestParamsEmbedded")).execute();
db.command(new OCommandSQL("insert into TestParamsEmbedded set emb = { \n" + " \"count\":0,\n" + " \"testupdate\":\"1441258203385\"\n" + " }")).execute();
db.command(new OCommandSQL("insert into TestParamsEmbedded set emb = { \n" + " \"count\":1,\n" + " \"testupdate\":\"1441258203385\"\n" + " }")).execute();
db.command(new OCommandSQL("CREATE class TestBacktick")).execute();
db.command(new OCommandSQL("insert into TestBacktick set foo = 1, bar = 2, `foo-bar` = 10")).execute();
// /*** from issue #2743
OSchema schema = db.getMetadata().getSchema();
if (!schema.existsClass("alphabet")) {
schema.createClass("alphabet", 1, null);
}
ORecordIteratorClass<ODocument> iter = db.browseClass("alphabet");
while (iter.hasNext()) {
iter.next().delete();
}
// add 26 entries: { "letter": "A", "number": 0 }, ... { "letter": "Z", "number": 25 }
String rowModel = "{\"letter\": \"%s\", \"number\": %d}";
for (int i = 0; i < 26; ++i) {
String l = String.valueOf((char) ('A' + i));
String json = String.format(rowModel, l, i);
ODocument doc = db.newInstance("alphabet");
doc.fromJSON(json);
doc.save();
}
db.command(new OCommandSQL("create class OCommandExecutorSQLSelectTest_aggregations")).execute();
db.command(new OCommandSQL("insert into OCommandExecutorSQLSelectTest_aggregations set data = [{\"size\": 0}, {\"size\": 0}, {\"size\": 30}, {\"size\": 50}, {\"size\": 50}]")).execute();
initExpandSkipLimit(db);
initMassiveOrderSkipLimit(db);
initDatesSet(db);
initMatchesWithRegex(db);
initDistinctLimit(db);
initLinkListSequence(db);
initMaxLongNumber(db);
initFilterAndOrderByTest(db);
initComplexFilterInSquareBrackets(db);
initCollateOnLinked(db);
}
use of com.orientechnologies.orient.core.metadata.schema.OSchema in project orientdb by orientechnologies.
the class NestedInsertTest method testLinkedNested.
@Test
public void testLinkedNested() {
OSchema schm = db.getMetadata().getSchema();
OClass cl = schm.createClass("myClass");
OClass linked = schm.createClass("Linked");
cl.createProperty("some", OType.LINK, linked);
final ODocument res = db.command(new OCommandSQL("insert into myClass set some ={\"@type\":\"d\",\"@class\":\"Linked\",\"name\":\"a name\"} return @this")).execute();
final ODocument ln = res.field("some");
Assert.assertNotNull(ln);
Assert.assertTrue(ln.getIdentity().isPersistent());
Assert.assertEquals(ln.fields(), 1);
Assert.assertEquals(ln.field("name"), "a name");
}
Aggregations