Hi!
I was curious if anyone has had success using the C++ interface to
Cassandra? I've been having some difficulties and just wanted to check
if I was doing something wrong before debugging further or if there
was any known issues with C++ interface.
I have a simple test program to demonstrate my issue (headers and
using namespace declarations omitted for clarity):
int main()
{
shared_ptr<TTransport> socket(new TSocket(host, port));
shared_ptr<TTransport> transport(new TBufferedTransport(socket));
shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
CassandraClient client(protocol);
try
{
transport->open();
ColumnPath old_col;
old_col.column_family.assign("Data");
old_col.super_column.assign("");
old_col.column.assign("first");
ColumnOrSuperColumn ret_val;
client.get(ret_val,
"drizzle",
"padraig",
old_col,
ZERO);
transport->close();
}
catch (InvalidRequestException &re)
{
printf("ERROR: %s\n", re.why.c_str());
}
catch (TException &tx)
{
printf("ERROR: %s\n", tx.what());
}
}
Now, when I run this, I get the following (from the InvalidRequestException):
$ ./simple_get
ERROR: column parameter is not optional for standard CF Data
$
When I look at the relevant piece of code in the method
validateColumnPath() in ThriftValidation.java, I see the following:
if (column_path.column == null)
{
throw new InvalidRequestException("column parameter is not optional
for standard CF " + column_path.column_family);
}
and I can confirm that the super_column and column members of the
ColumnPath object are appearing as null strings in this method but the
column parameter is not being passed as a null parameter from my C++
program.
So basically, I'm just wondering if anyone has successfully used the
C++ interface generated by thrift to Cassandra? Are there any issues
with it that I am not aware of? Has anyone else encountered this
problem?
I should mention that I checked out the latest version of thrift from
SVN and used that to generate the C++ files for interfacing with
cassandra and I used git to clone the latest version of Cassandra (the
output of show version from the CLI shows the Cassandra version as
0.5-beta1).
Thanks,
Padraig