The client is in C++ using libcassandra as the interface to Thrift and Cassandra. I found my problem about 30 seconds after sending the email... I was trying to assign a char* to a string using the string constructor rather than using the assign method of the C++ string class.
Here is the C++ code I'm using to assign a TimeUUID to a string and have it passed successfully to thrift: uuid_t uu; std::string suu uuid_generate_time(uu); suu.assign((char *)uu, 16); This type of assignment will successfully pass a TimeUUID to thrift and have it added as the SuperColumn name to Cassandra. Hope this helps someone else in the future. > What language is your client in? > > On Tue, Aug 17, 2010 at 10:27 AM, [email protected] <[email protected]>wrote: > > > I have a ColumnFamily in Cassandra that is of Super type and each > > SuperColumn name is a TimeUUID. I've had no problem using TimeUUID as the > > SuperColumn name until now... > > > > I've looked at the thrift code and I see all of the writeBinary > functions > > expect a std::string as the input which is perfectly fine for > everything > > EXCEPT TimeUUID types. The TimeUUID I'm trying to insert has a 0x00 > > character within it (and apparently that is valid for a TimeUUID). The > > string representation of my TimeUUID is: > > > > cb0b6a00-aa51-11df-9509-7071bc4c56eb > > > > Just to make sure this is accurate I wrote a quick C++ test using > > uuid_parse and I was able to get the valid time back: > > > > 2010/08/17 18:50:12 (format: %Y/%m/%d %H:%M:%S) > > > > The 16-byte hex representation of this UUID is: > > > > 0xCB 0x0B 0x6A 0x00 0xAA 0x51 0x11 0xDF 0x95 0x09 0x70 0x71 0xBC 0x4C 0x56 > > 0xEB > > > > When trying to add this SuperColumn I'm obviously getting the error that > > UUID's must be exactly 16 bytes. When the UUID is being converted to a > > string, the copy looks to be stopping after the 3rd byte. > > > > Is there any way around this? This is kind of a show-stopper for me and I > > can't figure out how to workaround it... Any help would be MUCH appreciated. ____________________________________________________________ Obama Urges Homeowners to Refinance If you owe under $729k you probably qualify for Obama's Refi Program http://thirdpartyoffers.juno.com/TGL3131/4c6acbf9e440971f141st04duc
--- Begin Message ---What language is your client in? On Tue, Aug 17, 2010 at 10:27 AM, [email protected] <[email protected]>wrote: > I have a ColumnFamily in Cassandra that is of Super type and each > SuperColumn name is a TimeUUID. I've had no problem using TimeUUID as the > SuperColumn name until now... > > I've looked at the thrift code and I see all of the writeBinary functions > expect a std::string as the input which is perfectly fine for everything > EXCEPT TimeUUID types. The TimeUUID I'm trying to insert has a 0x00 > character within it (and apparently that is valid for a TimeUUID). The > string representation of my TimeUUID is: > > cb0b6a00-aa51-11df-9509-7071bc4c56eb > > Just to make sure this is accurate I wrote a quick C++ test using > uuid_parse and I was able to get the valid time back: > > 2010/08/17 18:50:12 (format: %Y/%m/%d %H:%M:%S) > > The 16-byte hex representation of this UUID is: > > 0xCB 0x0B 0x6A 0x00 0xAA 0x51 0x11 0xDF 0x95 0x09 0x70 0x71 0xBC 0x4C 0x56 > 0xEB > > When trying to add this SuperColumn I'm obviously getting the error that > UUID's must be exactly 16 bytes. When the UUID is being converted to a > string, the copy looks to be stopping after the 3rd byte. > > Is there any way around this? This is kind of a show-stopper for me and I > can't figure out how to workaround it... Any help would be MUCH appreciated. > > > ____________________________________________________________ > Get Free Email with Video Mail & Video Chat! > http://www.juno.com/freeemail?refcd=JUTAGOUT1FREM0210 >
--- End Message ---
