You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/04/17 22:08:49 UTC

svn commit: r766136 - in /incubator/cassandra/trunk: interface/ src/org/apache/cassandra/cli/ src/org/apache/cassandra/db/ src/org/apache/cassandra/service/ src/org/apache/cassandra/test/

Author: jbellis
Date: Fri Apr 17 20:08:49 2009
New Revision: 766136

URL: http://svn.apache.org/viewvc?rev=766136&view=rev
Log:
change column_t value to binary from string.  patch by johano; reviewed by jbellis for #29

Modified:
    incubator/cassandra/trunk/interface/cassandra.thrift
    incubator/cassandra/trunk/src/org/apache/cassandra/cli/CliClient.java
    incubator/cassandra/trunk/src/org/apache/cassandra/db/RowMutation.java
    incubator/cassandra/trunk/src/org/apache/cassandra/service/Cassandra.java
    incubator/cassandra/trunk/src/org/apache/cassandra/service/CassandraServer.java
    incubator/cassandra/trunk/src/org/apache/cassandra/service/column_t.java
    incubator/cassandra/trunk/src/org/apache/cassandra/test/DataImporter.java
    incubator/cassandra/trunk/src/org/apache/cassandra/test/StressTest.java

Modified: incubator/cassandra/trunk/interface/cassandra.thrift
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/interface/cassandra.thrift?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/interface/cassandra.thrift (original)
+++ incubator/cassandra/trunk/interface/cassandra.thrift Fri Apr 17 20:08:49 2009
@@ -11,7 +11,7 @@
 
 struct column_t {
    1: string                        columnName,
-   2: string                        value,
+   2: binary                        value,
    3: i64                           timestamp,
 }
 
@@ -57,7 +57,7 @@
   list<column_t> get_slice_by_names(string tablename,string key,string columnFamily, list<string> columnNames) throws (1:CassandraException e),
   column_t       get_column(string tablename,string key,string columnFamily_column) throws (1:CassandraException e),
   i32            get_column_count(string tablename,string key,string columnFamily_column) throws (1:CassandraException e),
-  async void     insert(string tablename,string key,string columnFamily_column, string cellData,i64 timestamp),
+  async void     insert(string tablename,string key,string columnFamily_column, binary cellData,i64 timestamp),
   async void     batch_insert(batch_mutation_t batchMutation),
   bool           batch_insert_blocking(batch_mutation_t batchMutation) throws (1:CassandraException e),
   bool           remove(string tablename,string key,string columnFamily_column, i64 timestamp, bool block),

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/cli/CliClient.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/cli/CliClient.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/cli/CliClient.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/cli/CliClient.java Fri Apr 17 20:08:49 2009
@@ -207,7 +207,7 @@
 
             // do the insert
             thriftClient_.insert(tableName, key, columnFamily + ":" + columnName,
-                                 value, System.currentTimeMillis());
+                                 value.getBytes(), System.currentTimeMillis());
 
             css_.out.println("Value inserted.");
         }

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/db/RowMutation.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/db/RowMutation.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/db/RowMutation.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/db/RowMutation.java Fri Apr 17 20:08:49 2009
@@ -286,7 +286,7 @@
             for (column_t columnData : list)
             {
                 rm.add(cfname + ":" + columnData.columnName,
-                       columnData.value.getBytes(), columnData.timestamp);
+                       columnData.value, columnData.timestamp);
 
             }
         }
@@ -310,7 +310,7 @@
                     for (column_t columnData : superColumnData.columns)
                     {
                         rm.add(key.toString() + ":" + superColumnData.name + ":" + columnData.columnName,
-                               columnData.value.getBytes(), columnData.timestamp);
+                               columnData.value, columnData.timestamp);
                     }
                 }
                 else

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/service/Cassandra.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/service/Cassandra.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/service/Cassandra.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/service/Cassandra.java Fri Apr 17 20:08:49 2009
@@ -30,7 +30,7 @@
 
     public int get_column_count(String tablename, String key, String columnFamily_column) throws CassandraException, TException;
 
-    public void insert(String tablename, String key, String columnFamily_column, String cellData, long timestamp) throws TException;
+    public void insert(String tablename, String key, String columnFamily_column, byte[] cellData, long timestamp) throws TException;
 
     public void batch_insert(batch_mutation_t batchMutation) throws TException;
 
@@ -244,12 +244,12 @@
       throw new TApplicationException(TApplicationException.MISSING_RESULT, "get_column_count failed: unknown result");
     }
 
