You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Juan Manuel Garcia del Moral <ju...@southcode.com.ar> on 2010/03/15 17:36:37 UTC

SuperColumns in C++ API

Hello

I'm trying to add values using supercolumns but I get this error

ERROR: supercolumn parameter is not optional for super CF Anonimos

This is my code

// **********
 ColumnPath new_col;
    new_col.__isset.column     = true; /* this is required! */
    new_col.column_family.assign("Anonimos");
    new_col.super_column.assign("Tag");

    client.insert("SocialAds",
                  "1",
                  new_col,
                  "200",
                  123456789,
                  ONE);

// **********

What I'm doing wrong?

Thanks

Juan

Re: Re: Re: SuperColumns in C++ API

Posted by "casablinca126.com" <ca...@126.com>.
Juan,
check the attached source file .

Cao Jiguang

2010-03-17 



casablinca126.com 



发件人: Juan Manuel Garcia del Moral 
发送时间: 2010-03-17  00:09:53 
收件人: user@cassandra.apache.org 
抄送: 
主题: Re: Re: SuperColumns in C++ API 
 
Many thanks for your code, would you please send me the get_slice() function as well so I can compile it?

thanks in advance 

Juan



2010/3/15 casablinca126.com <ca...@126.com>

hello Juan,
this is the C++ code with super-column  I'm using. I hope it will be useful :

#include "Cassandra.h"
#include <protocol/TBinaryProtocol.h>
#include <transport/TBufferTransports.h>
#include <transport/TSocket.h>
#include <string>
//#include <stdio.h>
#include <iostream>
#include <fstream>
#include <pthread.h>
#include <vector>
#include <map>

using namespace std;

using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;

using boost::shared_ptr;

using namespace org::apache::cassandra;

//macros..
#define MAX_STRLEN  100000
#define ITEM_COUNT   100000
#define ChapterNumPerNovel 30

//global variables  & functions 

int port = 9160; 

void insert();
void get(void );
void get_slice();
void remove();

const string strKeyspace = "Keyspace1";
const string strColFamily_org = "Super1";
string strColFamily = "Super1";
string strColOrg = "chapter";
string strCol = "chapter";
string strSuperColOrg = "Novel";
string strSuperCol = "Novel";
string strKeyOrg = "novel_key";
string strKey = "novel_key";
string strValue = "";
size_t thread_id = 0;

bool STOP = false;
size_t start_time = 0;
size_t average_time = 0;
int ret_num = 0;
unsigned long long total_get_count = 0;
unsigned long long ntmp = 10;
int error_num = 0;





int main(int argc, char **argv)
{
 //insert();
 //get(NULL);
 get_slice();
 //remove();
  
    
 return EXIT_SUCCESS;
}


void insert()
{
 
 shared_ptr<TTransport> socket_novel(new TSocket("localhost", port));  
 shared_ptr<TTransport> transport_novel(new TBufferedTransport(socket_novel) );
 shared_ptr<TProtocol> protocol_novel(new TBinaryProtocol(transport_novel) );
 CassandraClient client(protocol_novel);
 transport_novel->open();
 string strValueOrg = "1234567";


 ColumnPath col_path;
 int i = 0;
 char chTmp[MAX_STRLEN];
 string str_zeros;
 while(i<ITEM_COUNT )
 {
  memset(&chTmp, 0, MAX_STRLEN);
  sprintf(chTmp, "%d", i++);
  
  strValue = strValueOrg + string(chTmp);
  strKey = strKeyOrg + string(chTmp);
  strSuperCol = strSuperColOrg + string(chTmp);
  
  col_path.column_family.assign(strColFamily );
  col_path.column.assign(strCol);
  col_path.super_column.assign(strSuperCol);
  col_path.__isset.super_column = true;
  col_path.__isset.column = true;


  try
  {
   for(int j=0; j<ChapterNumPerNovel; j++)
   {
    memset(&chTmp, 0, MAX_STRLEN);
    sprintf(chTmp, "%d", j);
    int len = string(chTmp).length();
    str_zeros = "";
    for(int k=len; k<10; k++)
    {
     str_zeros += "0";
    }
    strCol= strSuperCol + "_" + strColOrg + str_zeros + string(chTmp);
    col_path.column.assign(strCol);
    client.insert(strKeyspace,strKey, col_path, strValue,time(NULL), ONE);
   }
  }
  catch(TException &tx)
  {
   printf("ERROR: %s\n", tx.what());
   error_num ++ ;
  }

  total_get_count ++ ;
  
 }

 STOP = true;
 transport_novel->close();
}
//---------------------------------------

cheers,
Cao Jiguang


2010-03-16 



casablinca126.com 



发件人: Juan Manuel Garcia del Moral 
发送时间: 2010-03-16  05:16:50 
收件人: user@cassandra.apache.org 
抄送: 
主题: Re: SuperColumns in C++ API 
Ok, I'll check out libcassandra in a while.

I've been able to insert values with this:

    new_col.__isset.super_column = true; 
    new_col.__isset.column     = true; /* this is required! */
    new_col.column_family.assign("Anonimos");
    new_col.super_column.assign("Tag");
    new_col.column.assign("300");
 
    client.insert("SocialAds",
                  "50",
                  new_col,
                  "5",
                  12345678,
                  ONE);

I thought I could GET it by doing:

    client.get(ret_val,
               "SocialAds",
               "50",
               new_col,
               ONE);

But I'm getting this error:
 Default TException.

Ah nothing on the server log

Thanks, and sorry for all these newbie questions



2010/3/15 Jonathan Ellis <jb...@gmail.com>

you're still not setting isset on column_family.

you need both isset and assign on each value you're sending.

maybe you should use http://github.com/posulliv/libcassandra ?

On Mon, Mar 15, 2010 at 3:29 PM, Juan Manuel Garcia del Moral

<ju...@southcode.com.ar> wrote:
> Ok,
>
> Now I've changed to:
>
>     ColumnPath new_col;
>     new_col.__isset.super_column = true;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>     new_col.column.assign("300");
>
>
>     client.insert("SocialAds",
>                   "1",
>                   new_col,
>                   "200",
>                   12345678,
>                   ONE);
>
> I'm not getting any error but no entry on the log either, and the value is
> not being inserted...
>
>
> Thanks
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>>
>> Ah, thrift is letting you set something to be null, that shouldn't be
>> legal.  This is fixed in 0.6 svn, btw.
>>
>> it looks like you are setting new_col.__isset.column to true, but not
>> actually assigning it a value.
>>
>> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > This is what the log says:
>> >
>> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
>> > 1482)
>> > Internal error processing insert
>> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
>> > superColumnName='[B@d0357a', columnName='null')
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>> >         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>> >         at
>> >
>> > org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>> >         at
>> >
>> > org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >         at java.lang.Thread.run(Thread.java:619)
>> >
>> >
>> > I need to do replicate this:
>> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>> >
>> > from my code...
>> >
>> > any ideas?
>> >
>> > thanks in advance
>> >
>> > Juan
>> >
>> >
>> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >>
>> >> check the server log for exception.  and if you are not on 0.5.1 or
>> >> 0.6 svn branch, upgrade.
>> >>
>> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > Many thanks!
>> >> >
>> >> > That seems to be useful,
>> >> >
>> >> > But now I'm getting
>> >> >  The error message: "Internal error processing insert"
>> >> >
>> >> > I'm not sure if I'm setting the timestamp properly
>> >> >
>> >> >
>> >> >
>> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >> >>
>> >> >> You need to manually set the __isset fields when using the thift API
>> >> >> in C++. Since you are trying to insert a super column, you need to
>> >> >> set
>> >> >> the super_column __isset field.
>> >> >>
>> >> >> So this:
>> >> >>
>> >> >> new_col.__isset.column = true;
>> >> >>
>> >> >> should become:
>> >> >>
>> >> >> new_col.__isset.super_column = true;
>> >> >>
>> >> >> -Padraig
>> >> >>
>> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> > Hello
>> >> >> >
>> >> >> > I'm trying to add values using supercolumns but I get this error
>> >> >> >
>> >> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >> >> >
>> >> >> > This is my code
>> >> >> >
>> >> >> > // **********
>> >> >> >  ColumnPath new_col;
>> >> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >> >     new_col.column_family.assign("Anonimos");
>> >> >> >     new_col.super_column.assign("Tag");
>> >> >> >
>> >> >> >     client.insert("SocialAds",
>> >> >> >                   "1",
>> >> >> >                   new_col,
>> >> >> >                   "200",
>> >> >> >                   123456789,
>> >> >> >                   ONE);
>> >> >> >
>> >> >> > // **********
>> >> >> >
>> >> >> > What I'm doing wrong?
>> >> >> >
>> >> >> > Thanks
>> >> >> >
>> >> >> > Juan
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>




-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar





-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
Many thanks for your code, would you please send me the get_slice() function
as well so I can compile it?

thanks in advance

Juan


2010/3/15 casablinca126.com <ca...@126.com>

>  hello Juan,
> this is the C++ code with super-column  I'm using. I hope it will be
> useful :
>
> #include "Cassandra.h"
> #include <protocol/TBinaryProtocol.h>
> #include <transport/TBufferTransports.h>
> #include <transport/TSocket.h>
> #include <string>
> //#include <stdio.h>
> #include <iostream>
> #include <fstream>
> #include <pthread.h>
> #include <vector>
> #include <map>
>
> using namespace std;
>
> using namespace ::apache::thrift;
> using namespace ::apache::thrift::protocol;
> using namespace ::apache::thrift::transport;
>
> using boost::shared_ptr;
>
> using namespace org::apache::cassandra;
>
> //macros..
> #define MAX_STRLEN  100000
> #define ITEM_COUNT   100000
> #define ChapterNumPerNovel 30
>
> //global variables  & functions
>
> int port = 9160;
>
> void insert();
> void get(void );
> void get_slice();
> void remove();
>
> const string strKeyspace = "Keyspace1";
> const string strColFamily_org = "Super1";
> string strColFamily = "Super1";
> string strColOrg = "chapter";
> string strCol = "chapter";
> string strSuperColOrg = "Novel";
> string strSuperCol = "Novel";
> string strKeyOrg = "novel_key";
> string strKey = "novel_key";
> string strValue = "";
> size_t thread_id = 0;
>
> bool STOP = false;
> size_t start_time = 0;
> size_t average_time = 0;
> int ret_num = 0;
> unsigned long long total_get_count = 0;
> unsigned long long ntmp = 10;
> int error_num = 0;
>
>
>
>
>
> int main(int argc, char **argv)
> {
>  //insert();
>  //get(NULL);
>  get_slice();
>  //remove();
>
>
>  return EXIT_SUCCESS;
> }
>
>
> void insert()
> {
>
>  shared_ptr<TTransport> socket_novel(new TSocket("localhost", port));
>  shared_ptr<TTransport> transport_novel(new
> TBufferedTransport(socket_novel) );
>  shared_ptr<TProtocol> protocol_novel(new TBinaryProtocol(transport_novel)
> );
>  CassandraClient client(protocol_novel);
>  transport_novel->open();
>  string strValueOrg = "1234567";
>
>
>  ColumnPath col_path;
>  int i = 0;
>  char chTmp[MAX_STRLEN];
>  string str_zeros;
>  while(i<ITEM_COUNT )
>  {
>   memset(&chTmp, 0, MAX_STRLEN);
>   sprintf(chTmp, "%d", i++);
>
>   strValue = strValueOrg + string(chTmp);
>   strKey = strKeyOrg + string(chTmp);
>   strSuperCol = strSuperColOrg + string(chTmp);
>
>   col_path.column_family.assign(strColFamily );
>   col_path.column.assign(strCol);
>   col_path.super_column.assign(strSuperCol);
>   col_path.__isset.super_column = true;
>   col_path.__isset.column = true;
>
>
>   try
>   {
>    for(int j=0; j<ChapterNumPerNovel; j++)
>    {
>     memset(&chTmp, 0, MAX_STRLEN);
>     sprintf(chTmp, "%d", j);
>     int len = string(chTmp).length();
>     str_zeros = "";
>     for(int k=len; k<10; k++)
>     {
>      str_zeros += "0";
>     }
>     strCol= strSuperCol + "_" + strColOrg + str_zeros + string(chTmp);
>     col_path.column.assign(strCol);
>     client.insert(strKeyspace,strKey, col_path, strValue,time(NULL), ONE);
>    }
>   }
>   catch(TException &tx)
>   {
>    printf("ERROR: %s\n", tx.what());
>    error_num ++ ;
>   }
>
>   total_get_count ++ ;
>
>  }
>
>  STOP = true;
>  transport_novel->close();
> }
> //---------------------------------------
>
> cheers,
> Cao Jiguang
>
>
> 2010-03-16
> ------------------------------
>  casablinca126.com
> ------------------------------
>  *发件人:* Juan Manuel Garcia del Moral
> *发送时间:* 2010-03-16  05:16:50
> *收件人:* user@cassandra.apache.org
> *抄送:*
> *主题:* Re: SuperColumns in C++ API
>  Ok, I'll check out libcassandra in a while.
>
> I've been able to insert values with this:
>
>     new_col.__isset.super_column = true;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>     new_col.column.assign("300");
>
>     client.insert("SocialAds",
>                   "50",
>                   new_col,
>                   "5",
>                   12345678,
>                   ONE);
>
> I thought I could GET it by doing:
>
>     client.get(ret_val,
>                "SocialAds",
>                "50",
>                new_col,
>                ONE);
>
> But I'm getting this error:
>  Default TException.
>
> Ah nothing on the server log
>
> Thanks, and sorry for all these newbie questions
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>
>> you're still not setting isset on column_family.
>>
>> you need both isset and assign on each value you're sending.
>>
>> maybe you should use http://github.com/posulliv/libcassandra ?
>>
>> On Mon, Mar 15, 2010 at 3:29 PM, Juan Manuel Garcia del Moral
>>  <ju...@southcode.com.ar> wrote:
>> > Ok,
>> >
>> > Now I've changed to:
>> >
>> >     ColumnPath new_col;
>> >     new_col.__isset.super_column = true;
>> >     new_col.__isset.column     = true; /* this is required! */
>> >     new_col.column_family.assign("Anonimos");
>> >     new_col.super_column.assign("Tag");
>> >     new_col.column.assign("300");
>> >
>> >
>> >     client.insert("SocialAds",
>> >                   "1",
>> >                   new_col,
>> >                   "200",
>> >                   12345678,
>> >                   ONE);
>> >
>> > I'm not getting any error but no entry on the log either, and the value
>> is
>> > not being inserted...
>> >
>> >
>> > Thanks
>> >
>> >
>> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >>
>> >> Ah, thrift is letting you set something to be null, that shouldn't be
>> >> legal.  This is fixed in 0.6 svn, btw.
>> >>
>> >> it looks like you are setting new_col.__isset.column to true, but not
>> >> actually assigning it a value.
>> >>
>> >> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > This is what the log says:
>> >> >
>> >> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
>> >> > 1482)
>> >> > Internal error processing insert
>> >> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
>> >> > superColumnName='[B@d0357a', columnName='null')
>> >> >         at
>> >> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>> >> >         at
>> >> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>> >> >         at
>> org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>> >> >         at
>> >> >
>> >> >
>> org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>> >> >         at
>> >> >
>> >> >
>> org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>> >> >         at
>> >> >
>> >> >
>> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>> >> >         at
>> >> >
>> >> >
>> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>> >> >         at
>> >> >
>> >> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >> >         at
>> >> >
>> >> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >> >         at java.lang.Thread.run(Thread.java:619)
>> >> >
>> >> >
>> >> > I need to do replicate this:
>> >> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>> >> >
>> >> > from my code...
>> >> >
>> >> > any ideas?
>> >> >
>> >> > thanks in advance
>> >> >
>> >> > Juan
>> >> >
>> >> >
>> >> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >> >>
>> >> >> check the server log for exception.  and if you are not on 0.5.1 or
>> >> >> 0.6 svn branch, upgrade.
>> >> >>
>> >> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> > Many thanks!
>> >> >> >
>> >> >> > That seems to be useful,
>> >> >> >
>> >> >> > But now I'm getting
>> >> >> >  The error message: "Internal error processing insert"
>> >> >> >
>> >> >> > I'm not sure if I'm setting the timestamp properly
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >> >> >>
>> >> >> >> You need to manually set the __isset fields when using the thift
>> API
>> >> >> >> in C++. Since you are trying to insert a super column, you need
>> to
>> >> >> >> set
>> >> >> >> the super_column __isset field.
>> >> >> >>
>> >> >> >> So this:
>> >> >> >>
>> >> >> >> new_col.__isset.column = true;
>> >> >> >>
>> >> >> >> should become:
>> >> >> >>
>> >> >> >> new_col.__isset.super_column = true;
>> >> >> >>
>> >> >> >> -Padraig
>> >> >> >>
>> >> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> >> > Hello
>> >> >> >> >
>> >> >> >> > I'm trying to add values using supercolumns but I get this
>> error
>> >> >> >> >
>> >> >> >> > ERROR: supercolumn parameter is not optional for super CF
>> Anonimos
>> >> >> >> >
>> >> >> >> > This is my code
>> >> >> >> >
>> >> >> >> > // **********
>> >> >> >> >  ColumnPath new_col;
>> >> >> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >> >> >     new_col.column_family.assign("Anonimos");
>> >> >> >> >     new_col.super_column.assign("Tag");
>> >> >> >> >
>> >> >> >> >     client.insert("SocialAds",
>> >> >> >> >                   "1",
>> >> >> >> >                   new_col,
>> >> >> >> >                   "200",
>> >> >> >> >                   123456789,
>> >> >> >> >                   ONE);
>> >> >> >> >
>> >> >> >> > // **********
>> >> >> >> >
>> >> >> >> > What I'm doing wrong?
>> >> >> >> >
>> >> >> >> > Thanks
>> >> >> >> >
>> >> >> >> > Juan
>> >> >> >> >
>> >> >> >> >
>> >> >> >
>> >> >> >
>> >> >> >
>> >> >>
>> >> >
>> >> >
>> >> >
>> >
>> >
>> >
>> > --
>> > Juan Manuel García del Moral
>> > Southcode Global IT Resources
>> > jm@southcode.com.ar
>> > http://www.southcode.com.ar
>> >
>> >
>>
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>


-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: Re: SuperColumns in C++ API

Posted by "casablinca126.com" <ca...@126.com>.
hello Juan,
this is the C++ code with super-column  I'm using. I hope it will be useful :

#include "Cassandra.h"
#include <protocol/TBinaryProtocol.h>
#include <transport/TBufferTransports.h>
#include <transport/TSocket.h>
#include <string>
//#include <stdio.h>
#include <iostream>
#include <fstream>
#include <pthread.h>
#include <vector>
#include <map>

using namespace std;

using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;

using boost::shared_ptr;

using namespace org::apache::cassandra;

//macros..
#define MAX_STRLEN  100000
#define ITEM_COUNT   100000
#define ChapterNumPerNovel 30

//global variables  & functions 

int port = 9160; 

void insert();
void get(void );
void get_slice();
void remove();

