我需要了解cqlsh如何执行自动完成,因为我想在create table语句的自动完成中包含自定义压缩策略。我通常通过在代码中的某处放置断点然后遵循流程来完成此操作。但我不知道如何用cqlsh做这个,因为我没有看到主要的方法。如何调试cqlsh以更好地了解我需要在哪里实现它?可能不相关,但我正在使用v3.11。
Cqlsh是一个python工具,它位于$CASSANDRA_HOME/bin/cqlsh.py
如果要向cqlsh添加自定义压缩策略,则必须编辑位于$CASSANDRA_HOME//pylib/cqlshlib/cqlhandling.py
的依赖文件
找到available_compaction_classes
字段并添加您的字段。
available_compaction_classes = (
'LeveledCompactionStrategy',
'SizeTieredCompactionStrategy',
'DateTieredCompactionStrategy',
'TimeWindowCompactionStrategy',
'MyCompactionStrategy'
)
在这里,我添加了MyCompactionStrategy
。
现在保存更改并重新登录,您将获得自动完成以进行压缩
cassandra@cqlsh:titan> CREATE TABLE test (id int primary key, data text) WITH compaction = {'class': '
DateTieredCompactionStrategy LeveledCompactionStrategy MyCompactionStrategy SizeTieredCompactionStrategy TimeWindowCompactionStrategy
cqlsh是使用python编写的,因此您可以使用任何python编辑器来调试代码。我正在使用的一个这样的python编辑器是JetBrains PyCharm你可以在这个编辑器中从“Cassandra installed directory \ bin”打开cqlsh.py脚本,并在调试模式下运行cqlsh.py。运行/调试时使用控制台视图来提供输入。顺便说一句,我正在使用PyCharm。
cqlsh:demo> TRACING ON
Now Tracing is enabled
有时这种级别的日志记录足以进行调试。