-    public void insert(String tablename, String key, String columnFamily_column, String cellData, long timestamp) throws TException
+    public void insert(String tablename, String key, String columnFamily_column, byte[] cellData, long timestamp) throws TException
     {
       send_insert(tablename, key, columnFamily_column, cellData, timestamp);
     }
 
-    public void send_insert(String tablename, String key, String columnFamily_column, String cellData, long timestamp) throws TException
+    public void send_insert(String tablename, String key, String columnFamily_column, byte[] cellData, long timestamp) throws TException
     {
       oprot_.writeMessageBegin(new TMessage("insert", TMessageType.CALL, seqid_));
       insert_args args = new insert_args();
@@ -3858,7 +3858,7 @@
     public static final int KEY = -2;
     public String columnFamily_column;
     public static final int COLUMNFAMILY_COLUMN = -3;
-    public String cellData;
+    public byte[] cellData;
     public static final int CELLDATA = -4;
     public long timestamp;
     public static final int TIMESTAMP = -5;
@@ -3896,7 +3896,7 @@
       String tablename,
       String key,
       String columnFamily_column,
-      String cellData,
+      byte[] cellData,
       long timestamp)
     {
       this();
@@ -3930,7 +3930,8 @@
       }
       __isset.cellData = other.__isset.cellData;
       if (other.cellData != null) {
-        this.cellData = other.cellData;
+        this.cellData = new byte[other.cellData.length];
+        System.arraycopy(other.cellData, 0, cellData, 0, other.cellData.length);
       }
       __isset.timestamp = other.__isset.timestamp;
       this.timestamp = other.timestamp;
@@ -4007,11 +4008,11 @@
       this.__isset.columnFamily_column = value;
     }
 
-    public String getCellData() {
+    public byte[] getCellData() {
       return this.cellData;
     }
 
-    public void setCellData(String cellData) {
+    public void setCellData(byte[] cellData) {
       this.cellData = cellData;
       this.__isset.cellData = (cellData != null);
     }
@@ -4066,7 +4067,7 @@
         break;
 
       case CELLDATA:
-        setCellData((String)value);
+        setCellData((byte[])value);
         break;
 
       case TIMESTAMP:
@@ -4163,7 +4164,7 @@
       if (this_present_cellData || that_present_cellData) {
         if (!(this_present_cellData && that_present_cellData))
           return false;
-        if (!this.cellData.equals(that.cellData))
+        if (!java.util.Arrays.equals(this.cellData, that.cellData))
           return false;
       }
 
@@ -4221,7 +4222,7 @@
             break;
           case CELLDATA:
             if (field.type == TType.STRING) {
-              this.cellData = iprot.readString();
+              this.cellData = iprot.readBinary();
               this.__isset.cellData = true;
             } else { 
               TProtocolUtil.skip(iprot, field.type);
@@ -4269,7 +4270,7 @@
       }
       if (this.cellData != null) {
         oprot.writeFieldBegin(CELL_DATA_FIELD_DESC);
-        oprot.writeString(this.cellData);
+        oprot.writeBinary(this.cellData);
         oprot.writeFieldEnd();
       }
       oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
@@ -4298,7 +4299,16 @@
       first = false;
       if (!first) sb.append(", ");
       sb.append("cellData:");
-      sb.append(this.cellData);
+      if (cellData == null) { 
+        sb.append("null");
+      } else {
+        int __cellData_size = Math.min(this.cellData.length, 128);
+        for (int i = 0; i < __cellData_size; i++) {
+          if (i != 0) sb.append(" ");
+          sb.append(Integer.toHexString(this.cellData[i]).length() > 1 ? Integer.toHexString(this.cellData[i]).substring(Integer.toHexString(this.cellData[i]).length() - 2).toUpperCase() : "0" + Integer.toHexString(this.cellData[i]).toUpperCase());
+        }
+        if (this.cellData.length > 128) sb.append(" ...");
+      }
       first = false;
       if (!first) sb.append(", ");
       sb.append("timestamp:");

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/service/CassandraServer.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/service/CassandraServer.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/service/CassandraServer.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/service/CassandraServer.java Fri Apr 17 20:08:49 2009
@@ -129,7 +129,7 @@
             {
                 continue;
             }
-            column_t thrift_column = new column_t(column.name(), new String(column.value()), column.timestamp());
+            column_t thrift_column = new column_t(column.name(), column.value(), column.timestamp());
             thriftColumns.add(thrift_column);
         }
         return thriftColumns;
@@ -360,7 +360,7 @@
             {
                 return null;
             }
-            return new column_t(column.name(), new String(column.value()), column.timestamp());
+            return new column_t(column.name(), column.value(), column.timestamp());
 		}
 		catch (Exception ex)
 		{
@@ -436,13 +436,13 @@
 		return count;
 	}
 
