暂无图片
GBase 8s里如何获取并显示ESQLC程序发送的SQL语句?
我来答
分享
Dr.王
2022-01-21
GBase 8s里如何获取并显示ESQLC程序发送的SQL语句?

环境变量的设置,和一些详细的语句有哪些?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
Dr.王

有些时候, 需要获取并分析GBase8s ESQL/C程序与数据库服务器之间交互的信息。

这个时候就可以设定环境变量SQLIDEBUG, 例如:

export SQLIDEBUG=2:/tmp/sqlidebug_20220120

其中,2是常量, “:” 冒号后边的生成的文件前缀名称。

 

设定完毕后,执行esql程序,例如编译执行CSDK中的demo/esqlc/demo1.ec

demo1.ec中包含下面的SQL语句:

编译demo1.ec, 在demo/esqlc目录下执行make demo1

编译完毕后,执行./demo1

检查/tmp目录下生成的文件:


通过执行sqliprint命令,参数为/tmp目录下刚刚生成的文件


就可以查看ESQL/C程序与数据库服务器之间交互信息了,以下是发送的SQL语句信息节选:


上图中包含客户端向服务器发送的信息:

1. C->S 中的C是指客户端, S是指服务器端, ->是方向。

C->S就是客户端向服务器端发送指令。

2. SQ_COMMAND,表明发送的是SQL语句

CMD是具体的SQL语句

3. SQ_NDESCRIBE,表明客户端需要服务器端返回SQL语句的描述信息。

4. SQ_EOT,表明命令结束。

 

服务器向客户端发送的信息:

1) S->C: 表明是服务器端向客户端发送的信息。

2) SQ_DESCRIBE: 与客户端的SQ_NDESCRIBE向对应,是服务器端向客户端返回的SQL语句描述信息, 描述信息中包含了

2.1) SQL语句的类型 stmt_type

2.2) SQL语句返回的各个列的信息,如列名称,列类型,列长度等等。

 

 

 

暂无图片 评论
暂无图片 有用 0
暂无图片
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