Files
scylladb/tools/scylla-sstable-scripts/keys.lua
Avi Kivity f3eade2f62 treewide: relicense to ScyllaDB-Source-Available-1.0
Drop the AGPL license in favor of a source-available license.
See the blog post [1] for details.

[1] https://www.scylladb.com/2024/12/18/why-were-moving-to-a-source-available-license/
2024-12-18 17:45:13 +02:00

105 lines
2.2 KiB
Lua

--
-- Copyright (C) 2024-present ScyllaDB
--
-- SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
--
-- Dumps all keys from an sstable
--
-- Only partition and cluster keys are dumped.
-- Example output -- excerpt from a run on an sstable from system_schema.columns:
--
-- [
-- {
-- "key": {
-- "token": "5501786289152180687",
-- "raw": "000d73797374656d5f747261636573",
-- "key_size": 15,
-- "value": "system_traces"
-- },
-- "clustering_elements": [
-- {
-- "type": "range-tombstone-change",
-- "key": {
-- "raw": "00066576656e7473",
-- "key_size": 8,
-- "value": "events"
-- }
-- },
-- {
-- "type": "clustering-row",
-- "key": {
-- "raw": "00066576656e747300086163746976697479",
-- "key_size": 18,
-- "value": "events:activity"
-- }
-- }
-- ]
-- }
-- ]
writer = Scylla.new_json_writer()
function write_key(obj)
writer:start_object()
if obj.token then
writer:key("token")
writer:string(tostring(obj.token))
end
raw_key = obj.key:to_hex()
writer:key("raw")
writer:string(raw_key)
writer:key("key_size")
writer:int(raw_key:len() / 2) -- to_hex() converts each byte to 2 characters
writer:key("value")
writer:string(tostring(obj.key))
writer:end_object()
end
function consume_stream_start()
writer:start_array()
end
function consume_partition_start(ps)
writer:start_object()
writer:key("key")
write_key(ps)
writer:key("clustering_elements")
writer:start_array()
end
function consume_clustering_row(cr)
writer:start_object()
writer:key("type")
writer:string("clustering-row")
writer:key("key")
write_key(cr)
writer:end_object()
end
function consume_range_tombstone_change(crt)
writer:start_object()
writer:key("type")
writer:string("range-tombstone-change")
if crt.key then
writer:key("key")
write_key(crt)
end
writer:end_object()
end
function consume_partition_end()
writer:end_array()
writer:end_object()
end
function consume_stream_end()
writer:end_array()
end