const string strKeyspace = "Keyspace1";
const string strColFamily_org = "Super1";
string strColFamily = "Super1";
string strColOrg = "chapter";
string strCol = "chapter";
string strSuperColOrg = "Novel";
string strSuperCol = "Novel";
string strKeyOrg = "novel_key";
string strKey = "novel_key";
string strValue = "";
size_t thread_id = 0;

bool STOP = false;
size_t start_time = 0;
size_t average_time = 0;
int ret_num = 0;
unsigned long long total_get_count = 0;
unsigned long long ntmp = 10;
int error_num = 0;





int main(int argc, char **argv)
{
 //insert();
 //get(NULL);
 get_slice();
 //remove();
  
    
 return EXIT_SUCCESS;
}


void insert()
{
 
 shared_ptr<TTransport> socket_novel(new TSocket("localhost", port));  
 shared_ptr<TTransport> transport_novel(new TBufferedTransport(socket_novel) );
 shared_ptr<TProtocol> protocol_novel(new TBinaryProtocol(transport_novel) );
 CassandraClient client(protocol_novel);
 transport_novel->open();
 string strValueOrg = "1234567";

 
 ColumnPath col_path;
 int i = 0;
 char chTmp[MAX_STRLEN];
 string str_zeros;
 while(i<ITEM_COUNT )
 {
  memset(&chTmp, 0, MAX_STRLEN);
  sprintf(chTmp, "%d", i++);
  
  strValue = strValueOrg + string(chTmp);
  strKey = strKeyOrg + string(chTmp);
  strSuperCol = strSuperColOrg + string(chTmp);
  
  col_path.column_family.assign(strColFamily );
  col_path.column.assign(strCol);
  col_path.super_column.assign(strSuperCol);
  col_path.__isset.super_column = true;
  col_path.__isset.column = true;


  try
  {
   for(int j=0; j<ChapterNumPerNovel; j++)
   {
    memset(&chTmp, 0, MAX_STRLEN);
    sprintf(chTmp, "%d", j);
    int len = string(chTmp).length();
    str_zeros = "";
    for(int k=len; k<10; k++)
    {
     str_zeros += "0";
    }
    strCol= strSuperCol + "_" + strColOrg + str_zeros + string(chTmp);
    col_path.column.assign(strCol);
    client.insert(strKeyspace,strKey, col_path, strValue,time(NULL), ONE);
   }
  }
  catch(TException &tx)
  {
   printf("ERROR: %s\n", tx.what());
   error_num ++ ;
  }

  total_get_count ++ ;
  
 }

 STOP = true;
 transport_novel->close();
}
//---------------------------------------

cheers,
Cao Jiguang


2010-03-16 



casablinca126.com 



发件人: Juan Manuel Garcia del Moral 
发送时间: 2010-03-16  05:16:50 
收件人: user@cassandra.apache.org 
抄送: 
主题: Re: SuperColumns in C++ API 
 
Ok, I'll check out libcassandra in a while.

I've been able to insert values with this:

    new_col.__isset.super_column = true; 
    new_col.__isset.column     = true; /* this is required! */
    new_col.column_family.assign("Anonimos");
    new_col.super_column.assign("Tag");
    new_col.column.assign("300");
 
    client.insert("SocialAds",
                  "50",
                  new_col,
                  "5",
                  12345678,
                  ONE);

I thought I could GET it by doing:

    client.get(ret_val,
               "SocialAds",
               "50",
               new_col,
               ONE);

But I'm getting this error:
 Default TException.

Ah nothing on the server log

Thanks, and sorry for all these newbie questions



2010/3/15 Jonathan Ellis <jb...@gmail.com>

you're still not setting isset on column_family.

you need both isset and assign on each value you're sending.

maybe you should use http://github.com/posulliv/libcassandra ?

On Mon, Mar 15, 2010 at 3:29 PM, Juan Manuel Garcia del Moral

<ju...@southcode.com.ar> wrote:
> Ok,
>
> Now I've changed to:
>
>     ColumnPath new_col;
>     new_col.__isset.super_column = true;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>     new_col.column.assign("300");
>
>
>     client.insert("SocialAds",
>                   "1",
>                   new_col,
>                   "200",
>                   12345678,
>                   ONE);
>
> I'm not getting any error but no entry on the log either, and the value is
> not being inserted...
>
>
> Thanks
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>>
>> Ah, thrift is letting you set something to be null, that shouldn't be
>> legal.  This is fixed in 0.6 svn, btw.
>>
>> it looks like you are setting new_col.__isset.column to true, but not
>> actually assigning it a value.
>>
>> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > This is what the log says:
>> >
>> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
>> > 1482)
>> > Internal error processing insert
>> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
>> > superColumnName='[B@d0357a', columnName='null')
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>> >         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>> >         at
>> >
>> > org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>> >         at
>> >
>> > org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >         at java.lang.Thread.run(Thread.java:619)
>> >
>> >
>> > I need to do replicate this:
>> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>> >
>> > from my code...
>> >
>> > any ideas?
>> >
>> > thanks in advance
>> >
>> > Juan
>> >
>> >
>> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >>
>> >> check the server log for exception.  and if you are not on 0.5.1 or
>> >> 0.6 svn branch, upgrade.
>> >>
>> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > Many thanks!
>> >> >
>> >> > That seems to be useful,
>> >> >
>> >> > But now I'm getting
>> >> >  The error message: "Internal error processing insert"
>> >> >
>> >> > I'm not sure if I'm setting the timestamp properly
>> >> >
>> >> >
>> >> >
>> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >> >>
>> >> >> You need to manually set the __isset fields when using the thift API
>> >> >> in C++. Since you are trying to insert a super column, you need to
>> >> >> set
>> >> >> the super_column __isset field.
>> >> >>
>> >> >> So this:
>> >> >>
>> >> >> new_col.__isset.column = true;
>> >> >>
>> >> >> should become:
>> >> >>
>> >> >> new_col.__isset.super_column = true;
>> >> >>
>> >> >> -Padraig
>> >> >>
>> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> > Hello
>> >> >> >
>> >> >> > I'm trying to add values using supercolumns but I get this error
>> >> >> >
>> >> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >> >> >
>> >> >> > This is my code
>> >> >> >
>> >> >> > // **********
>> >> >> >  ColumnPath new_col;
>> >> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >> >     new_col.column_family.assign("Anonimos");
>> >> >> >     new_col.super_column.assign("Tag");
>> >> >> >
>> >> >> >     client.insert("SocialAds",
>> >> >> >                   "1",
>> >> >> >                   new_col,
>> >> >> >                   "200",
>> >> >> >                   123456789,
>> >> >> >                   ONE);
>> >> >> >
>> >> >> > // **********
>> >> >> >
>> >> >> > What I'm doing wrong?
>> >> >> >
>> >> >> > Thanks
>> >> >> >
>> >> >> > Juan
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>




