use of com.orientechnologies.orient.core.db.record.ridbag.ORidBag in project orientdb by orientechnologies.
the class OConsoleDatabaseApp method displayRawRecord.
@ConsoleCommand(description = "Display a record as raw bytes", onlineHelp = "Console-Command-Display-Raw-Record")
public void displayRawRecord(@ConsoleParameter(name = "rid", description = "The record id to display") final String iRecordId) throws IOException {
checkForDatabase();
ORecordId rid;
if (iRecordId.indexOf(':') > -1)
rid = new ORecordId(iRecordId);
else {
OIdentifiable rec = setCurrentRecord(Integer.parseInt(iRecordId));
if (rec != null)
rid = (ORecordId) rec.getIdentity();
else
return;
}
ORawBuffer record;
ORecordId id = new ORecordId(rid);
if (!(currentDatabase.getStorage() instanceof OLocalPaginatedStorage)) {
record = currentDatabase.getStorage().readRecord(rid, null, false, false, null).getResult();
if (record != null) {
String content;
if (Integer.parseInt(properties.get("maxBinaryDisplay")) < record.buffer.length)
content = new String(Arrays.copyOf(record.buffer, Integer.parseInt(properties.get("maxBinaryDisplay"))));
else
content = new String(record.buffer);
out.println("\nRaw record content. The size is " + record.buffer.length + " bytes, while settings force to print first " + content.length() + " bytes:\n\n" + content);
}
} else {
final OLocalPaginatedStorage storage = (OLocalPaginatedStorage) currentDatabase.getStorage();
final OPaginatedCluster cluster = (OPaginatedCluster) storage.getClusterById(id.getClusterId());
if (cluster == null) {
message("\n cluster with id %i does not exist", id.getClusterId());
return;
}
message("\n\nLOW LEVEL CLUSTER INFO");
final OPaginatedCluster.RECORD_STATUS status = cluster.getRecordStatus(id.getClusterPosition());
message("\n status: %s", status);
final OPaginatedClusterDebug debugInfo = cluster.readDebug(id.getClusterPosition());
message("\n cluster fieldId: %d", debugInfo.fileId);
message("\n cluster name: %s", cluster.getName());
message("\n in cluster position: %d", debugInfo.clusterPosition);
message("\n empty: %b", debugInfo.empty);
message("\n contentSize: %d", debugInfo.contentSize);
message("\n n-pages: %d", debugInfo.pages.size());
message("\n\n +----------PAGE_ID---------------+------IN_PAGE_POSITION----------+---------IN_PAGE_SIZE-----------+----PAGE_CONTENT---->> ");
for (OClusterPageDebug page : debugInfo.pages) {
message("\n |%30d ", page.pageIndex);
message(" |%30d ", page.inPagePosition);
message(" |%30d ", page.inPageSize);
message(" |%s", OBase64Utils.encodeBytes(page.content));
}
record = cluster.readRecord(id.getClusterPosition(), false);
}
if (record == null)
throw new OSystemException("The record has been deleted");
if ("ORecordSerializerBinary".equals(currentDatabase.getSerializer().toString())) {
byte[] buff = record.getBuffer();
ORecordSerializerBinaryDebug debugger = new ORecordSerializerBinaryDebug();
ORecordSerializationDebug deserializeDebug = debugger.deserializeDebug(buff, currentDatabase);
message("\n\nRECORD CONTENT INFO");
message("\n class name: %s", deserializeDebug.className);
message("\n fail on Reading: %b", deserializeDebug.readingFailure);
message("\n fail position: %d", deserializeDebug.failPosition);
if (deserializeDebug.readingException != null) {
StringWriter writer = new StringWriter();
deserializeDebug.readingException.printStackTrace(new PrintWriter(writer));
message("\n Exception On Reading: %s", writer.getBuffer().toString());
}
message("\n number of properties : %d", deserializeDebug.properties.size());
message("\n\n PROPERTIES");
for (ORecordSerializationDebugProperty prop : deserializeDebug.properties) {
message("\n property name: %s", prop.name);
message("\n property type: %s", prop.type.name());
message("\n property globalId: %d", prop.globalId);
message("\n fail on reading: %b", prop.faildToRead);
if (prop.faildToRead) {
message("\n failed on reading position: %b", prop.failPosition);
StringWriter writer = new StringWriter();
prop.readingException.printStackTrace(new PrintWriter(writer));
message("\n Exception on reading: %s", writer.getBuffer().toString());
} else {
if (prop.value instanceof ORidBag) {
message("\n property value: ORidBug ");
((ORidBag) prop.value).debugPrint(System.out);
} else
message("\n property value: %s", prop.value != null ? prop.value.toString() : "null");
}
message("\n");
}
}
}
use of com.orientechnologies.orient.core.db.record.ridbag.ORidBag in project orientdb by orientechnologies.
the class HttpGraphTest method updateWithEdges.
@Test
public void updateWithEdges() throws IOException {
Assert.assertEquals(post("command/" + getDatabaseName() + "/sql/").payload("create class Foo extends V", CONTENT.TEXT).getResponse().getStatusLine().getStatusCode(), 200);
Assert.assertEquals(post("command/" + getDatabaseName() + "/sql/").payload("create class FooEdge extends E", CONTENT.TEXT).getResponse().getStatusLine().getStatusCode(), 200);
String script = "begin;";
script += "let $v1 = create vertex Foo set name = 'foo1';";
script += "let $v2 = create vertex Foo set name = 'foo2';";
script += "create edge FooEdge from $v1 to $v2;";
script += "commit;";
script += "return $v1;";
String scriptPayload = "{ \"operations\" : [{ \"type\" : \"script\", \"language\" : \"SQL\", \"script\" : \"%s\"}]}";
HttpResponse response = post("batch/" + getDatabaseName() + "/sql/").payload(String.format(scriptPayload, script), CONTENT.JSON).getResponse();
Assert.assertEquals(response.getStatusLine().getStatusCode(), 200);
final ODocument result = new ODocument().fromJSON(response.getEntity().getContent());
final List<ODocument> res = result.field("result");
Assert.assertEquals(res.size(), 1);
ODocument created = res.get(0);
Assert.assertEquals(created.field("name"), "foo1");
Assert.assertEquals(created.getVersion(), 1);
ORidBag coll = created.field("out_FooEdge");
Assert.assertEquals(coll.size(), 1);
created.field("name", "fooUpdated");
response = put("document/" + getDatabaseName() + "/" + created.getIdentity().toString().substring(1)).payload(created.toJSON(), CONTENT.JSON).exec().getResponse();
Assert.assertEquals(response.getStatusLine().getStatusCode(), 200);
final ODocument updated = new ODocument().fromJSON(response.getEntity().getContent());
Assert.assertEquals(updated.field("name"), "fooUpdated");
Assert.assertEquals(updated.getVersion(), 2);
coll = updated.field("out_FooEdge");
Assert.assertEquals(coll.size(), 1);
}
use of com.orientechnologies.orient.core.db.record.ridbag.ORidBag in project orientdb by orientechnologies.
the class OSBTreeRidBagTest method testRidBagDelete.
public void testRidBagDelete() {
if (database.getStorage().getType().equals(OEngineRemote.NAME) || database.getStorage().getType().equals(OEngineMemory.NAME))
return;
float reuseTrigger = OGlobalConfiguration.SBTREEBOSAI_FREE_SPACE_REUSE_TRIGGER.getValueAsFloat();
OGlobalConfiguration.SBTREEBOSAI_FREE_SPACE_REUSE_TRIGGER.setValue(Float.MIN_VALUE);
ODocument realDoc = new ODocument();
ORidBag realDocRidBag = new ORidBag();
realDoc.field("ridBag", realDocRidBag);
for (int i = 0; i < 10; i++) {
ODocument docToAdd = new ODocument();
realDocRidBag.add(docToAdd);
}
assertEmbedded(realDocRidBag.isEmbedded());
realDoc.save();
final int clusterId = database.addCluster("ridBagDeleteTest");
ODocument testDocument = crateTestDeleteDoc(realDoc);
database.freeze();
database.release();
final String directory = database.getStorage().getConfiguration().getDirectory();
File testRidBagFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterId + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
long testRidBagSize = testRidBagFile.length();
for (int i = 0; i < 100; i++) {
testDocument.reload();
testDocument.delete();
testDocument = crateTestDeleteDoc(realDoc);
}
database.freeze();
database.release();
OGlobalConfiguration.SBTREEBOSAI_FREE_SPACE_REUSE_TRIGGER.setValue(reuseTrigger);
testRidBagFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterId + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
Assert.assertEquals(testRidBagFile.length(), testRidBagSize);
realDoc = database.load(realDoc.getIdentity(), "*:*", true);
ORidBag ridBag = realDoc.field("ridBag");
Assert.assertEquals(ridBag.size(), 10);
}
use of com.orientechnologies.orient.core.db.record.ridbag.ORidBag in project orientdb by orientechnologies.
the class OSBTreeRidBagTest method testRidBagClusterDistribution.
public void testRidBagClusterDistribution() {
if (database.getStorage().getType().equals(OEngineRemote.NAME) || database.getStorage().getType().equals(OEngineMemory.NAME))
return;
final int clusterIdOne = database.addCluster("clusterOne");
final int clusterIdTwo = database.addCluster("clusterTwo");
final int clusterIdThree = database.addCluster("clusterThree");
final int clusterIdFour = database.addCluster("clusterFour");
ODocument docClusterOne = new ODocument();
ORidBag ridBagClusterOne = new ORidBag();
docClusterOne.field("ridBag", ridBagClusterOne);
docClusterOne.save("clusterOne");
ODocument docClusterTwo = new ODocument();
ODocument embeddedDocTwo = new ODocument();
final ORidBag ridBagClusterTwo = new ORidBag();
embeddedDocTwo.field("ridBag", ridBagClusterTwo);
List<ODocument> elist = new ArrayList<ODocument>();
elist.add(embeddedDocTwo);
docClusterTwo.field("elist", elist, OType.EMBEDDEDLIST);
docClusterTwo.save("clusterTwo");
ODocument docClusterThree = new ODocument();
ODocument embeddedDocThree = new ODocument();
final ORidBag ridBagClusterThree = new ORidBag();
embeddedDocThree.field("ridBag", ridBagClusterThree);
Set<ODocument> eset = new HashSet<ODocument>();
eset.add(embeddedDocThree);
docClusterThree.field("eset", eset, OType.EMBEDDEDSET);
docClusterThree.save("clusterThree");
ODocument docClusterFour = new ODocument();
ODocument embeddedDocFour = new ODocument();
final ORidBag ridBagClusterFour = new ORidBag();
embeddedDocFour.field("ridBag", ridBagClusterFour);
Map<String, ODocument> emap = new HashMap<String, ODocument>();
emap.put("l", embeddedDocFour);
docClusterFour.field("emap", emap, OType.EMBEDDEDMAP);
docClusterFour.save("clusterFour");
final String directory = database.getStorage().getConfiguration().getDirectory();
final File ridBagOneFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterIdOne + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
Assert.assertTrue(ridBagOneFile.exists());
final File ridBagTwoFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterIdTwo + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
Assert.assertTrue(ridBagTwoFile.exists());
final File ridBagThreeFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterIdThree + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
Assert.assertTrue(ridBagThreeFile.exists());
final File ridBagFourFile = new File(directory, OSBTreeCollectionManagerShared.FILE_NAME_PREFIX + clusterIdFour + OSBTreeCollectionManagerShared.DEFAULT_EXTENSION);
Assert.assertTrue(ridBagFourFile.exists());
}
use of com.orientechnologies.orient.core.db.record.ridbag.ORidBag in project orientdb by orientechnologies.
the class LinkBagIndexTest method testIndexRidBagInTx.
public void testIndexRidBagInTx() throws Exception {
final ODocument docOne = new ODocument();
docOne.save();
final ODocument docTwo = new ODocument();
docTwo.save();
try {
database.begin();
final ODocument document = new ODocument("RidBagIndexTestClass");
final ORidBag ridBag = new ORidBag();
ridBag.add(docOne);
ridBag.add(docTwo);
document.field("ridBag", ridBag);
document.save();
database.commit();
} catch (Exception e) {
database.rollback();
throw e;
}
List<ODocument> result = database.command(new OCommandSQL("select key, rid from index:ridBagIndex")).execute();
Assert.assertNotNull(result);
Assert.assertEquals(result.size(), 2);
for (ODocument d : result) {
Assert.assertTrue(d.containsField("key"));
Assert.assertTrue(d.containsField("rid"));
if (!d.field("key").equals(docOne.getIdentity()) && !d.field("key").equals(docTwo.getIdentity())) {
Assert.fail("Unknown key found: " + d.field("key"));
}
}
}
Aggregations