HGSQL调试
HGSQL从1.06 1001 版开始支持程序化SQL,可以用于存储过程和触发器。功能非常强大,当没有调试,是一个遗憾。HGSQL的在1.061216版的发布带来了很大的惊喜,开始支持调试了。
HGSQL是解释性语言,它的调试与普通高级语言是不同的,它的调试不是基于CPU的中断,而是基于多线程的。它不仅可以调试到数学表达式,还可以调试到SQL存储过程内部。它的调试框架对外的接口是8个调试函数,使用这8个调试函数,任何人都可以开发自己的HGSQL调试器。HGSQL本身也也做了调试器实现,并集成进了新版的SQLHUB管理器中。下面调试函数和调试器的实现做一些介绍:
调试函数
DEBUG
语法:
debug(sql)
功能:
启用调试器,调试sql
返回值类型:
字符串
示例:
debug('a:=1;b:=2;c:=a+b;') |
+----------------------------+ | DEBUG('a:=1;b:=2;c:=a+b;') | +----------------------------+ | | +----------------------------+ |
DEBUG_CHILDEXP
语法:
debug_childexp([path])
功能:
返回指定路径下的表达式列表,有两个字段,exp:表达式;break:是否有断点path是以逗号间隔的路径字符串,例如:2,3表示从根开始的第2个表达式下的第三个表达式
返回值类型:
字符串
示例:
select * from debug_childexp(''); |
+--------+-------+ | EXP | BREAK | +--------+-------+ | A:=1 | false | | B:=2 | false | | C:=A+B | false | +--------+-------+ |
DEBUG_BREAK
语法:
debug_break(path)
功能:
在指定路径上设置断点
返回值类型:
字符串
示例:
debug_break(1); |
+----------------+ | DEBUG_BREAK(1) | +----------------+ | | +----------------+ |
select * from debug_childexp(''); |
+--------+-------+ | EXP | BREAK | +--------+-------+ | A:=1 | true | | B:=2 | false | | C:=A+B | false | +--------+-------+ |
DEBUG_UNBREAK
语法:
debug_unbreak(path)
功能:
取消指定路径上的断点
返回值类型:
空串
示例:
debug_unbreak(1) |
+------------------+ | DEBUG_UNBREAK(1) | +------------------+ | | +------------------+ |
select * from debug_childexp('') |
+--------+-------+ | EXP | BREAK | +--------+-------+ | A:=1 | false | | B:=2 | false | | C:=A+B | false | +--------+-------+ |
DEBUG_RUN
语法:
debug_run()
功能:
开始执行调试,遇到断点返回该断点的路径,否则返回空字符串
返回值类型:
字符串
示例:
debug_run(); |
+-------------+ | DEBUG_RUN() | +-------------+ | 2 | +-------------+ |
DEBUG_VARSET
语法:
debug_varset(path)
功能:
查看指定路径上的变量表
返回值类型:
数据集
示例:
select * from debug_varset(1); |
+--------+-------+ | NAME | VALUE | +--------+-------+ | A | 1 | | RESULT | 1 | +--------+-------+ |
DEBUG_EVAL
语法:
debug_var(path,strExp)
功能:
在指定变量上执行表达式
返回值类型:
数据集
示例:
select * from debug_eval(1,'a + 20'); |
+----+ | F1 | +----+ | 21 | +----+ |
DEBUG_STOP
语法:
debug_stop()
功能:
停止调试
返回值类型:
字符串
示例:
debug_stop() |
+--------------+ | DEBUG_STOP() | +--------------+ | | +--------------+ |
调试器
在命令区输入SQL语句,点击调试按钮
,系统打开调试器,如下图:

调试过程:
² 点击
设置断点
² 点击
开始调试
² 点击任意结点查看变量
² 点击
,系统显示表达式输入框,如下图:

输入表达式,系统显示执行结果,如下图:

提示:如果选择变量表中记录,系统会把变量名称作为表达式。
² 点击
停止调试,或点击
重新开始调试。
备注:如果是sql存储过程,可以调试到存储过程内部,如下图:










