Hi,

while migrating the reminder of thrift operations in my application I came across a point where I cant find a good hint.

In our old code we used a composite with two strings as row / partition key and a similar composite as column key like this:

    public Composite rowKey() {
        final Composite composite = new Composite();
        composite.addComponent(key1, StringSerializer.get());
        composite.addComponent(key2, StringSerializer.get());
        return composite;
    }

    public Composite columnKey() {
        final Composite composite = new Composite();
        composite.addComponent(key3, StringSerializer.get());
        composite.addComponent(key4, StringSerializer.get());
        return composite;
    }

In cql this columnfamiliy looks like this:

CREATE TABLE foo.bar (
    key blob,
    column1 text,
    column2 text,
    value blob,
    PRIMARY KEY (key, column1, column2)
)

For the columns key3 and key4 became column1 and column2 - but the old rowkey is presented as blob (I can put it into a hex editor and see that key1 and key2 values are in there).

Any pointers to handle this or is this a known issue? I am using now DataStax Java driver for CQL, old connector used thrift. Is there any way to get key1 and key2 back apart from completly rewriting the table? This is what I had expected it to be:

CREATE TABLE foo.bar (
    key1 text,
    key2 text,
    column1 text,
    column2 text,
    value blob,
    PRIMARY KEY ((key1, key2), column1, column2)
)

Cheers,
Jan

Reply via email to