-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
Ok, I'll check out libcassandra in a while.

I've been able to insert values with this:

    new_col.__isset.super_column = true;
    new_col.__isset.column     = true; /* this is required! */
    new_col.column_family.assign("Anonimos");
    new_col.super_column.assign("Tag");
    new_col.column.assign("300");

    client.insert("SocialAds",
                  "50",
                  new_col,
                  "5",
                  12345678,
                  ONE);

I thought I could GET it by doing:

    client.get(ret_val,
               "SocialAds",
               "50",
               new_col,
               ONE);

But I'm getting this error:
 Default TException.

Ah nothing on the server log

Thanks, and sorry for all these newbie questions


2010/3/15 Jonathan Ellis <jb...@gmail.com>

> you're still not setting isset on column_family.
>
> you need both isset and assign on each value you're sending.
>
> maybe you should use http://github.com/posulliv/libcassandra ?
>
> On Mon, Mar 15, 2010 at 3:29 PM, Juan Manuel Garcia del Moral
> <ju...@southcode.com.ar> wrote:
> > Ok,
> >
> > Now I've changed to:
> >
> >     ColumnPath new_col;
> >     new_col.__isset.super_column = true;
> >     new_col.__isset.column     = true; /* this is required! */
> >     new_col.column_family.assign("Anonimos");
> >     new_col.super_column.assign("Tag");
> >     new_col.column.assign("300");
> >
> >
> >     client.insert("SocialAds",
> >                   "1",
> >                   new_col,
> >                   "200",
> >                   12345678,
> >                   ONE);
> >
> > I'm not getting any error but no entry on the log either, and the value
> is
> > not being inserted...
> >
> >
> > Thanks
> >
> >
> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
> >>
> >> Ah, thrift is letting you set something to be null, that shouldn't be
> >> legal.  This is fixed in 0.6 svn, btw.
> >>
> >> it looks like you are setting new_col.__isset.column to true, but not
> >> actually assigning it a value.
> >>
> >> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
> >> <ju...@southcode.com.ar> wrote:
> >> > This is what the log says:
> >> >
> >> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
> >> > 1482)
> >> > Internal error processing insert
> >> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
> >> > superColumnName='[B@d0357a', columnName='null')
> >> >         at
> >> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
> >> >         at
> >> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
> >> >         at
> org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
> >> >         at
> >> >
> >> >
> org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
> >> >         at
> >> >
> >> >
> org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
> >> >         at
> >> >
> >> >
> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
> >> >         at
> >> >
> >> >
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
> >> >         at
> >> >
> >> >
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >> >         at
> >> >
> >> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >> >         at java.lang.Thread.run(Thread.java:619)
> >> >
> >> >
> >> > I need to do replicate this:
> >> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
> >> >
> >> > from my code...
> >> >
> >> > any ideas?
> >> >
> >> > thanks in advance
> >> >
> >> > Juan
> >> >
> >> >
> >> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
> >> >>
> >> >> check the server log for exception.  and if you are not on 0.5.1 or
> >> >> 0.6 svn branch, upgrade.
> >> >>
> >> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
> >> >> <ju...@southcode.com.ar> wrote:
> >> >> > Many thanks!
> >> >> >
> >> >> > That seems to be useful,
> >> >> >
> >> >> > But now I'm getting
> >> >> >  The error message: "Internal error processing insert"
> >> >> >
> >> >> > I'm not sure if I'm setting the timestamp properly
> >> >> >
> >> >> >
> >> >> >
> >> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
> >> >> >>
> >> >> >> You need to manually set the __isset fields when using the thift
> API
> >> >> >> in C++. Since you are trying to insert a super column, you need to
> >> >> >> set
> >> >> >> the super_column __isset field.
> >> >> >>
> >> >> >> So this:
> >> >> >>
> >> >> >> new_col.__isset.column = true;
> >> >> >>
> >> >> >> should become:
> >> >> >>
> >> >> >> new_col.__isset.super_column = true;
> >> >> >>
> >> >> >> -Padraig
> >> >> >>
> >> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
> >> >> >> <ju...@southcode.com.ar> wrote:
> >> >> >> > Hello
> >> >> >> >
> >> >> >> > I'm trying to add values using supercolumns but I get this error
> >> >> >> >
> >> >> >> > ERROR: supercolumn parameter is not optional for super CF
> Anonimos
> >> >> >> >
> >> >> >> > This is my code
> >> >> >> >
> >> >> >> > // **********
> >> >> >> >  ColumnPath new_col;
> >> >> >> >     new_col.__isset.column     = true; /* this is required! */
> >> >> >> >     new_col.column_family.assign("Anonimos");
> >> >> >> >     new_col.super_column.assign("Tag");
> >> >> >> >
> >> >> >> >     client.insert("SocialAds",
> >> >> >> >                   "1",
> >> >> >> >                   new_col,
> >> >> >> >                   "200",
> >> >> >> >                   123456789,
> >> >> >> >                   ONE);
> >> >> >> >
> >> >> >> > // **********
> >> >> >> >
> >> >> >> > What I'm doing wrong?
> >> >> >> >
> >> >> >> > Thanks
> >> >> >> >
> >> >> >> > Juan
> >> >> >> >
> >> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >>
> >> >
> >> >
> >> >
> >
> >
> >
> > --
> > Juan Manuel García del Moral
> > Southcode Global IT Resources
> > jm@southcode.com.ar
> > http://www.southcode.com.ar
> >
> >
>



-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: SuperColumns in C++ API

Posted by Jonathan Ellis <jb...@gmail.com>.
you're still not setting isset on column_family.

you need both isset and assign on each value you're sending.

maybe you should use http://github.com/posulliv/libcassandra ?

