Wei Deng created CASSANDRA-11694: ------------------------------------ Summary: sstabledump doesn't represent static columns correctly Key: CASSANDRA-11694 URL: https://issues.apache.org/jira/browse/CASSANDRA-11694 Project: Cassandra Issue Type: Bug Components: Tools Reporter: Wei Deng
It appears that the latest trunk code (after fixing CASSANDRA-11654, CASSANDRA-11655 and CASSANDRA-11656) of sstabledump still doesn't handle static columns correctly. Take a look at the following example: {noformat} root@node0:/mnt/ephemeral/cassandra/data/testks/test_static_column-ab5ce7c20b8411e695aeebb3bfdd5790# ~/cassandra-trunk/tools/bin/sstabledump ma-1-big-Data.db -t [ { "partition" : { "key" : [ "1" ], "position" : 0 }, "rows" : [ { "type" : "static_block", "position" : 40, "cells" : [ { "name" : "static0_int", "value" : "3000", "tstamp" : "1461657675565767" }, { "name" : "static1_int", "value" : "4000", "tstamp" : "1461657675565767" } ] }, { "type" : "row", "position" : 40, "clustering" : [ "c1" ], "liveness_info" : { "tstamp" : "1461657663393419" }, "cells" : [ { "name" : "val0_int", "value" : "100" }, { "name" : "val1_set_of_int", "deletion_info" : { "marked_deleted" : "1461657663393418", "local_delete_time" : "1461657663" } }, { "name" : "val1_set_of_int", "path" : [ "1" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "2" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "3" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "4" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "5" ], "value" : "" } ] }, { "type" : "row", "position" : 92, "clustering" : [ "c2" ], "liveness_info" : { "tstamp" : "1461657675565767" }, "cells" : [ { "name" : "val0_int", "value" : "200" }, { "name" : "val1_set_of_int", "deletion_info" : { "marked_deleted" : "1461657675565766", "local_delete_time" : "1461657675" } }, { "name" : "val1_set_of_int", "path" : [ "1" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "2" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "3" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "4" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "5" ], "value" : "" } ] }, { "type" : "row", "position" : 144, "clustering" : [ "c3" ], "liveness_info" : { "tstamp" : "1461657634639043" }, "cells" : [ { "name" : "val0_int", "value" : "300" }, { "name" : "val1_set_of_int", "deletion_info" : { "marked_deleted" : "1461657634639042", "local_delete_time" : "1461657634" } }, { "name" : "val1_set_of_int", "path" : [ "1" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "2" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "3" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "4" ], "value" : "" }, { "name" : "val1_set_of_int", "path" : [ "5" ], "value" : "" } ] } ] } ] {noformat} Note the "position" for the "static_block" and the first "row" are the same (40), which should be incorrect. If you print out in debug mode, you will see the following: {noformat} root@node0:/mnt/ephemeral/cassandra/data/testks/test_static_column-ab5ce7c20b8411e695aeebb3bfdd5790# ~/cassandra-trunk/tools/bin/sstabledump ma-1-big-Data.db -t -d [1]@0 Row[info=[ts=-9223372036854775808] ]: STATIC | [static0_int=3000 ts=1461657675565767], [static1_int=4000 ts=1461657675565767] [1]@0 Row[info=[ts=1461657663393419] ]: c1 | [val0_int=100 ts=1461657663393419], del(val1_set_of_int)=deletedAt=1461657663393418, localDeletion=1461657663, [val1_set_of_int[1]= ts=1461657663393419], [val1_set_of_int[2]= ts=1461657663393419], [val1_set_of_int[3]= ts=1461657663393419], [val1_set_of_int[4]= ts=1461657663393419], [val1_set_of_int[5]= ts=1461657663393419] [1]@92 Row[info=[ts=1461657675565767] ]: c2 | [val0_int=200 ts=1461657675565767], del(val1_set_of_int)=deletedAt=1461657675565766, localDeletion=1461657675, [val1_set_of_int[1]= ts=1461657675565767], [val1_set_of_int[2]= ts=1461657675565767], [val1_set_of_int[3]= ts=1461657675565767], [val1_set_of_int[4]= ts=1461657675565767], [val1_set_of_int[5]= ts=1461657675565767] [1]@144 Row[info=[ts=1461657634639043] ]: c3 | [val0_int=300 ts=1461657634639043], del(val1_set_of_int)=deletedAt=1461657634639042, localDeletion=1461657634, [val1_set_of_int[1]= ts=1461657634639043], [val1_set_of_int[2]= ts=1461657634639043], [val1_set_of_int[3]= ts=1461657634639043], [val1_set_of_int[4]= ts=1461657634639043], [val1_set_of_int[5]= ts=1461657634639043] {noformat} There are three problems in this "-d" output: 1. It printed an invalid timestamp "ts=-9223372036854775808". 2. It printed "@0" twice at the beginning, which should be impossible. 3. It doesn't print "CellPath" component for the collection, which is important, collection type like "set" will only put its element in the Cell Path so if you don't print that you're missing some information in the output. So there are a total of four issues we need to fix when dealing with static columns. -- This message was sent by Atlassian JIRA (v6.3.4#6332)