12 new revisions:
Revision: 3a3225d144bd
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:11:29 2012
Log: Decode ReversedType comparators correctly.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=3a3225d144bd
Revision: 3cf1dc7c298e
Author: Tomaz Muraus <to...@tomaz.me>
Date: Fri Jul 13 22:49:18 2012
Log: Fix test script.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=3cf1dc7c298e
Revision: 6d6a6c2d9e91
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:50:56 2012
Log: Test to verify parameterized ReversedType is decoded.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6d6a6c2d9e91
Revision: 6804f09bd4d3
Author: Tomaz Muraus <to...@tomaz.me>
Date: Tue Jul 24 13:46:45 2012
Log: Fix typo in the readme.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6804f09bd4d3
Revision: 5bc82d2af4d3
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:38:23 2012
Log: Merge pull request #23 from
studybreak/parameterized-comparators...
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=5bc82d2af4d3
Revision: d71f681f9610
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:11:29 2012
Log: Decode ReversedType comparators correctly.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=d71f681f9610
Revision: 6c3e0be3b335
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:50:56 2012
Log: Test to verify parameterized ReversedType is decoded.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6c3e0be3b335
Revision: c7fd19a2732a
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 10:10:28 2012
Log: fix typo
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=c7fd19a2732a
Revision: 875a5546852c
Author: gdusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 11:06:28 2012
Log: test case that uses a simple reversed comparator.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=875a5546852c
Revision: 2702e65467ef
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:39:56 2012
Log: fix merge conflict
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=2702e65467ef
Revision: e459d494fb9b
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:41:46 2012
Log: add Allan Carroll to contributors
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=e459d494fb9b
Revision: 6fd7b538efcc
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:42:59 2012
Log: updated CHANGES
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6fd7b538efcc
==============================================================================
Revision: 3a3225d144bd
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:11:29 2012
Log: Decode ReversedType comparators correctly.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=3a3225d144bd
Modified:
/lib/decoder.js
=======================================
--- /lib/decoder.js Mon Jan 30 10:16:45 2012
+++ /lib/decoder.js Thu Mar 8 14:11:29 2012
@@ -89,6 +89,13 @@
//DynamicCompositeType: 'org.apache.cassandra.db.marshal.DynamicCompositeType',
};
+// Cassandra support paramaterized comparators.
+// https://issues.apache.org/jira/browse/CASSANDRA-2355
+// This is a list of regexes for finding the underlying type to decode.
+var ParameterizedTypes = [
+ /^org.apache.cassandra.db.marshal.ReversedType\(([^)]+)\)$/
+];
+
// source: https://github.com/joyent/node/blob/master/lib/buffer_ieee754.js
// license: LICENSE_buffer_ieee754.txt
function readIEEE754(buffer, offset, isBE, mLen, nBytes) {
@@ -214,6 +221,16 @@
className = this.validators.defaultValidator;
}
}
+
+ // Decode paramaterized class names, e.g. ReversedType
+ for (var i = 0, len=ParameterizedTypes.length; i < len; i++) {
+ var match = className.match(ParameterizedTypes[i]);
+ if (match) {
+ className = match[1];
+ break;
+ }
+ }
+
if (!className) {
className = AbstractTypes.BytesType;
}
==============================================================================
Revision: 3cf1dc7c298e
Author: Tomaz Muraus <to...@tomaz.me>
Date: Fri Jul 13 22:49:18 2012
Log: Fix test script.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=3cf1dc7c298e
Modified:
/scripts/test.sh
=======================================
--- /scripts/test.sh Sat May 12 18:15:18 2012
+++ /scripts/test.sh Fri Jul 13 22:49:18 2012
@@ -1,7 +1,7 @@
if [ $TRAVIS ]; then
dependencies=""
else
- dependencies="tests/dependencies.json"
+ dependencies="--dependencies test/dependencies.json"
fi
if [ ! $TEST_FILES ]; then
==============================================================================
Revision: 6d6a6c2d9e91
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:50:56 2012
Log: Test to verify parameterized ReversedType is decoded.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6d6a6c2d9e91
Modified:
/test/test_decoder.js
=======================================
--- /test/test_decoder.js Mon Jan 30 10:16:45 2012
+++ /test/test_decoder.js Thu Mar 8 14:50:56 2012
@@ -20,6 +20,7 @@
var bytesToBigLong = require('../lib/decoder').bytesToBigLong;
var bytesToNum = require('../lib/decoder').bytesToNum;
var bufferToString = require('../lib/decoder').bufferToString;
+var Decoder = require('../lib/decoder').Decoder;
var UUID = require('../lib/uuid');
function makeBuffer(string) {
@@ -255,3 +256,15 @@
assert.strictEqual('00336699ccff', buf.toString('hex'));
test.finish();
};
+
+exports.testParamaterizedTypes = function (test, assert) {
+ var decoder = new Decoder({
+ key: 'org.apache.cassandra.db.marshal.UTF8Type',
+
comparator: 'org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.UTF8Type)',
+ defaultValidator: 'org.apache.cassandra.db.marshal.UTF8Type'
+ });
+ var bytes = new Buffer([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57,
0x6f, 0x72, 0x6c, 0x64, 0x21]);
+ var str = decoder.decode(bytes, 'comparator');
+ assert.strictEqual(str, 'Hello, World!');
+ test.finish();
+};
==============================================================================
Revision: 6804f09bd4d3
Author: Tomaz Muraus <to...@tomaz.me>
Date: Tue Jul 24 13:46:45 2012
Log: Fix typo in the readme.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6804f09bd4d3
Modified:
/README.md
=======================================
--- /README.md Sat May 19 20:26:02 2012
+++ /README.md Tue Jul 24 13:46:45 2012
@@ -38,7 +38,7 @@
} else {
// assume ksDef contains a full description of the keyspace (uses
the thrift structure).
}
- }
+ });
### Create a keyspace
sys.addKeyspace(ksDef, function(err) {
==============================================================================
Revision: 5bc82d2af4d3
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:38:23 2012
Log: Merge pull request #23 from studybreak/parameterized-comparators
Decode parameterized comparator ReversedType()
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=5bc82d2af4d3
Modified:
/lib/decoder.js
/test/test_decoder.js
=======================================
--- /lib/decoder.js Wed May 16 14:04:36 2012
+++ /lib/decoder.js Mon Sep 24 13:38:23 2012
@@ -95,6 +95,13 @@
//DynamicCompositeType: 'org.apache.cassandra.db.marshal.DynamicCompositeType',
};
+// Cassandra support paramaterized comparators.
+// https://issues.apache.org/jira/browse/CASSANDRA-2355
+// This is a list of regexes for finding the underlying type to decode.
+var ParameterizedTypes = [
+ /^org.apache.cassandra.db.marshal.ReversedType\(([^)]+)\)$/
+];
+
// source: https://github.com/joyent/node/blob/master/lib/buffer_ieee754.js
// license: LICENSE_buffer_ieee754.txt
function readIEEE754(buffer, offset, isBE, mLen, nBytes) {
@@ -223,6 +230,16 @@
className = this.validators.defaultValidator;
}
}
+
+ // Decode paramaterized class names, e.g. ReversedType
+ for (var i = 0, len=ParameterizedTypes.length; i < len; i++) {
+ var match = className.match(ParameterizedTypes[i]);
+ if (match) {
+ className = match[1];
+ break;
+ }
+ }
+
if (!className) {
className = AbstractTypes.BytesType;
}
=======================================
--- /test/test_decoder.js Sat Feb 25 19:22:27 2012
+++ /test/test_decoder.js Mon Sep 24 13:38:23 2012
@@ -20,6 +20,7 @@
var bytesToBigLong = require('../lib/decoder').bytesToBigLong;
var bytesToNum = require('../lib/decoder').bytesToNum;
var bufferToString = require('../lib/decoder').bufferToString;
+var Decoder = require('../lib/decoder').Decoder;
var UUID = require('../lib/uuid');
function makeBuffer(string) {
@@ -260,3 +261,15 @@
assert.strictEqual('00336699ccff', buf.toString('hex'));
test.finish();
};
+
+exports.testParamaterizedTypes = function (test, assert) {
+ var decoder = new Decoder({
+ key: 'org.apache.cassandra.db.marshal.UTF8Type',
+
comparator: 'org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.UTF8Type)',
+ defaultValidator: 'org.apache.cassandra.db.marshal.UTF8Type'
+ });
+ var bytes = new Buffer([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57,
0x6f, 0x72, 0x6c, 0x64, 0x21]);
+ var str = decoder.decode(bytes, 'comparator');
+ assert.strictEqual(str, 'Hello, World!');
+ test.finish();
+};
==============================================================================
Revision: d71f681f9610
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:11:29 2012
Log: Decode ReversedType comparators correctly.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=d71f681f9610
Modified:
/lib/decoder.js
=======================================
--- /lib/decoder.js Wed May 16 14:04:36 2012
+++ /lib/decoder.js Thu Mar 8 14:11:29 2012
@@ -95,6 +95,13 @@
//DynamicCompositeType: 'org.apache.cassandra.db.marshal.DynamicCompositeType',
};
+// Cassandra support paramaterized comparators.
+// https://issues.apache.org/jira/browse/CASSANDRA-2355
+// This is a list of regexes for finding the underlying type to decode.
+var ParameterizedTypes = [
+ /^org.apache.cassandra.db.marshal.ReversedType\(([^)]+)\)$/
+];
+
// source: https://github.com/joyent/node/blob/master/lib/buffer_ieee754.js
// license: LICENSE_buffer_ieee754.txt
function readIEEE754(buffer, offset, isBE, mLen, nBytes) {
@@ -223,6 +230,16 @@
className = this.validators.defaultValidator;
}
}
+
+ // Decode paramaterized class names, e.g. ReversedType
+ for (var i = 0, len=ParameterizedTypes.length; i < len; i++) {
+ var match = className.match(ParameterizedTypes[i]);
+ if (match) {
+ className = match[1];
+ break;
+ }
+ }
+
if (!className) {
className = AbstractTypes.BytesType;
}
==============================================================================
Revision: 6c3e0be3b335
Author: Allan Carroll <alla...@gmail.com>
Date: Thu Mar 8 14:50:56 2012
Log: Test to verify parameterized ReversedType is decoded.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6c3e0be3b335
Modified:
/test/test_decoder.js
=======================================
--- /test/test_decoder.js Sat Feb 25 19:22:27 2012
+++ /test/test_decoder.js Thu Mar 8 14:50:56 2012
@@ -20,6 +20,7 @@
var bytesToBigLong = require('../lib/decoder').bytesToBigLong;
var bytesToNum = require('../lib/decoder').bytesToNum;
var bufferToString = require('../lib/decoder').bufferToString;
+var Decoder = require('../lib/decoder').Decoder;
var UUID = require('../lib/uuid');
function makeBuffer(string) {
@@ -260,3 +261,15 @@
assert.strictEqual('00336699ccff', buf.toString('hex'));
test.finish();
};
+
+exports.testParamaterizedTypes = function (test, assert) {
+ var decoder = new Decoder({
+ key: 'org.apache.cassandra.db.marshal.UTF8Type',
+
comparator: 'org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.UTF8Type)',
+ defaultValidator: 'org.apache.cassandra.db.marshal.UTF8Type'
+ });
+ var bytes = new Buffer([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57,
0x6f, 0x72, 0x6c, 0x64, 0x21]);
+ var str = decoder.decode(bytes, 'comparator');
+ assert.strictEqual(str, 'Hello, World!');
+ test.finish();
+};
==============================================================================
Revision: c7fd19a2732a
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 10:10:28 2012
Log: fix typo
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=c7fd19a2732a
Modified:
/lib/decoder.js
=======================================
--- /lib/decoder.js Thu Mar 8 14:11:29 2012
+++ /lib/decoder.js Mon Sep 24 10:10:28 2012
@@ -231,7 +231,7 @@
}
}
- // Decode paramaterized class names, e.g. ReversedType
+ // Decode parameterized class names, e.g. ReversedType
for (var i = 0, len=ParameterizedTypes.length; i < len; i++) {
var match = className.match(ParameterizedTypes[i]);
if (match) {
==============================================================================
Revision: 875a5546852c
Author: gdusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 11:06:28 2012
Log: test case that uses a simple reversed comparator.
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=875a5546852c
Modified:
/test/test_driver.js
=======================================
--- /test/test_driver.js Thu May 31 15:55:32 2012
+++ /test/test_driver.js Mon Sep 24 11:06:28 2012
@@ -129,7 +129,11 @@
]});
var cfCounter = new CfDef({keyspace: ksName, name: 'CfCounter',
column_type: 'Standard', comparator_type: 'AsciiType',
default_validation_class: 'CounterColumnType',
key_validation_class: 'AsciiType'});
var super1 = new CfDef({keyspace: ksName, name: 'Super1',
column_type: 'Super', comparator_type: 'UTF8Type',
subcomparator_type: 'UTF8Type'});
- var keyspace1 = new KsDef({name: ksName,
strategy_class: 'org.apache.cassandra.locator.SimpleStrategy',
strategy_options: {'replication_factor': '1'}, cf_defs: [standard1, super1,
cfInt, cfUtf8, cfLong, cfBytes, cfBoolean, cfDate, cfUuid, cfUgly,
cfCounter]});
+ var cfReversed = new CfDef({keyspace: ksName, name: 'CfReversed1',
column_type: 'Standard', comparator_type: 'UTF8Type(reversed=true)',
default_validation_class: 'UTF8Type', key_validation_class: 'UTF8Type'});
+ var keyspace1 = new KsDef({name: ksName,
+
strategy_class: 'org.apache.cassandra.locator.SimpleStrategy',
+ strategy_options:
{'replication_factor': '1'},
+ cf_defs: [standard1, super1, cfInt,
cfUtf8, cfLong, cfBytes, cfBoolean, cfDate, cfUuid, cfUgly, cfCounter,
cfReversed]});
sys.addKeyspace(keyspace1, function(addErr) {
console.log(addErr);
close();
@@ -819,6 +823,40 @@
});
};
+exports.testReversedString = function(test, assert) {
+ connect(function(err, con) {
+ if (err) {
+ assert.ok(false);
+ test.finish();
+ } else {
+ var updParms = ['a', 'foo', 'c', 'zoo', 'b', 'boo', 'rev_key_0'];
+ var selParms = ['rev_key_0'];
+ con.execute('update CfReversed1 set ?=?, ?=?, ?=? where key=?',
updParms, function (updErr) {
+ if (updErr) {
+ con.close();
+ assert.ok(false);
+ test.finish();
+ } else {
+ con.execute('select * from CfReversed1 where key=?', selParms,
function(selErr, rows) {
+ con.close();
+ if (selErr) {
+ assert.ok(false);
+ } else {
+ // verify sort is reversed.
+ assert.strictEqual(rows.length, 1);
+ var cols = rows[0].cols;
+ assert.strictEqual(cols[0].name, 'c');
+ assert.strictEqual(cols[1].name, 'b');
+ assert.strictEqual(cols[2].name, 'a');
+ }
+ test.finish();
+ });
+ }
+ });
+ }
+ });
+};
+
// this test only works an order-preserving partitioner.
// it also uses an event-based approach to doing things.
//exports.ZDISABLED_testMultipleRows = function(test, assert) {
==============================================================================
Revision: 2702e65467ef
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:39:56 2012
Log: fix merge conflict
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=2702e65467ef
==============================================================================
Revision: e459d494fb9b
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:41:46 2012
Log: add Allan Carroll to contributors
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=e459d494fb9b
Modified:
/package.json
=======================================
--- /package.json Fri Jun 1 08:38:00 2012
+++ /package.json Mon Sep 24 13:41:46 2012
@@ -5,7 +5,8 @@
"Gary Dusbabek <gdusba...@gmail.com>",
"Tomaž Muraus <to...@tomaz.me>",
"Patrick Negri <patr...@iugu.com.br>",
- "Christoph Tavan <d...@tavan.de>"
+ "Christoph Tavan <d...@tavan.de>",
+ "Allan Carroll <alla...@gmail.com>"
],
"name": "cassandra-client",
"description": "Node.js CQL driver for Apache Cassandra",
==============================================================================
Revision: 6fd7b538efcc
Author: Gary Dusbabek <gdusba...@gmail.com>
Date: Mon Sep 24 13:42:59 2012
Log: updated CHANGES
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=6fd7b538efcc
Modified:
/CHANGES
=======================================
--- /CHANGES Fri Jun 1 08:38:00 2012
+++ /CHANGES Mon Sep 24 13:42:59 2012
@@ -1,3 +1,7 @@
+DEV
+
+- support for parmeterized types (patch contributed by Allan Carroll
<alla...@gmail.com>)
+
Changes with cassandra-client in 0.9.3:
- Improve serialization and deserialization support for the following
types: Number, Date, Boolean.