-    public void insert(String tablename, String key, String columnFamily_column, String cellData, long timestamp)
+    public void insert(String tablename, String key, String columnFamily_column, byte[] cellData, long timestamp)
 	{
 		try
 		{
 			validateTable(tablename);
 			RowMutation rm = new RowMutation(tablename, key.trim());
-			rm.add(columnFamily_column, cellData.getBytes(), timestamp);
+			rm.add(columnFamily_column, cellData, timestamp);
 			StorageProxy.insert(rm);
 		}
 		catch (Exception e)

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/service/column_t.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/service/column_t.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/service/column_t.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/service/column_t.java Fri Apr 17 20:08:49 2009
@@ -26,7 +26,7 @@
 
   public String columnName;
   public static final int COLUMNNAME = 1;
-  public String value;
+  public byte[] value;
   public static final int VALUE = 2;
   public long timestamp;
   public static final int TIMESTAMP = 3;
@@ -56,7 +56,7 @@
 
   public column_t(
     String columnName,
-    String value,
+    byte[] value,
     long timestamp)
   {
     this();
@@ -78,7 +78,8 @@
     }
     __isset.value = other.__isset.value;
     if (other.value != null) {
-      this.value = other.value;
+      this.value = new byte[other.value.length];
+      System.arraycopy(other.value, 0, value, 0, other.value.length);
     }
     __isset.timestamp = other.__isset.timestamp;
     this.timestamp = other.timestamp;
@@ -111,11 +112,11 @@
     this.__isset.columnName = value;
   }
 
