node.js中的Cassandra 2.0 Helenus驱动程序返回的TTL和TS不正确

时间:2013-09-18 00:40:23

标签: cassandra thrift helenus

使用的Cassandra版本是2.0。随着Cassandra Helenus Driver,TTL和TS回归似乎并不正确。不知道我在这里缺少什么。

这是npm安装信息:

cassandra-client@0.14.7 node_modules/cassandra-client
├── node-uuid@1.4.1
├── async@0.2.9
├── thrift@0.9.0
└── whiskey@0.8.4 (gex@0.0.1, sprintf@0.1.2, rimraf@1.0.1, simplesets@1.1.6, terminal@0.1.3, logmagic@0.1.4, underscore@1.5.2, magic-templates@0.1.1, istanbul@0.1.44)

以下是示例

cqlsh:mykeyspace> INSERT INTO users (user_id,  fname, lname)    VALUES (1749, 'john', 'smith5') using TTL 3000;
cqlsh:mykeyspace> SELECT writetime(fname) FROM users;



writetime(fname)
------------------
 1379455363318000
 1379280881300000
 1379280882172000
 1379460416737000

(4 rows)

cqlsh:mykeyspace> SELECT ttl(fname) FROM users;

 ttl(fname)
------------
       null
       null
       null
       2992

(4 rows)

Node.js Snippet

var helenus = require ('helenus');

var conn = new helenus.ConnectionPool({
       host      : 'localhost:9160',
       keyspace   : 'mykeyspace',
       user       : '',
       password   : '',
       timeout    : 3000,
       cqlVersion : '3.0.0'

        //cqlVersion : '3.0.0' // specify this if you're using Cassandra 1.1 and want to use CQL 3
  });

  conn.on('error', function(err){
    console.error(err.name, err.message);
  });

 conn.connect(function(err, keyspace){
    if(err){
      throw(err);
    } else {
        conn.cql("SELECT fname FROM users", function(err, results){
        console.log(err, results);
        console.log('Here we are!');

        results.forEach(function(row){
        //all row of result
           row.forEach(function(name,value,ts,ttl){
           //all column of row
           console.log(name,value,ts,ttl);
          });

         });
      });
    }
 });

这是输出

Here we are!
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null
fname john Wed Dec 31 1969 16:00:00 GMT-0800 (PST) null

1 个答案:

答案 0 :(得分:1)

我在Helenus project page上阅读的所有内容都让我觉得它与Apache Cassandra 2.0 / CQL3不兼容

举例说明:

  

自0.14.1起,客户端支持Apache Cassandra 1.2.x   在CQL 2兼容模式下。

     

默认情况下,Cassandra 1.2.x使用CQL 3,因此您需要转向   通过'cql_version'传递CQL 2兼容模式:   Connection / PooledConnection的'2.0.0'属性   选项对象中的构造函数。

  

如果你使用Cassandra 1.2.x附带的cqlsh或者   更新版本的cqlsh,默认为您需要的CQL 3   将-2参数传递给它,否则客户端将无法执行   阅读列族定义(#67)。