From ad6735fe3ae23e215a4e2a34d9a1648d56cd40f6 Mon Sep 17 00:00:00 2001
From: lvca <l.garulli@gmail.com>
Date: Thu, 10 Jul 2014 02:16:53 +0200
Subject: [PATCH] [orientdb] Upgraded OrientDB from 1.0.1 -> 1.7.5-SNAPSHOT

---
 orientdb/pom.xml                              |  2 +-
 .../com/yahoo/ycsb/db/OrientDBClient.java     | 40 ++++++++++---------
 2 files changed, 23 insertions(+), 19 deletions(-)

diff --git a/orientdb/pom.xml b/orientdb/pom.xml
index 563004ba..3c376dc6 100644
--- a/orientdb/pom.xml
+++ b/orientdb/pom.xml
@@ -28,7 +28,7 @@
 		<dependency>
 			<groupId>com.orientechnologies</groupId>
 			<artifactId>orientdb-core</artifactId>
-			<version>1.0.1</version>
+			<version>1.7.5-SNAPSHOT</version>
 		</dependency>
 	</dependencies>
 </project>
diff --git a/orientdb/src/main/java/com/yahoo/ycsb/db/OrientDBClient.java b/orientdb/src/main/java/com/yahoo/ycsb/db/OrientDBClient.java
index 490851a7..badfc146 100644
--- a/orientdb/src/main/java/com/yahoo/ycsb/db/OrientDBClient.java
+++ b/orientdb/src/main/java/com/yahoo/ycsb/db/OrientDBClient.java
@@ -7,16 +7,11 @@
 
 package com.yahoo.ycsb.db;
 
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.Vector;
-
 import com.orientechnologies.orient.core.config.OGlobalConfiguration;
 import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
+import com.orientechnologies.orient.core.db.record.OIdentifiable;
 import com.orientechnologies.orient.core.dictionary.ODictionary;
+import com.orientechnologies.orient.core.index.OIndexCursor;
 import com.orientechnologies.orient.core.intent.OIntentMassiveInsert;
 import com.orientechnologies.orient.core.record.ORecordInternal;
 import com.orientechnologies.orient.core.record.impl.ODocument;
@@ -25,23 +20,29 @@ import com.yahoo.ycsb.DB;
 import com.yahoo.ycsb.DBException;
 import com.yahoo.ycsb.StringByteIterator;
 
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Vector;
+
 /**
  * OrientDB client for YCSB framework.
- * 
+ *
  * Properties to set:
- * 
+ *
  * orientdb.url=local:C:/temp/databases or remote:localhost:2424 <br>
  * orientdb.database=ycsb <br>
  * orientdb.user=admin <br>
  * orientdb.password=admin <br>
- * 
+ *
  * @author Luca Garulli
- * 
+ *
  */
 public class OrientDBClient extends DB {
 
-  private ODatabaseDocumentTx             db;
   private static final String             CLASS = "usertable";
+  private ODatabaseDocumentTx             db;
   private ODictionary<ORecordInternal<?>> dictionary;
 
   /**
@@ -51,7 +52,7 @@ public class OrientDBClient extends DB {
     // initialize OrientDB driver
     Properties props = getProperties();
 
-    String url = props.getProperty("orientdb.url", "local:C:/temp/databases/ycsb");
+    String url = props.getProperty("orientdb.url", "plocal:C:/temp/databases/ycsb");
     String user = props.getProperty("orientdb.user", "admin");
     String password = props.getProperty("orientdb.password", "admin");
     Boolean newdb = Boolean.parseBoolean(props.getProperty("orientdb.newdb", "false"));
@@ -206,13 +207,16 @@ public class OrientDBClient extends DB {
    */
   public int scan(String table, String startkey, int recordcount, Set<String> fields, Vector<HashMap<String, ByteIterator>> result) {
     try {
-      final Collection<ODocument> documents = dictionary.getIndex().getEntriesMajor(startkey, true, recordcount);
-      for (ODocument document : documents) {
-        final HashMap<String, ByteIterator> entry = new HashMap<String, ByteIterator>(fields.size());
-        result.add(entry);
+      final OIndexCursor entries = dictionary.getIndex().iterateEntriesMajor(startkey, true, true);
+      while (entries.hasNext()) {
+        final Entry<Object, OIdentifiable> entry = entries.nextEntry();
+        final ODocument document = entry.getValue().getRecord();
+
+        final HashMap<String, ByteIterator> map = new HashMap<String, ByteIterator>();
+        result.add(map);
 
         for (String field : fields)
-          entry.put(field, new StringByteIterator((String) document.field(field)));
+          map.put(field, new StringByteIterator((String) document.field(field)));
       }
 
       return 0;
-- 
GitLab