-  public String getValue() {
+  public byte[] getValue() {
     return this.value;
   }
 
-  public void setValue(String value) {
+  public void setValue(byte[] value) {
     this.value = value;
     this.__isset.value = (value != null);
   }
@@ -162,7 +163,7 @@
       break;
 
     case VALUE:
-      setValue((String)value);
+      setValue((byte[])value);
       break;
 
     case TIMESTAMP:
@@ -231,7 +232,7 @@
     if (this_present_value || that_present_value) {
       if (!(this_present_value && that_present_value))
         return false;
-      if (!this.value.equals(that.value))
+      if (!java.util.Arrays.equals(this.value, that.value))
         return false;
     }
 
@@ -273,7 +274,7 @@
           break;
         case VALUE:
           if (field.type == TType.STRING) {
-            this.value = iprot.readString();
+            this.value = iprot.readBinary();
             this.__isset.value = true;
           } else { 
             TProtocolUtil.skip(iprot, field.type);
@@ -311,7 +312,7 @@
     }
     if (this.value != null) {
       oprot.writeFieldBegin(VALUE_FIELD_DESC);
-      oprot.writeString(this.value);
+      oprot.writeBinary(this.value);
       oprot.writeFieldEnd();
     }
     oprot.writeFieldBegin(TIMESTAMP_FIELD_DESC);
@@ -332,7 +333,16 @@
     first = false;
     if (!first) sb.append(", ");
     sb.append("value:");
-    sb.append(this.value);
+    if (value == null) { 
+      sb.append("null");
+    } else {
+      int __value_size = Math.min(this.value.length, 128);
+      for (int i = 0; i < __value_size; i++) {
+        if (i != 0) sb.append(" ");
+        sb.append(Integer.toHexString(this.value[i]).length() > 1 ? Integer.toHexString(this.value[i]).substring(Integer.toHexString(this.value[i]).length() - 2).toUpperCase() : "0" + Integer.toHexString(this.value[i]).toUpperCase());
+      }
+      if (this.value.length > 128) sb.append(" ...");
+    }
     first = false;
     if (!first) sb.append(", ");
     sb.append("timestamp:");

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/test/DataImporter.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/test/DataImporter.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/test/DataImporter.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/test/DataImporter.java Fri Apr 17 20:08:49 2009
@@ -131,7 +131,7 @@
 		try {
 			long t = System.currentTimeMillis();
 			peerstorageClient_.insert(tablename_, rowKey, columnFamily_ + ":"
-					+ column, columnValue, ts);
+					+ column, columnValue.getBytes(), ts);
 			logger_.debug("Time taken for thrift..."
 					+ (System.currentTimeMillis() - t));
 		} catch (Exception e) {
@@ -304,7 +304,7 @@
 			}
 			column_t columnData = new column_t();
 			columnData.columnName = threadId;
-			columnData.value = String.valueOf(isDeleted);
+			columnData.value = String.valueOf(isDeleted).getBytes();
 			columnData.timestamp = lastUpdated;
 			// List <MboxStruct> list = userthreadmap.get(rs.getString(1));
 			if (folder == 0) {
@@ -405,7 +405,7 @@
 			}
 			column_t columnData = new column_t();
 			columnData.columnName = threadId;
-			columnData.value = String.valueOf(isDeleted);
+			columnData.value = String.valueOf(isDeleted).getBytes();
 			columnData.timestamp = lastUpdated;
 			List<column_t> list = rmInbox.cfmap.get("MailboxMailList"+(columnFamilyHack_%divideby_));
 			if (list == null) {
@@ -515,7 +515,7 @@
 			}
 			column_t columnData = new column_t();
 			columnData.columnName = threadId;
-			columnData.value = String.valueOf(isDeleted);
+			columnData.value = String.valueOf(isDeleted).getBytes();
 			columnData.timestamp = lastUpdated;
 			// List <MboxStruct> list = userthreadmap.get(rs.getString(1));
 			if (folder == 0) {
@@ -697,7 +697,7 @@
 			}
 			column_t columnData = new column_t();
 			columnData.columnName = threadId;
-			columnData.value = String.valueOf(isDeleted);
+			columnData.value = String.valueOf(isDeleted).getBytes();
 			columnData.timestamp = lastUpdated;
 			// List <MboxStruct> list = userthreadmap.get(rs.getString(1));
 			if (folder == 0) {

Modified: incubator/cassandra/trunk/src/org/apache/cassandra/test/StressTest.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/org/apache/cassandra/test/StressTest.java?rev=766136&r1=766135&r2=766136&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/org/apache/cassandra/test/StressTest.java (original)
+++ incubator/cassandra/trunk/src/org/apache/cassandra/test/StressTest.java Fri Apr 17 20:08:49 2009
@@ -433,11 +433,11 @@
 				Thread.sleep(0, 1000000000/requestsPerSecond_);
 			else
 				Thread.sleep(1000/requestsPerSecond_);
-			peerstorageClient_.insert(table, key, columnFamily, new String(bytes), ts);
+			peerstorageClient_.insert(table, key, columnFamily, bytes, ts);
 		} catch (Exception e) {
 			try {
 				peerstorageClient_ = connect();
-				peerstorageClient_.insert(table, key, columnFamily, new String(bytes), ts);
+				peerstorageClient_.insert(table, key, columnFamily, bytes, ts);
 			} catch (Exception e1) {
 				e1.printStackTrace();
 			}
@@ -622,7 +622,7 @@
 	            for( int j = 1; j <= columns ; j++)
 	            {
 	                random.nextBytes(bytes);
-	                column_arr.add(new column_t(columnFix_ + j, bytes.toString(), ts));
+	                column_arr.add(new column_t(columnFix_ + j, bytes, ts));
 	            }
 	            bt.cfmap.put(columnFamilyColumn_, column_arr);
 	            apply(bt);
@@ -659,7 +659,7 @@
 		            for( int j = 1; j <= columns ; j++)
 		            {
 		                random.nextBytes(bytes);
-		                column_arr.add(new column_t(columnFix_ + j, bytes.toString(), ts));
+		                column_arr.add(new column_t(columnFix_ + j, bytes, ts));
 		            }
 	            	superColumn_arr.add(new superColumn_t(superColumnFix_ + i, column_arr));	
 	            }
@@ -688,9 +688,9 @@
 	    	int key = random.nextInt();
 	    	int threadId = random.nextInt();
 	    	int word = random.nextInt();
-			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxMailList0:" + Integer.toString(threadId),  new String(bytes1), t++);
-			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxThreadList0:" + Integer.toString(word) + ":" + Integer.toString(threadId),  new String(bytes), t++);
-			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxUserList0:"+ Integer.toString(word) + ":" + Integer.toString(threadId),  new String(bytes), t++);
+			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxMailList0:" + Integer.toString(threadId), bytes1, t++);
+			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxThreadList0:" + Integer.toString(word) + ":" + Integer.toString(threadId), bytes, t++);
+			peerstorageClient_.insert("Mailbox", Integer.toString(key), "MailboxUserList0:"+ Integer.toString(word) + ":" + Integer.toString(threadId), bytes, t++);
     	}
 	}