Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

修复bug并更新文档 #675

Merged
merged 7 commits into from
Nov 1, 2024
1 change: 1 addition & 0 deletions docs/zh/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ inception set check_dml_limit = true;

参数 | 默认值 | 可选范围 | 说明
------------ | ------------- | ------------ | ------------
alter_auto_merge | false | true,false | 当同一个表出现多条alter table/create index/drop index语句时,goInception会将这些SQL合并成一条,并将合并后的SQL连同原始SQL的校验结果一起返回
check_autoincrement_datatype | false | true,false | 当建表时自增列的类型不为int或者bigint时报错
check_autoincrement_init_value | false | true,false | 当建表时自增列的值指定的不为1,则报错
check_autoincrement_name | false | true,false | 建表时,如果指定的自增列的名字不为ID,则报错,说明是有意义的,给提示
Expand Down
3 changes: 2 additions & 1 deletion docs/zh/result.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,12 @@ goInception返回结果集的结构如下:
- 如果执行成功则返回Execute Successfully,否则返回Execute failed,
- 如果备份成功,则在后面追加Backup successfully,否则追加Backup failed,
- 这个列的返回信息是为了将结果集直接输出而设置的,如果在具体使用过程中,为了更友好的显示,可以在这基础上再做加工处理。
1. `error_message` 错误信息。用来表示出错错误信息,这里包括一条语句中所有的错误信息,用换行符分隔,但有时候如果某一个错误导致不能继续分析了,则后面的错误就不能显示出来。如果没有出错,则返回NULL。而对于执行及备份错误,因为对于一条语句,这样的错误只会有一次,那么执行错误会在后面追加“execute:具体的执行错误原因”,如果是备份出错,则在后面追加“backup:具体的备份错误原因”。
1. `error_message` 错误信息。用来表示出错错误信息,这里包括一条语句中所有的错误信息,用换行符分隔,但有时候如果某一个错误导致不能继续分析了,则后面的错误就不能显示出来。如果没有出错,则返回NULL。而对于执行及备份错误,因为对于一条语句,这样的错误只会有一次,那么执行错误会在后面追加“execute:具体的执行错误原因”,如果是备份出错,则在后面追加“backup:具体的备份错误原因”。如果设置参数alter_auto_merge=true,则合并后的SQL行该字段会显示“MERGED”。
1. `sql` 用来表示当前检查的是哪条sql语句
1. `affected_rows` 执行时预计影响行数,在执行时显示的是真实影响行数。
1. `sequence` 这个列与上面说的备份功能有关系,其实就是对应**$$Inception_backup_information$$**表中的 opid_time 这个列,一一对应,这就为前端应用在针对某一操作回滚找到了入口,每次执行都会产生一个序号,如果要回滚,则就使用这个值从备份表中找到对应的回滚语句执行即可。详见[备份功能](backup.html)
1. `backup_dbname` 这个列表示的是当前语句产生的备份信息,存储在备份服务器的哪个数据库中,这是一个字符串类型的值,只针对需要备份的语句,数据库名由IP地址、端口、源数据库名组成,由下划线连接。详见[备份功能](backup.html)
1. `execute_time` 这个列表示当前语句执行时间,单位为秒,精确到小数点后两位。列类型为字符串,使用时可能需要转换成DOUBLE类型的值,如果只是审核而不执行,则这个列返回的值为0。
1. `sqlsha1` 这个列用来存储当前这个语句的一个HASH值,这是用来标识这个语句是不是会使用OSC功能,如果返回信息中有值,则表示这个语句在执行的时候会使用OSC,因为在执行前,会有一次单独的审核操作,此时上层已经可以拿到这个值,审核通过之后,语句是不会改变的,当然这个值也不会改变,那么在执行时就可以使用这个值来查看OSC执行的进度等信息,这个值一般长的样子如下:*D0210DFF35F0BC0A7C95CD98F5BCD4D9B0CA8154,具体其它信息,请参考 [DDL变更:pt-osc](osc.html)和 [DDL变更:gh-ost](ghost.html)
1. `backup_time` 生成当前SQL的备份语句耗时。
1. `need_merge` 当前SQL是否可以和其他SQL合并成一条。0代表不可以;-1代表当前SQL是已经合并过的;其他大于0的数字代表可以合并,具体数值和已合并SQL行(即当前字段值为-1的行)的order_id值一样。
2 changes: 1 addition & 1 deletion session/session_inception.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ func (s *session) executeInc(ctx context.Context, sql string) (recordSets []sqle
continue
case *ast.InceptionCommitStmt:
/******* jwx added 将对同一个表的多条alter语句合并成一条 ******/
if s.inc.AlterAutoMerge {
if s.inc.AlterAutoMerge && s.opt.Check && !s.opt.Execute {
for _, info := range s.alterTableInfoList {
if len(info.alterStmtList) >= 2 {
merged := info.alterStmtList[0]
Expand Down
Loading