On Mon, Mar 15, 2010 at 3:29 PM, Juan Manuel Garcia del Moral
<ju...@southcode.com.ar> wrote:
> Ok,
>
> Now I've changed to:
>
>     ColumnPath new_col;
>     new_col.__isset.super_column = true;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>     new_col.column.assign("300");
>
>
>     client.insert("SocialAds",
>                   "1",
>                   new_col,
>                   "200",
>                   12345678,
>                   ONE);
>
> I'm not getting any error but no entry on the log either, and the value is
> not being inserted...
>
>
> Thanks
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>>
>> Ah, thrift is letting you set something to be null, that shouldn't be
>> legal.  This is fixed in 0.6 svn, btw.
>>
>> it looks like you are setting new_col.__isset.column to true, but not
>> actually assigning it a value.
>>
>> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > This is what the log says:
>> >
>> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
>> > 1482)
>> > Internal error processing insert
>> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
>> > superColumnName='[B@d0357a', columnName='null')
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>> >         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>> >         at
>> >
>> > org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>> >         at
>> >
>> > org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>> >         at
>> >
>> > org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >         at
>> >
>> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >         at java.lang.Thread.run(Thread.java:619)
>> >
>> >
>> > I need to do replicate this:
>> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>> >
>> > from my code...
>> >
>> > any ideas?
>> >
>> > thanks in advance
>> >
>> > Juan
>> >
>> >
>> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >>
>> >> check the server log for exception.  and if you are not on 0.5.1 or
>> >> 0.6 svn branch, upgrade.
>> >>
>> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > Many thanks!
>> >> >
>> >> > That seems to be useful,
>> >> >
>> >> > But now I'm getting
>> >> >  The error message: "Internal error processing insert"
>> >> >
>> >> > I'm not sure if I'm setting the timestamp properly
>> >> >
>> >> >
>> >> >
>> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >> >>
>> >> >> You need to manually set the __isset fields when using the thift API
>> >> >> in C++. Since you are trying to insert a super column, you need to
>> >> >> set
>> >> >> the super_column __isset field.
>> >> >>
>> >> >> So this:
>> >> >>
>> >> >> new_col.__isset.column = true;
>> >> >>
>> >> >> should become:
>> >> >>
>> >> >> new_col.__isset.super_column = true;
>> >> >>
>> >> >> -Padraig
>> >> >>
>> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> > Hello
>> >> >> >
>> >> >> > I'm trying to add values using supercolumns but I get this error
>> >> >> >
>> >> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >> >> >
>> >> >> > This is my code
>> >> >> >
>> >> >> > // **********
>> >> >> >  ColumnPath new_col;
>> >> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >> >     new_col.column_family.assign("Anonimos");
>> >> >> >     new_col.super_column.assign("Tag");
>> >> >> >
>> >> >> >     client.insert("SocialAds",
>> >> >> >                   "1",
>> >> >> >                   new_col,
>> >> >> >                   "200",
>> >> >> >                   123456789,
>> >> >> >                   ONE);
>> >> >> >
>> >> >> > // **********
>> >> >> >
>> >> >> > What I'm doing wrong?
>> >> >> >
>> >> >> > Thanks
>> >> >> >
>> >> >> > Juan
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>

Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
Sorry I was testing wrong, the values are there:

cassandra> get SocialAds.Anonimos['1']['Tag'];
=> (column=300, value=200, timestamp=12345678)

Thank you so much for your help.




2010/3/15 Juan Manuel Garcia del Moral <ju...@southcode.com.ar>

> Ok,
>
> Now I've changed to:
>
>     ColumnPath new_col;
>     new_col.__isset.super_column = true;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>     new_col.column.assign("300");
>
>
>
>     client.insert("SocialAds",
>                   "1",
>                   new_col,
>                   "200",
>                   12345678,
>                   ONE);
>
> I'm not getting any error but no entry on the log either, and the value is
> not being inserted...
>
>
> Thanks
>
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>
>> Ah, thrift is letting you set something to be null, that shouldn't be
>> legal.  This is fixed in 0.6 svn, btw.
>>
>> it looks like you are setting new_col.__isset.column to true, but not
>> actually assigning it a value.
>>
>> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > This is what the log says:
>> >
>> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
>> 1482)
>> > Internal error processing insert
>> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
>> > superColumnName='[B@d0357a', columnName='null')
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>> >         at
>> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>> >         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>> >         at
>> >
>> org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>> >         at
>> >
>> org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>> >         at
>> >
>> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>> >         at
>> >
>> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>> >         at
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>> >         at
>> >
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>> >         at java.lang.Thread.run(Thread.java:619)
>> >
>> >
>> > I need to do replicate this:
>> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>> >
>> > from my code...
>> >
>> > any ideas?
>> >
>> > thanks in advance
>> >
>> > Juan
>> >
>> >
>> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>> >>
>> >> check the server log for exception.  and if you are not on 0.5.1 or
>> >> 0.6 svn branch, upgrade.
>> >>
>> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > Many thanks!
>> >> >
>> >> > That seems to be useful,
>> >> >
>> >> > But now I'm getting
>> >> >  The error message: "Internal error processing insert"
>> >> >
>> >> > I'm not sure if I'm setting the timestamp properly
>> >> >
>> >> >
>> >> >
>> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >> >>
>> >> >> You need to manually set the __isset fields when using the thift API
>> >> >> in C++. Since you are trying to insert a super column, you need to
>> set
>> >> >> the super_column __isset field.
>> >> >>
>> >> >> So this:
>> >> >>
>> >> >> new_col.__isset.column = true;
>> >> >>
>> >> >> should become:
>> >> >>
>> >> >> new_col.__isset.super_column = true;
>> >> >>
>> >> >> -Padraig
>> >> >>
>> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> >> <ju...@southcode.com.ar> wrote:
>> >> >> > Hello
>> >> >> >
>> >> >> > I'm trying to add values using supercolumns but I get this error
>> >> >> >
>> >> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >> >> >
>> >> >> > This is my code
>> >> >> >
>> >> >> > // **********
>> >> >> >  ColumnPath new_col;
>> >> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >> >     new_col.column_family.assign("Anonimos");
>> >> >> >     new_col.super_column.assign("Tag");
>> >> >> >
>> >> >> >     client.insert("SocialAds",
>> >> >> >                   "1",
>> >> >> >                   new_col,
>> >> >> >                   "200",
>> >> >> >                   123456789,
>> >> >> >                   ONE);
>> >> >> >
>> >> >> > // **********
>> >> >> >
>> >> >> > What I'm doing wrong?
>> >> >> >
>> >> >> > Thanks
>> >> >> >
>> >> >> > Juan
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>>
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>


-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
Ok,

Now I've changed to:

    ColumnPath new_col;
    new_col.__isset.super_column = true;
    new_col.__isset.column     = true; /* this is required! */
    new_col.column_family.assign("Anonimos");
    new_col.super_column.assign("Tag");
    new_col.column.assign("300");


    client.insert("SocialAds",
                  "1",
                  new_col,
                  "200",
                  12345678,
                  ONE);

