如何调试cqlsh?

How to debug cqlsh?

我需要了解 cqlsh 如何进行自动完成,因为我想在 create table 语句的自动完成中包含自定义压缩策略。我通常通过在代码中的某处放置一个断点然后跟随流程来做到这一点。但是我不确定如何使用 cqlsh 执行此操作,因为我没有看到主要方法。我如何调试 cqlsh 以更好地了解我需要在哪里实现它? 可能不相关,但我使用的是 v3.11。

cqlsh 是使用 python 编写的,因此您可以使用任何 python 编辑器来调试代码。我正在使用的 python 编辑器是 JetBrains PyCharm 您可以在此编辑器中从 "Cassandra installed directory\bin" 打开 cqlsh.py 脚本,然后运行 cqlsh.py 处于调试模式。而 running/debugging 使用控制台视图提供输入。顺便说一句,我正在使用 PyCharm.

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:demo> TRACING ON
Now Tracing is enabled

有时这种级别的日志记录足以进行调试。