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

Reply via email to