I'm not getting any error but no entry on the log either, and the value is
not being inserted...


Thanks


2010/3/15 Jonathan Ellis <jb...@gmail.com>

> Ah, thrift is letting you set something to be null, that shouldn't be
> legal.  This is fixed in 0.6 svn, btw.
>
> it looks like you are setting new_col.__isset.column to true, but not
> actually assigning it a value.
>
> On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
> <ju...@southcode.com.ar> wrote:
> > This is what the log says:
> >
> > ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line
> 1482)
> > Internal error processing insert
> > java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
> > superColumnName='[B@d0357a', columnName='null')
> >         at
> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
> >         at
> > org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
> >         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
> >         at
> >
> org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
> >         at
> >
> org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
> >         at
> >
> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
> >         at
> >
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
> >         at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> >         at
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> >         at java.lang.Thread.run(Thread.java:619)
> >
> >
> > I need to do replicate this:
> > set SocialAds.Anonimos['122']['Tag']['150'] = '100';
> >
> > from my code...
> >
> > any ideas?
> >
> > thanks in advance
> >
> > Juan
> >
> >
> > 2010/3/15 Jonathan Ellis <jb...@gmail.com>
> >>
> >> check the server log for exception.  and if you are not on 0.5.1 or
> >> 0.6 svn branch, upgrade.
> >>
> >> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
> >> <ju...@southcode.com.ar> wrote:
> >> > Many thanks!
> >> >
> >> > That seems to be useful,
> >> >
> >> > But now I'm getting
> >> >  The error message: "Internal error processing insert"
> >> >
> >> > I'm not sure if I'm setting the timestamp properly
> >> >
> >> >
> >> >
> >> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
> >> >>
> >> >> You need to manually set the __isset fields when using the thift API
> >> >> in C++. Since you are trying to insert a super column, you need to
> set
> >> >> the super_column __isset field.
> >> >>
> >> >> So this:
> >> >>
> >> >> new_col.__isset.column = true;
> >> >>
> >> >> should become:
> >> >>
> >> >> new_col.__isset.super_column = true;
> >> >>
> >> >> -Padraig
> >> >>
> >> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
> >> >> <ju...@southcode.com.ar> wrote:
> >> >> > Hello
> >> >> >
> >> >> > I'm trying to add values using supercolumns but I get this error
> >> >> >
> >> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
> >> >> >
> >> >> > This is my code
> >> >> >
> >> >> > // **********
> >> >> >  ColumnPath new_col;
> >> >> >     new_col.__isset.column     = true; /* this is required! */
> >> >> >     new_col.column_family.assign("Anonimos");
> >> >> >     new_col.super_column.assign("Tag");
> >> >> >
> >> >> >     client.insert("SocialAds",
> >> >> >                   "1",
> >> >> >                   new_col,
> >> >> >                   "200",
> >> >> >                   123456789,
> >> >> >                   ONE);
> >> >> >
> >> >> > // **********
> >> >> >
> >> >> > What I'm doing wrong?
> >> >> >
> >> >> > Thanks
> >> >> >
> >> >> > Juan
> >> >> >
> >> >> >
> >> >
> >> >
> >> >
> >>
> >
> >
> >
>



-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: SuperColumns in C++ API

Posted by Jonathan Ellis <jb...@gmail.com>.
Ah, thrift is letting you set something to be null, that shouldn't be
legal.  This is fixed in 0.6 svn, btw.

it looks like you are setting new_col.__isset.column to true, but not
actually assigning it a value.

On Mon, Mar 15, 2010 at 3:14 PM, Juan Manuel Garcia del Moral
<ju...@southcode.com.ar> wrote:
> This is what the log says:
>
> ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line 1482)
> Internal error processing insert
> java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
> superColumnName='[B@d0357a', columnName='null')
>         at
> org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
>         at
> org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
>         at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
>         at
> org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
>         at
> org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
>         at
> org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
>         at
> org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:619)
>
>
> I need to do replicate this:
> set SocialAds.Anonimos['122']['Tag']['150'] = '100';
>
> from my code...
>
> any ideas?
>
> thanks in advance
>
> Juan
>
>
> 2010/3/15 Jonathan Ellis <jb...@gmail.com>
>>
>> check the server log for exception.  and if you are not on 0.5.1 or
>> 0.6 svn branch, upgrade.
>>
>> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > Many thanks!
>> >
>> > That seems to be useful,
>> >
>> > But now I'm getting
>> >  The error message: "Internal error processing insert"
>> >
>> > I'm not sure if I'm setting the timestamp properly
>> >
>> >
>> >
>> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>> >>
>> >> You need to manually set the __isset fields when using the thift API
>> >> in C++. Since you are trying to insert a super column, you need to set
>> >> the super_column __isset field.
>> >>
>> >> So this:
>> >>
>> >> new_col.__isset.column = true;
>> >>
>> >> should become:
>> >>
>> >> new_col.__isset.super_column = true;
>> >>
>> >> -Padraig
>> >>
>> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> >> <ju...@southcode.com.ar> wrote:
>> >> > Hello
>> >> >
>> >> > I'm trying to add values using supercolumns but I get this error
>> >> >
>> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >> >
>> >> > This is my code
>> >> >
>> >> > // **********
>> >> >  ColumnPath new_col;
>> >> >     new_col.__isset.column     = true; /* this is required! */
>> >> >     new_col.column_family.assign("Anonimos");
>> >> >     new_col.super_column.assign("Tag");
>> >> >
>> >> >     client.insert("SocialAds",
>> >> >                   "1",
>> >> >                   new_col,
>> >> >                   "200",
>> >> >                   123456789,
>> >> >                   ONE);
>> >> >
>> >> > // **********
>> >> >
>> >> > What I'm doing wrong?
>> >> >
>> >> > Thanks
>> >> >
>> >> > Juan
>> >> >
>> >> >
>> >
>> >
>> >
>>
>
>
>

Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
This is what the log says:

ERROR [pool-1-thread-8] 2010-03-15 15:54:06,753 Cassandra.java (line 1482)
Internal error processing insert
java.lang.AssertionError: QueryPath(columnFamilyName='Anonimos',
superColumnName='[B@d0357a', columnName='null')
        at
org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:165)
        at
org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:159)
        at org.apache.cassandra.db.RowMutation.add(RowMutation.java:159)
        at
org.apache.cassandra.thrift.CassandraServer.insert(CassandraServer.java:351)
        at
org.apache.cassandra.thrift.Cassandra$Processor$insert.process(Cassandra.java:1474)
        at
org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:1115)
        at
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)


I need to do replicate this:
set SocialAds.Anonimos['122']['Tag']['150'] = '100';

from my code...

any ideas?

thanks in advance

Juan


2010/3/15 Jonathan Ellis <jb...@gmail.com>

> check the server log for exception.  and if you are not on 0.5.1 or
> 0.6 svn branch, upgrade.
>
> On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
> <ju...@southcode.com.ar> wrote:
> > Many thanks!
> >
> > That seems to be useful,
> >
> > But now I'm getting
> >  The error message: "Internal error processing insert"
> >
> > I'm not sure if I'm setting the timestamp properly
> >
> >
> >
> > 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
> >>
> >> You need to manually set the __isset fields when using the thift API
> >> in C++. Since you are trying to insert a super column, you need to set
> >> the super_column __isset field.
> >>
> >> So this:
> >>
> >> new_col.__isset.column = true;
> >>
> >> should become:
> >>
> >> new_col.__isset.super_column = true;
> >>
> >> -Padraig
> >>
> >> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
> >> <ju...@southcode.com.ar> wrote:
> >> > Hello
> >> >
> >> > I'm trying to add values using supercolumns but I get this error
> >> >
> >> > ERROR: supercolumn parameter is not optional for super CF Anonimos
> >> >
> >> > This is my code
> >> >
> >> > // **********
> >> >  ColumnPath new_col;
> >> >     new_col.__isset.column     = true; /* this is required! */
> >> >     new_col.column_family.assign("Anonimos");
> >> >     new_col.super_column.assign("Tag");
> >> >
> >> >     client.insert("SocialAds",
> >> >                   "1",
> >> >                   new_col,
> >> >                   "200",
> >> >                   123456789,
> >> >                   ONE);
> >> >
> >> > // **********
> >> >
> >> > What I'm doing wrong?
> >> >
> >> > Thanks
> >> >
> >> > Juan
> >> >
> >> >
> >
> >
> >
>
>

Re: SuperColumns in C++ API

Posted by Jonathan Ellis <jb...@gmail.com>.
check the server log for exception.  and if you are not on 0.5.1 or
0.6 svn branch, upgrade.

On Mon, Mar 15, 2010 at 12:47 PM, Juan Manuel Garcia del Moral
<ju...@southcode.com.ar> wrote:
> Many thanks!
>
> That seems to be useful,
>
> But now I'm getting
>  The error message: "Internal error processing insert"
>
> I'm not sure if I'm setting the timestamp properly
>
>
>
> 2010/3/15 Padraig O'Sullivan <os...@gmail.com>
>>
>> You need to manually set the __isset fields when using the thift API
>> in C++. Since you are trying to insert a super column, you need to set
>> the super_column __isset field.
>>
>> So this:
>>
>> new_col.__isset.column = true;
>>
>> should become:
>>
>> new_col.__isset.super_column = true;
>>
>> -Padraig
>>
>> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
>> <ju...@southcode.com.ar> wrote:
>> > Hello
>> >
>> > I'm trying to add values using supercolumns but I get this error
>> >
>> > ERROR: supercolumn parameter is not optional for super CF Anonimos
>> >
>> > This is my code
>> >
>> > // **********
>> >  ColumnPath new_col;
>> >     new_col.__isset.column     = true; /* this is required! */
>> >     new_col.column_family.assign("Anonimos");
>> >     new_col.super_column.assign("Tag");
>> >
>> >     client.insert("SocialAds",
>> >                   "1",
>> >                   new_col,
>> >                   "200",
>> >                   123456789,
>> >                   ONE);
>> >
>> > // **********
>> >
>> > What I'm doing wrong?
>> >
>> > Thanks
>> >
>> > Juan
>> >
>> >
>
>
>
> --
> Juan Manuel García del Moral
> Southcode Global IT Resources
> jm@southcode.com.ar
> http://www.southcode.com.ar
>
>

Re: SuperColumns in C++ API

Posted by Juan Manuel Garcia del Moral <ju...@southcode.com.ar>.
Many thanks!

That seems to be useful,

But now I'm getting
 The error message: "Internal error processing insert"

I'm not sure if I'm setting the timestamp properly



2010/3/15 Padraig O'Sullivan <os...@gmail.com>

> You need to manually set the __isset fields when using the thift API
> in C++. Since you are trying to insert a super column, you need to set
> the super_column __isset field.
>
> So this:
>
> new_col.__isset.column = true;
>
> should become:
>
> new_col.__isset.super_column = true;
>
> -Padraig
>
> On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
> <ju...@southcode.com.ar> wrote:
> > Hello
> >
> > I'm trying to add values using supercolumns but I get this error
> >
> > ERROR: supercolumn parameter is not optional for super CF Anonimos
> >
> > This is my code
> >
> > // **********
> >  ColumnPath new_col;
> >     new_col.__isset.column     = true; /* this is required! */
> >     new_col.column_family.assign("Anonimos");
> >     new_col.super_column.assign("Tag");
> >
> >     client.insert("SocialAds",
> >                   "1",
> >                   new_col,
> >                   "200",
> >                   123456789,
> >                   ONE);
> >
> > // **********
> >
> > What I'm doing wrong?
> >
> > Thanks
> >
> > Juan
> >
> >
>



-- 
Juan Manuel García del Moral
Southcode Global IT Resources
jm@southcode.com.ar
http://www.southcode.com.ar

Re: SuperColumns in C++ API

Posted by Padraig O'Sullivan <os...@gmail.com>.
You need to manually set the __isset fields when using the thift API
in C++. Since you are trying to insert a super column, you need to set
the super_column __isset field.

So this:

new_col.__isset.column = true;

should become:

new_col.__isset.super_column = true;

-Padraig

On Mon, Mar 15, 2010 at 12:36 PM, Juan Manuel Garcia del Moral
<ju...@southcode.com.ar> wrote:
> Hello
>
> I'm trying to add values using supercolumns but I get this error
>
> ERROR: supercolumn parameter is not optional for super CF Anonimos
>
> This is my code
>
> // **********
>  ColumnPath new_col;
>     new_col.__isset.column     = true; /* this is required! */
>     new_col.column_family.assign("Anonimos");
>     new_col.super_column.assign("Tag");
>
>     client.insert("SocialAds",
>                   "1",
>                   new_col,
>                   "200",
>                   123456789,
>                   ONE);
>
> // **********
>
> What I'm doing wrong?
>
> Thanks
>
> Juan
>
>