validate

package
v0.0.0-...-3534724 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2023 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Call

func Call(object interface{}, method string, params ...interface{}) error

Call 方法反射

func Match

func Match(r *models.Rule, src string, params ...interface{}) (err error)

Match 正则匹配

func Run

func Run(stmts []*models.Statement, cluster *models.Cluster, ticket *models.Ticket)

Run 调用入口

Types

type ColumnEntry

type ColumnEntry struct {
	Table TableEntry
	Name  string
	Alias string
}

ColumnEntry 抽象语法树需要访问的列

type Context

type Context struct {
	Stmts     []*models.Statement      // 全部等待审核的数据
	Ticket    *models.Ticket           // 等待审核的工单
	Cluster   *models.Cluster          // 目标群集
	Databases []models.Database        // 目标群集所有的用户数据库
	Tables    map[string][]*core.Table // 目标群集上目标数据库的元数据
}

Context 在不同的验证组中共享内容

type DatabaseAlterVldr

type DatabaseAlterVldr struct {
	// contains filtered or unexported fields
}

DatabaseAlterVldr 修改数据库语句相关的审核规则

func (*DatabaseAlterVldr) AvailableCharsets

func (v *DatabaseAlterVldr) AvailableCharsets(s *models.Statement, r *models.Rule)

AvailableCharsets 改库允许的字符集 RULE: MDB-L2-001

func (*DatabaseAlterVldr) AvailableCollates

func (v *DatabaseAlterVldr) AvailableCollates(s *models.Statement, r *models.Rule)

AvailableCollates 改库允许的排序规则 RULE: MDB-L2-002

func (*DatabaseAlterVldr) Call

func (v *DatabaseAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*DatabaseAlterVldr) CharsetCollateMustMatch

func (v *DatabaseAlterVldr) CharsetCollateMustMatch(s *models.Statement, r *models.Rule)

CharsetCollateMustMatch 改库的字符集与排序规则必须匹配 RULE: MDB-L2-003

func (*DatabaseAlterVldr) ColumnInfo

func (v *DatabaseAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*DatabaseAlterVldr) DatabaseInfo

func (v *DatabaseAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*DatabaseAlterVldr) Enabled

func (v *DatabaseAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*DatabaseAlterVldr) GetRules

func (v *DatabaseAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*DatabaseAlterVldr) IndexInfo

func (v *DatabaseAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*DatabaseAlterVldr) SetContext

func (v *DatabaseAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*DatabaseAlterVldr) SetGroup

func (v *DatabaseAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*DatabaseAlterVldr) TableInfo

func (v *DatabaseAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*DatabaseAlterVldr) TargetDatabaseDoesNotExist

func (v *DatabaseAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库不存在 RULE: MDB-L2-004

func (*DatabaseAlterVldr) Validate

func (v *DatabaseAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*DatabaseAlterVldr) Walk

func (v *DatabaseAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*DatabaseAlterVldr) WalkSubquery

func (v *DatabaseAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type DatabaseCreateVldr

type DatabaseCreateVldr struct {
	// contains filtered or unexported fields
}

DatabaseCreateVldr 创建数据库语句相关的审核规则

func (*DatabaseCreateVldr) AvailableCharsets

func (v *DatabaseCreateVldr) AvailableCharsets(s *models.Statement, r *models.Rule)

AvailableCharsets 建库允许的字符集 RULE: CDB-L2-001

func (*DatabaseCreateVldr) AvailableCollates

func (v *DatabaseCreateVldr) AvailableCollates(s *models.Statement, r *models.Rule)

AvailableCollates 建库允许的排序规则 RULE: CDB-L2-002

func (*DatabaseCreateVldr) Call

func (v *DatabaseCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*DatabaseCreateVldr) CharsetCollateMustMatch

func (v *DatabaseCreateVldr) CharsetCollateMustMatch(s *models.Statement, r *models.Rule)

CharsetCollateMustMatch 建库的字符集与排序规则必须匹配 RULE: CDB-L2-003

func (*DatabaseCreateVldr) ColumnInfo

func (v *DatabaseCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*DatabaseCreateVldr) DatabaseInfo

func (v *DatabaseCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*DatabaseCreateVldr) DatabaseNameLowerCaseRequired

func (v *DatabaseCreateVldr) DatabaseNameLowerCaseRequired(s *models.Statement, r *models.Rule)

DatabaseNameLowerCaseRequired 库名大小写规则 RULE: CDB-L2-005

func (*DatabaseCreateVldr) DatabaseNameMaxLength

func (v *DatabaseCreateVldr) DatabaseNameMaxLength(s *models.Statement, r *models.Rule)

DatabaseNameMaxLength 库名长度规则 RULE: CDB-L2-006

func (*DatabaseCreateVldr) DatabaseNameQualified

func (v *DatabaseCreateVldr) DatabaseNameQualified(s *models.Statement, r *models.Rule)

DatabaseNameQualified 库名标识符规则 RULE: CDB-L2-004

func (*DatabaseCreateVldr) Enabled

func (v *DatabaseCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*DatabaseCreateVldr) GetRules

func (v *DatabaseCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*DatabaseCreateVldr) IndexInfo

func (v *DatabaseCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*DatabaseCreateVldr) SetContext

func (v *DatabaseCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*DatabaseCreateVldr) SetGroup

func (v *DatabaseCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*DatabaseCreateVldr) TableInfo

func (v *DatabaseCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*DatabaseCreateVldr) TargetDatabaseDoesNotExist

func (v *DatabaseCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标数据库已经存在 RULE: CDB-L2-007

func (*DatabaseCreateVldr) Validate

func (v *DatabaseCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*DatabaseCreateVldr) Walk

func (v *DatabaseCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*DatabaseCreateVldr) WalkSubquery

func (v *DatabaseCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type DatabaseDropVldr

type DatabaseDropVldr struct {
	// contains filtered or unexported fields
}

DatabaseDropVldr 删除数据库语句相关的审核规则

func (*DatabaseDropVldr) Call

func (v *DatabaseDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*DatabaseDropVldr) ColumnInfo

func (v *DatabaseDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*DatabaseDropVldr) DatabaseInfo

func (v *DatabaseDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*DatabaseDropVldr) Enabled

func (v *DatabaseDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*DatabaseDropVldr) GetRules

func (v *DatabaseDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*DatabaseDropVldr) IndexInfo

func (v *DatabaseDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*DatabaseDropVldr) SetContext

func (v *DatabaseDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*DatabaseDropVldr) SetGroup

func (v *DatabaseDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*DatabaseDropVldr) TableInfo

func (v *DatabaseDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*DatabaseDropVldr) TargetDatabaseDoesNotExist

func (v *DatabaseDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库不存在 RULE: DDB-L2-001

func (*DatabaseDropVldr) Validate

func (v *DatabaseDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*DatabaseDropVldr) Walk

func (v *DatabaseDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*DatabaseDropVldr) WalkSubquery

func (v *DatabaseDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type DeleteVldr

type DeleteVldr struct {
	// contains filtered or unexported fields
}

DeleteVldr 删除数据语句相关的审核规则

func (*DeleteVldr) Call

func (v *DeleteVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*DeleteVldr) ColumnInfo

func (v *DeleteVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*DeleteVldr) DatabaseInfo

func (v *DeleteVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*DeleteVldr) Enabled

func (v *DeleteVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*DeleteVldr) GetRules

func (v *DeleteVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*DeleteVldr) IndexInfo

func (v *DeleteVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*DeleteVldr) MaxAllowedDeleteRows

func (v *DeleteVldr) MaxAllowedDeleteRows(s *models.Statement, r *models.Rule)

MaxAllowedDeleteRows 单次删除的最大行数 RULE: DEL-L3-001

func (*DeleteVldr) SetContext

func (v *DeleteVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*DeleteVldr) SetGroup

func (v *DeleteVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*DeleteVldr) TableInfo

func (v *DeleteVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*DeleteVldr) TargetColumnDoesNotDoesNotExist

func (v *DeleteVldr) TargetColumnDoesNotDoesNotExist(s *models.Statement, r *models.Rule)

TargetColumnDoesNotDoesNotExist 条件过滤列是否存在 RULE: DEL-L3-004

func (*DeleteVldr) TargetDatabaseDoesNotExist

func (v *DeleteVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DEL-L3-002

func (*DeleteVldr) TargetTableDoesNotDoesNotExist

func (v *DeleteVldr) TargetTableDoesNotDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotDoesNotExist 目标表是否存在 RULE: DEL-L3-003

func (*DeleteVldr) Validate

func (v *DeleteVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*DeleteVldr) Walk

func (v *DeleteVldr) Walk(node ast.Node)

Walk 语法树分析

func (*DeleteVldr) WalkSubquery

func (v *DeleteVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

func (*DeleteVldr) WithoutWhereNotAllowed

func (v *DeleteVldr) WithoutWhereNotAllowed(s *models.Statement, r *models.Rule)

WithoutWhereNotAllowed 不允许没有WHERE的删除 RULE: DEL-L2-001

type EventAlterVldr

type EventAlterVldr struct {
	// contains filtered or unexported fields
}

EventAlterVldr 修改事件语句相关的审核规则

func (*EventAlterVldr) Call

func (v *EventAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*EventAlterVldr) ColumnInfo

func (v *EventAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*EventAlterVldr) DatabaseInfo

func (v *EventAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*EventAlterVldr) Enabled

func (v *EventAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*EventAlterVldr) GetRules

func (v *EventAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*EventAlterVldr) IndexInfo

func (v *EventAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*EventAlterVldr) SetContext

func (v *EventAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*EventAlterVldr) SetGroup

func (v *EventAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*EventAlterVldr) TableInfo

func (v *EventAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*EventAlterVldr) TargetDatabaseDoesNotExist

func (v *EventAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: MEV-L3-001

func (*EventAlterVldr) TargetEventDoesNotExist

func (v *EventAlterVldr) TargetEventDoesNotExist(s *models.Statement, r *models.Rule)

TargetEventDoesNotExist 目标事件是否存在 RULE: MEV-L3-002

func (*EventAlterVldr) Validate

func (v *EventAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*EventAlterVldr) Walk

func (v *EventAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*EventAlterVldr) WalkSubquery

func (v *EventAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type EventCreateVldr

type EventCreateVldr struct {
	// contains filtered or unexported fields
}

EventCreateVldr 创建事件语句相关的审核规则

func (*EventCreateVldr) Call

func (v *EventCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*EventCreateVldr) ColumnInfo

func (v *EventCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*EventCreateVldr) DatabaseInfo

func (v *EventCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*EventCreateVldr) Enabled

func (v *EventCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*EventCreateVldr) EventNameLowerCaseRequired

func (v *EventCreateVldr) EventNameLowerCaseRequired(s *models.Statement, r *models.Rule)

EventNameLowerCaseRequired 事件名大小写规则 RULE: CEV-L2-002

func (*EventCreateVldr) EventNameMaxLength

func (v *EventCreateVldr) EventNameMaxLength(s *models.Statement, r *models.Rule)

EventNameMaxLength 事件名长度规则 RULE: CEV-L2-003

func (*EventCreateVldr) EventNamePrefixRequired

func (v *EventCreateVldr) EventNamePrefixRequired(s *models.Statement, r *models.Rule)

EventNamePrefixRequired 事件名前缀规则 RULE: CEV-L2-004

func (*EventCreateVldr) EventNameQualified

func (v *EventCreateVldr) EventNameQualified(s *models.Statement, r *models.Rule)

EventNameQualified 事件名标识符规则 RULE: CEV-L2-001

func (*EventCreateVldr) GetRules

func (v *EventCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*EventCreateVldr) IndexInfo

func (v *EventCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*EventCreateVldr) SetContext

func (v *EventCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*EventCreateVldr) SetGroup

func (v *EventCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*EventCreateVldr) TableInfo

func (v *EventCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*EventCreateVldr) TargetDatabaseDoesNotExist

func (v *EventCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: CEV-L3-001

func (*EventCreateVldr) TargetEventDoesNotExist

func (v *EventCreateVldr) TargetEventDoesNotExist(s *models.Statement, r *models.Rule)

TargetEventDoesNotExist 目标事件是否存在 RULE: CEV-L3-002

func (*EventCreateVldr) Validate

func (v *EventCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*EventCreateVldr) Walk

func (v *EventCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*EventCreateVldr) WalkSubquery

func (v *EventCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type EventDropVldr

type EventDropVldr struct {
	// contains filtered or unexported fields
}

EventDropVldr 删除事件语句相关的审核规则

func (*EventDropVldr) Call

func (v *EventDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*EventDropVldr) ColumnInfo

func (v *EventDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*EventDropVldr) DatabaseInfo

func (v *EventDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*EventDropVldr) Enabled

func (v *EventDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*EventDropVldr) GetRules

func (v *EventDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*EventDropVldr) IndexInfo

func (v *EventDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*EventDropVldr) SetContext

func (v *EventDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*EventDropVldr) SetGroup

func (v *EventDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*EventDropVldr) TableInfo

func (v *EventDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*EventDropVldr) TargetDatabaseDoesNotExist

func (v *EventDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DEV-L3-001

func (*EventDropVldr) TargetEventDoesNotExist

func (v *EventDropVldr) TargetEventDoesNotExist(s *models.Statement, r *models.Rule)

TargetEventDoesNotExist 目标事件是否存在 RULE: DEV-L3-002

func (*EventDropVldr) Validate

func (v *EventDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*EventDropVldr) Walk

func (v *EventDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*EventDropVldr) WalkSubquery

func (v *EventDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type FuncAlterVldr

type FuncAlterVldr struct {
	// contains filtered or unexported fields
}

FuncAlterVldr 修改函数语句相关的审核规则

func (*FuncAlterVldr) Call

func (v *FuncAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*FuncAlterVldr) ColumnInfo

func (v *FuncAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*FuncAlterVldr) DatabaseInfo

func (v *FuncAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*FuncAlterVldr) Enabled

func (v *FuncAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*FuncAlterVldr) GetRules

func (v *FuncAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*FuncAlterVldr) IndexInfo

func (v *FuncAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*FuncAlterVldr) SetContext

func (v *FuncAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*FuncAlterVldr) SetGroup

func (v *FuncAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*FuncAlterVldr) TableInfo

func (v *FuncAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*FuncAlterVldr) TargetDatabaseDoesNotExist

func (v *FuncAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: MFU-L3-001

func (*FuncAlterVldr) TargetFuncDoesNotExist

func (v *FuncAlterVldr) TargetFuncDoesNotExist(s *models.Statement, r *models.Rule)

TargetFuncDoesNotExist 目标函数是否存在 RULE: MFU-L3-002

func (*FuncAlterVldr) Validate

func (v *FuncAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*FuncAlterVldr) Walk

func (v *FuncAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*FuncAlterVldr) WalkSubquery

func (v *FuncAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type FuncCreateVldr

type FuncCreateVldr struct {
	// contains filtered or unexported fields
}

FuncCreateVldr 创建函数语句相关的审核规则

func (*FuncCreateVldr) Call

func (v *FuncCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*FuncCreateVldr) ColumnInfo

func (v *FuncCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*FuncCreateVldr) DatabaseInfo

func (v *FuncCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*FuncCreateVldr) Enabled

func (v *FuncCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*FuncCreateVldr) FuncNameLowerCaseRequired

func (v *FuncCreateVldr) FuncNameLowerCaseRequired(s *models.Statement, r *models.Rule)

FuncNameLowerCaseRequired 函数名大小写规则 RULE: CFU-L2-002

func (*FuncCreateVldr) FuncNameMaxLength

func (v *FuncCreateVldr) FuncNameMaxLength(s *models.Statement, r *models.Rule)

FuncNameMaxLength 函数名长度规则 RULE: CFU-L2-003

func (*FuncCreateVldr) FuncNamePrefixRequired

func (v *FuncCreateVldr) FuncNamePrefixRequired(s *models.Statement, r *models.Rule)

FuncNamePrefixRequired 函数名前缀规则 RULE: CFU-L2-004

func (*FuncCreateVldr) FuncNameQuilified

func (v *FuncCreateVldr) FuncNameQuilified(s *models.Statement, r *models.Rule)

FuncNameQuilified 函数名标识符规则 RULE: CFU-L2-001

func (*FuncCreateVldr) GetRules

func (v *FuncCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*FuncCreateVldr) IndexInfo

func (v *FuncCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*FuncCreateVldr) SetContext

func (v *FuncCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*FuncCreateVldr) SetGroup

func (v *FuncCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*FuncCreateVldr) TableInfo

func (v *FuncCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*FuncCreateVldr) TargetDatabaseDoesNotExist

func (v *FuncCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: CFU-L3-001

func (*FuncCreateVldr) TargetFuncDoesNotExist

func (v *FuncCreateVldr) TargetFuncDoesNotExist(s *models.Statement, r *models.Rule)

TargetFuncDoesNotExist 目标函数是否存在 RULE: CFU-L3-002

func (*FuncCreateVldr) Validate

func (v *FuncCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*FuncCreateVldr) Walk

func (v *FuncCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*FuncCreateVldr) WalkSubquery

func (v *FuncCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type FuncDropVldr

type FuncDropVldr struct {
	// contains filtered or unexported fields
}

FuncDropVldr 删除函数语句相关的审核规则

func (*FuncDropVldr) Call

func (v *FuncDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*FuncDropVldr) ColumnInfo

func (v *FuncDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*FuncDropVldr) DatabaseInfo

func (v *FuncDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*FuncDropVldr) Enabled

func (v *FuncDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*FuncDropVldr) GetRules

func (v *FuncDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*FuncDropVldr) IndexInfo

func (v *FuncDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*FuncDropVldr) SetContext

func (v *FuncDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*FuncDropVldr) SetGroup

func (v *FuncDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*FuncDropVldr) TableInfo

func (v *FuncDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*FuncDropVldr) TargetDatabaseDoesNotExist

func (v *FuncDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DFU-L3-001

func (*FuncDropVldr) TargetFuncDoesNotExist

func (v *FuncDropVldr) TargetFuncDoesNotExist(s *models.Statement, r *models.Rule)

TargetFuncDoesNotExist 目标函数是否存在 RULE: DFU-L3-002

func (*FuncDropVldr) Validate

func (v *FuncDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*FuncDropVldr) Walk

func (v *FuncDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*FuncDropVldr) WalkSubquery

func (v *FuncDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type IndexCreateVldr

type IndexCreateVldr struct {
	// contains filtered or unexported fields
}

IndexCreateVldr 创建索引语句相关的审核规则

func (*IndexCreateVldr) Call

func (v *IndexCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*IndexCreateVldr) ColumnInfo

func (v *IndexCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*IndexCreateVldr) DatabaseInfo

func (v *IndexCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*IndexCreateVldr) Enabled

func (v *IndexCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*IndexCreateVldr) GetRules

func (v *IndexCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*IndexCreateVldr) IndexColumnDuplicate

func (v *IndexCreateVldr) IndexColumnDuplicate(s *models.Statement, r *models.Rule)

IndexColumnDuplicate 组合索引中是否有重复列 RULE: CIX-L2-006

func (*IndexCreateVldr) IndexInfo

func (v *IndexCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*IndexCreateVldr) IndexNameDuplicate

func (v *IndexCreateVldr) IndexNameDuplicate(s *models.Statement, r *models.Rule)

IndexNameDuplicate 索引名是否重复 RULE: CIX-L3-005

func (*IndexCreateVldr) IndexNameLowerCaseRequired

func (v *IndexCreateVldr) IndexNameLowerCaseRequired(s *models.Statement, r *models.Rule)

IndexNameLowerCaseRequired 索引名大小写规则 RULE: CIX-L2-003

func (*IndexCreateVldr) IndexNameMaxLength

func (v *IndexCreateVldr) IndexNameMaxLength(s *models.Statement, r *models.Rule)

IndexNameMaxLength 索引名长度规则 RULE: CIX-L2-004

func (*IndexCreateVldr) IndexNamePrefixRequired

func (v *IndexCreateVldr) IndexNamePrefixRequired(s *models.Statement, r *models.Rule)

IndexNamePrefixRequired 索引名前缀规则 RULE: CIX-L2-005

func (*IndexCreateVldr) IndexNameQualified

func (v *IndexCreateVldr) IndexNameQualified(s *models.Statement, r *models.Rule)

IndexNameQualified 索引名标识符规则 RULE: CIX-L2-002

func (*IndexCreateVldr) IndexOnBlobColumnNotAllowed

func (v *IndexCreateVldr) IndexOnBlobColumnNotAllowed(s *models.Statement, r *models.Rule)

IndexOnBlobColumnNotAllowed 是否允许在BLOB/TEXT列上建索引 RULE: CIX-L3-007

func (*IndexCreateVldr) IndexOverlayNotAllowed

func (v *IndexCreateVldr) IndexOverlayNotAllowed(s *models.Statement, r *models.Rule)

IndexOverlayNotAllowed 索引内容是否重复 RULE: CIX-L3-004

func (*IndexCreateVldr) MaxAllowedIndexColumnCount

func (v *IndexCreateVldr) MaxAllowedIndexColumnCount(s *models.Statement, r *models.Rule)

MaxAllowedIndexColumnCount 组合索引允许的最大列数 RULE: CIX-L2-001

func (*IndexCreateVldr) MaxAllowedIndexCount

func (v *IndexCreateVldr) MaxAllowedIndexCount(s *models.Statement, r *models.Rule)

MaxAllowedIndexCount 最多能建多少个索引 RULE: CIX-L3-006

func (*IndexCreateVldr) SetContext

func (v *IndexCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*IndexCreateVldr) SetGroup

func (v *IndexCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*IndexCreateVldr) TableInfo

func (v *IndexCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*IndexCreateVldr) TargetColumnDoesNotExist

func (v *IndexCreateVldr) TargetColumnDoesNotExist(s *models.Statement, r *models.Rule)

TargetColumnDoesNotExist 添加索引的列是否存在 RULE: CIX-L3-003

func (*IndexCreateVldr) TargetDatabaseDoesNotExist

func (v *IndexCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 添加索引的表所属库是否存在 RULE: CIX-L3-001

func (*IndexCreateVldr) TargetTableDoesNotExist

func (v *IndexCreateVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 条件索引的表是否存在 RULE: CIX-L3-002

func (*IndexCreateVldr) Validate

func (v *IndexCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*IndexCreateVldr) Walk

func (v *IndexCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*IndexCreateVldr) WalkSubquery

func (v *IndexCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type IndexDropVldr

type IndexDropVldr struct {
	// contains filtered or unexported fields
}

IndexDropVldr 删除索引语句相关的审核规则

func (*IndexDropVldr) Call

func (v *IndexDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*IndexDropVldr) ColumnInfo

func (v *IndexDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*IndexDropVldr) DatabaseInfo

func (v *IndexDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*IndexDropVldr) Enabled

func (v *IndexDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*IndexDropVldr) GetRules

func (v *IndexDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*IndexDropVldr) IndexInfo

func (v *IndexDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*IndexDropVldr) SetContext

func (v *IndexDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*IndexDropVldr) SetGroup

func (v *IndexDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*IndexDropVldr) TableInfo

func (v *IndexDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*IndexDropVldr) TargetDatabaseDoesNotExist

func (v *IndexDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: RIX-L3-001

func (*IndexDropVldr) TargetIndexDoesNotExist

func (v *IndexDropVldr) TargetIndexDoesNotExist(s *models.Statement, r *models.Rule)

TargetIndexDoesNotExist 目标索引是否存在 RULE: RIX-L3-003

func (*IndexDropVldr) TargetTableDoesNotExist

func (v *IndexDropVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: RIX-L3-002

func (*IndexDropVldr) Validate

func (v *IndexDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*IndexDropVldr) Walk

func (v *IndexDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*IndexDropVldr) WalkSubquery

func (v *IndexDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type IndexEntry

type IndexEntry struct {
	Table TableEntry
	Name  string
}

IndexEntry 抽象语法树需要访问的索引

type InsertVldr

type InsertVldr struct {
	// contains filtered or unexported fields
}

InsertVldr 插入数据语句相关的审核规则

func (*InsertVldr) Call

func (v *InsertVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*InsertVldr) ColumnInfo

func (v *InsertVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*InsertVldr) ColumnsValuesMustMatch

func (v *InsertVldr) ColumnsValuesMustMatch(s *models.Statement, r *models.Rule)

ColumnsValuesMustMatch 列类型、值是否匹配 RULE: INS-L2-005

func (*InsertVldr) DatabaseInfo

func (v *InsertVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*InsertVldr) Enabled

func (v *InsertVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*InsertVldr) ExplicitColumnRequired

func (v *InsertVldr) ExplicitColumnRequired(s *models.Statement, r *models.Rule)

ExplicitColumnRequired 是否要求显式列申明 RULE: INS-L2-001

func (*InsertVldr) GetRules

func (v *InsertVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*InsertVldr) IndexInfo

func (v *InsertVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*InsertVldr) RowsLimit

func (v *InsertVldr) RowsLimit(s *models.Statement, r *models.Rule)

RowsLimit 单语句允许操作的最大行数 RULE: INS-L2-004

func (*InsertVldr) SetContext

func (v *InsertVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*InsertVldr) SetGroup

func (v *InsertVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*InsertVldr) TableInfo

func (v *InsertVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*InsertVldr) TargetColumnDoesNotExist

func (v *InsertVldr) TargetColumnDoesNotExist(s *models.Statement, r *models.Rule)

TargetColumnDoesNotExist 目标列是否存在 RULE: INS-L3-003

func (*InsertVldr) TargetDatabaseDoesNotExist

func (v *InsertVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: INS-L3-001

func (*InsertVldr) TargetTableDoesNotExist

func (v *InsertVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: INS-L3-002

func (*InsertVldr) UsingSelectNotAllowed

func (v *InsertVldr) UsingSelectNotAllowed(s *models.Statement, r *models.Rule)

UsingSelectNotAllowed 是否允许INSERT...SELECT RULE: INS-L2-002

func (*InsertVldr) Validate

func (v *InsertVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*InsertVldr) ValueForNotNullColumnRequired

func (v *InsertVldr) ValueForNotNullColumnRequired(s *models.Statement, r *models.Rule)

ValueForNotNullColumnRequired 非空列是否有值 RULE: INS-L3-004

func (*InsertVldr) Walk

func (v *InsertVldr) Walk(node ast.Node)

Walk 语法树分析

func (*InsertVldr) WalkSubquery

func (v *InsertVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type MiscVldr

type MiscVldr struct {
	// contains filtered or unexported fields
}

MiscVldr 其他各种规则,包含跨语句相关的审核规则,检测一个工单不同语句之间的可能的问题

func (*MiscVldr) Call

func (v *MiscVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*MiscVldr) ColumnInfo

func (v *MiscVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*MiscVldr) DatabaseInfo

func (v *MiscVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*MiscVldr) Enabled

func (v *MiscVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*MiscVldr) FlushTableProhibited

func (v *MiscVldr) FlushTableProhibited(r *models.Rule)

FlushTableProhibited 是否允许FLUSH TABLE => TODO: FLUSH语法支持不全 RULE: MSC-L1-002

func (*MiscVldr) GetRules

func (v *MiscVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*MiscVldr) IndexInfo

func (v *MiscVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*MiscVldr) KillProhibited

func (v *MiscVldr) KillProhibited(r *models.Rule)

KillProhibited 是否允许KILL线程 RULE: MSC-L1-007

func (*MiscVldr) LockTableProhibited

func (v *MiscVldr) LockTableProhibited(r *models.Rule)

LockTableProhibited 是否允许LOCK TABLE RULE: MSC-L1-001

func (*MiscVldr) MergeRequired

func (v *MiscVldr) MergeRequired(r *models.Rule)

MergeRequired 合并同一个表的操作,这个对大表的ALTER很重要 RULE: MSC-L1-004

func (*MiscVldr) PurgeLogsProhibited

func (v *MiscVldr) PurgeLogsProhibited(r *models.Rule)

PurgeLogsProhibited 是否允许PURGE LOG RULE: MSC-L1-005

func (*MiscVldr) SetContext

func (v *MiscVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*MiscVldr) SetGroup

func (v *MiscVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*MiscVldr) SplitRequired

func (v *MiscVldr) SplitRequired(r *models.Rule)

SplitRequired 是否允许同时出现DDL、DML RULE: MSC-L1-008

func (*MiscVldr) TableInfo

func (v *MiscVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*MiscVldr) TruncateTableProhibited

func (v *MiscVldr) TruncateTableProhibited(r *models.Rule)

TruncateTableProhibited 是否允许TRUNCATE TABLE RULE: MSC-L1-003

func (*MiscVldr) UnlockTableProhibited

func (v *MiscVldr) UnlockTableProhibited(r *models.Rule)

UnlockTableProhibited 是否允许UNLOCK TABLES RULE: MSC-L1-006

func (*MiscVldr) Validate

func (v *MiscVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*MiscVldr) Walk

func (v *MiscVldr) Walk(node ast.Node)

Walk 语法树分析

func (*MiscVldr) WalkSubquery

func (v *MiscVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ProcAlterVldr

type ProcAlterVldr struct {
	// contains filtered or unexported fields
}

ProcAlterVldr 修改存储过程语句相关的审核规则

func (*ProcAlterVldr) Call

func (v *ProcAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ProcAlterVldr) ColumnInfo

func (v *ProcAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ProcAlterVldr) DatabaseInfo

func (v *ProcAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ProcAlterVldr) Enabled

func (v *ProcAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ProcAlterVldr) GetRules

func (v *ProcAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ProcAlterVldr) IndexInfo

func (v *ProcAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ProcAlterVldr) SetContext

func (v *ProcAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ProcAlterVldr) SetGroup

func (v *ProcAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ProcAlterVldr) TableInfo

func (v *ProcAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ProcAlterVldr) TargetDatabaseDoesNotExist

func (v *ProcAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: MSP-L3-001

func (*ProcAlterVldr) TargetProcDoesNotExist

func (v *ProcAlterVldr) TargetProcDoesNotExist(s *models.Statement, r *models.Rule)

TargetProcDoesNotExist 目标存储过程是否存在 RULE: MSP-L3-002

func (*ProcAlterVldr) Validate

func (v *ProcAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ProcAlterVldr) Walk

func (v *ProcAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ProcAlterVldr) WalkSubquery

func (v *ProcAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ProcCreateVldr

type ProcCreateVldr struct {
	// contains filtered or unexported fields
}

ProcCreateVldr 创建存储过程语句相关的审核规则

func (*ProcCreateVldr) Call

func (v *ProcCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ProcCreateVldr) ColumnInfo

func (v *ProcCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ProcCreateVldr) DatabaseInfo

func (v *ProcCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ProcCreateVldr) Enabled

func (v *ProcCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ProcCreateVldr) GetRules

func (v *ProcCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ProcCreateVldr) IndexInfo

func (v *ProcCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ProcCreateVldr) ProcNameLowerCaseRequired

func (v *ProcCreateVldr) ProcNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ProcNameLowerCaseRequired 存储过程名大小写规则 RULE: CSP-L2-002

func (*ProcCreateVldr) ProcNameMaxLength

func (v *ProcCreateVldr) ProcNameMaxLength(s *models.Statement, r *models.Rule)

ProcNameMaxLength 存储过程名长度规则 RULE: CSP-L2-003

func (*ProcCreateVldr) ProcNamePrefixRequired

func (v *ProcCreateVldr) ProcNamePrefixRequired(s *models.Statement, r *models.Rule)

ProcNamePrefixRequired 存储过程名前缀规则 RULE: CSP-L2-004

func (*ProcCreateVldr) ProcNameQualified

func (v *ProcCreateVldr) ProcNameQualified(s *models.Statement, r *models.Rule)

ProcNameQualified 存储过程名标识符规则 RULE: CSP-L2-001

func (*ProcCreateVldr) SetContext

func (v *ProcCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ProcCreateVldr) SetGroup

func (v *ProcCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ProcCreateVldr) TableInfo

func (v *ProcCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ProcCreateVldr) TargetDatabaseDoesNotExist

func (v *ProcCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: CSP-L3-001

func (*ProcCreateVldr) TargetProcDoesNotExist

func (v *ProcCreateVldr) TargetProcDoesNotExist(s *models.Statement, r *models.Rule)

TargetProcDoesNotExist 目标存储过程是否存在 RULE: CSP-L3-002

func (*ProcCreateVldr) Validate

func (v *ProcCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ProcCreateVldr) Walk

func (v *ProcCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ProcCreateVldr) WalkSubquery

func (v *ProcCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ProcDropVldr

type ProcDropVldr struct {
	// contains filtered or unexported fields
}

ProcDropVldr 删除存储过程语句相关的审核规则

func (*ProcDropVldr) Call

func (v *ProcDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ProcDropVldr) ColumnInfo

func (v *ProcDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ProcDropVldr) DatabaseInfo

func (v *ProcDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ProcDropVldr) Enabled

func (v *ProcDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ProcDropVldr) GetRules

func (v *ProcDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ProcDropVldr) IndexInfo

func (v *ProcDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ProcDropVldr) SetContext

func (v *ProcDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ProcDropVldr) SetGroup

func (v *ProcDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ProcDropVldr) TableInfo

func (v *ProcDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ProcDropVldr) TargetDatabaseDoesNotExist

func (v *ProcDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DSP-L3-001

func (*ProcDropVldr) TargetProcDoesNotExist

func (v *ProcDropVldr) TargetProcDoesNotExist(s *models.Statement, r *models.Rule)

TargetProcDoesNotExist 目标存储过程是否存在 RULE: DSP-L3-002

func (*ProcDropVldr) Validate

func (v *ProcDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ProcDropVldr) Walk

func (v *ProcDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ProcDropVldr) WalkSubquery

func (v *ProcDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ReplaceVldr

type ReplaceVldr struct {
	// contains filtered or unexported fields
}

ReplaceVldr 插入数据语句相关的审核规则

func (*ReplaceVldr) Call

func (v *ReplaceVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ReplaceVldr) ColumnInfo

func (v *ReplaceVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ReplaceVldr) DatabaseInfo

func (v *ReplaceVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ReplaceVldr) Enabled

func (v *ReplaceVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ReplaceVldr) GetRules

func (v *ReplaceVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ReplaceVldr) IndexInfo

func (v *ReplaceVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ReplaceVldr) SetContext

func (v *ReplaceVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ReplaceVldr) SetGroup

func (v *ReplaceVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ReplaceVldr) TableInfo

func (v *ReplaceVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ReplaceVldr) Validate

func (v *ReplaceVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ReplaceVldr) Walk

func (v *ReplaceVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ReplaceVldr) WalkSubquery

func (v *ReplaceVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type SelectVldr

type SelectVldr struct {
	// contains filtered or unexported fields
}

SelectVldr 查询语句审核

func (*SelectVldr) Call

func (v *SelectVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*SelectVldr) ColumnInfo

func (v *SelectVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*SelectVldr) DatabaseInfo

func (v *SelectVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*SelectVldr) Enabled

func (v *SelectVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*SelectVldr) GetRules

func (v *SelectVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*SelectVldr) IndexInfo

func (v *SelectVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*SelectVldr) ReturnBlobOrTextNotAllowed

func (v *SelectVldr) ReturnBlobOrTextNotAllowed(s *models.Statement, r *models.Rule)

ReturnBlobOrTextNotAllowed 是否允许返回BLOB/TEXT列 RULE: SEL-L3-004

func (*SelectVldr) SetContext

func (v *SelectVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*SelectVldr) SetGroup

func (v *SelectVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*SelectVldr) TableInfo

func (v *SelectVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*SelectVldr) TargetColumnDoesNotDoesNotExist

func (v *SelectVldr) TargetColumnDoesNotDoesNotExist(s *models.Statement, r *models.Rule)

TargetColumnDoesNotDoesNotExist 目标列必须已存在,从抽象语法数解出来所有的关联字段信息,包括FieldList/Where/OrderBy/GroupBy RULE: SEL-L3-003

func (*SelectVldr) TargetDatabaseDoesNotExist

func (v *SelectVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标数据库必须已存在 RULE: SEL-L3-001

func (*SelectVldr) TargetTableDoesNotExist

func (v *SelectVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表必须已存在 RULE: SEL-L3-002

func (*SelectVldr) UseExplicitLockNotAllowed

func (v *SelectVldr) UseExplicitLockNotAllowed(s *models.Statement, r *models.Rule)

UseExplicitLockNotAllowed 禁止指定锁的类型 RULE: SEL-L2-004

func (*SelectVldr) UseWildcardNotAllowed

func (v *SelectVldr) UseWildcardNotAllowed(s *models.Statement, r *models.Rule)

UseWildcardNotAllowed 禁止SELECT STAR RULE: SEL-L2-003

func (*SelectVldr) Validate

func (v *SelectVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*SelectVldr) Walk

func (v *SelectVldr) Walk(node ast.Node)

Walk 语法树分析

func (*SelectVldr) WalkSubquery

func (v *SelectVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

func (*SelectVldr) WithoutLimitNotAllowed

func (v *SelectVldr) WithoutLimitNotAllowed(s *models.Statement, r *models.Rule)

WithoutLimitNotAllowed 禁止没有LIMIT的查询 RULE: SEL-L2-002

func (*SelectVldr) WithoutWhereNotAllowed

func (v *SelectVldr) WithoutWhereNotAllowed(s *models.Statement, r *models.Rule)

WithoutWhereNotAllowed 禁止没有WHERE的查询 RULE: SEL-L2-001

type Stack

type Stack struct {
	sync.Mutex // you don't have to do this if you don't want thread safety
	// contains filtered or unexported fields
}

Stack LIFO栈的简单实现

func NewStack

func NewStack() *Stack

NewStack 初始化堆栈

func (*Stack) Pop

func (s *Stack) Pop() (int, error)

Pop 弹出

func (*Stack) Push

func (s *Stack) Push(v int)

Push 压栈

type TableAlterVldr

type TableAlterVldr struct {
	// contains filtered or unexported fields
}

TableAlterVldr 修改表语句相关的审核规则

func (*TableAlterVldr) AvailableCharsets

func (v *TableAlterVldr) AvailableCharsets(s *models.Statement, r *models.Rule)

AvailableCharsets 改表允许的字符集 RULE: MTB-L2-001

func (*TableAlterVldr) AvailableCollates

func (v *TableAlterVldr) AvailableCollates(s *models.Statement, r *models.Rule)

AvailableCollates 改表允许的校验规则 RULE: MTB-L2-002

func (*TableAlterVldr) AvailableEngines

func (v *TableAlterVldr) AvailableEngines(s *models.Statement, r *models.Rule)

AvailableEngines 改表允许的存储引擎 RULE: MTB-L2-004

func (*TableAlterVldr) Call

func (v *TableAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TableAlterVldr) ColumnAvailableCharsets

func (v *TableAlterVldr) ColumnAvailableCharsets(s *models.Statement, r *models.Rule)

ColumnAvailableCharsets 列允许的字符集 RULE: MTB-L2-010

func (*TableAlterVldr) ColumnAvailableCollates

func (v *TableAlterVldr) ColumnAvailableCollates(s *models.Statement, r *models.Rule)

ColumnAvailableCollates 列允许的排序规则 RULE: MTB-L2-011

func (*TableAlterVldr) ColumnCharsetCollateMustMatch

func (v *TableAlterVldr) ColumnCharsetCollateMustMatch(s *models.Statement, r *models.Rule)

ColumnCharsetCollateMustMatch 列的字符集与排序规则必须匹配 RULE: MTB-L2-012 TODO: 测试各种语法,了解字符集和排序规则的规则

func (*TableAlterVldr) ColumnCommentRequired

func (v *TableAlterVldr) ColumnCommentRequired(s *models.Statement, r *models.Rule)

ColumnCommentRequired 列必须有注释 RULE: MTB-L2-009

func (*TableAlterVldr) ColumnInfo

func (v *TableAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TableAlterVldr) ColumnNameDoesNotExist

func (v *TableAlterVldr) ColumnNameDoesNotExist(s *models.Statement, r *models.Rule)

ColumnNameDoesNotExist 修改删除列 - 数据库检查

func (*TableAlterVldr) ColumnNameDuplicate

func (v *TableAlterVldr) ColumnNameDuplicate(s *models.Statement, r *models.Rule)

ColumnNameDuplicate 添加列 - 数据库检查 RULE: MTB

func (*TableAlterVldr) ColumnNameLowerCaseRequired

func (v *TableAlterVldr) ColumnNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ColumnNameLowerCaseRequired 列名必须小写 RULE: MTB-L2-006

func (*TableAlterVldr) ColumnNameMaxLength

func (v *TableAlterVldr) ColumnNameMaxLength(s *models.Statement, r *models.Rule)

ColumnNameMaxLength 列名最大长度 RULE: MTB-L2-007

func (*TableAlterVldr) ColumnNameQualified

func (v *TableAlterVldr) ColumnNameQualified(s *models.Statement, r *models.Rule)

ColumnNameQualified 列名必须符合命名规范 RULE: MTB-L2-005

func (*TableAlterVldr) ColumnNotNullWithDefaultRequired

func (v *TableAlterVldr) ColumnNotNullWithDefaultRequired(s *models.Statement, r *models.Rule)

ColumnNotNullWithDefaultRequired 非空列必须有默认值,应该做为警告级别 RULE: MTB-L2-013

func (*TableAlterVldr) ColumnUnwantedTypes

func (v *TableAlterVldr) ColumnUnwantedTypes(s *models.Statement, r *models.Rule)

ColumnUnwantedTypes 列允许的数据类型 RULE: MTB-L2-008

func (*TableAlterVldr) CommentRequired

func (v *TableAlterVldr) CommentRequired(s *models.Statement, r *models.Rule)

CommentRequired 如果修改表的注解信息,那么不可以为空 RULE: MTB-L2-005

func (*TableAlterVldr) DatabaseInfo

func (v *TableAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TableAlterVldr) Enabled

func (v *TableAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TableAlterVldr) ForeignKeyDoesNotExist

func (v *TableAlterVldr) ForeignKeyDoesNotExist(s *models.Statement, r *models.Rule)

ForeignKeyDoesNotExist TODO

func (*TableAlterVldr) ForeignKeyNameExplicit

func (v *TableAlterVldr) ForeignKeyNameExplicit(s *models.Statement, r *models.Rule)

ForeignKeyNameExplicit 外键是否显式命名 RULE: MTB-L2-025

func (*TableAlterVldr) ForeignKeyNameLowerCaseRequired

func (v *TableAlterVldr) ForeignKeyNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ForeignKeyNameLowerCaseRequired 外键名必须小写 RULE: MTB-L2-027

func (*TableAlterVldr) ForeignKeyNameMaxLength

func (v *TableAlterVldr) ForeignKeyNameMaxLength(s *models.Statement, r *models.Rule)

ForeignKeyNameMaxLength 外键名最大长度 RULE: MTB-L2-028

func (*TableAlterVldr) ForeignKeyNamePrefixRequired

func (v *TableAlterVldr) ForeignKeyNamePrefixRequired(s *models.Statement, r *models.Rule)

ForeignKeyNamePrefixRequired 外键名前缀规则 RULE: MTB-L2-029

func (*TableAlterVldr) ForeignKeyNameQualified

func (v *TableAlterVldr) ForeignKeyNameQualified(s *models.Statement, r *models.Rule)

ForeignKeyNameQualified 外键名标识符规则 RULE: MTB-L2-026

func (*TableAlterVldr) ForeignKeyNotAllowed

func (v *TableAlterVldr) ForeignKeyNotAllowed(s *models.Statement, r *models.Rule)

ForeignKeyNotAllowed 禁止外键 RULE: MTB-L2-024

func (*TableAlterVldr) FullTextIndexExplicit

func (v *TableAlterVldr) FullTextIndexExplicit(s *models.Statement, r *models.Rule)

FullTextIndexExplicit 索引必须命名 RULE: MTB-L2-034

func (*TableAlterVldr) FullTextIndexNameLowerCaseRequired

func (v *TableAlterVldr) FullTextIndexNameLowerCaseRequired(s *models.Statement, r *models.Rule)

FullTextIndexNameLowerCaseRequired 索引名必须小写 RULE: MTB-L2-036

func (*TableAlterVldr) FullTextIndexNameMaxLength

func (v *TableAlterVldr) FullTextIndexNameMaxLength(s *models.Statement, r *models.Rule)

FullTextIndexNameMaxLength 索引名不能超过最大长度 RULE: MTB-L2-037

func (*TableAlterVldr) FullTextIndexNamePrefixRequired

func (v *TableAlterVldr) FullTextIndexNamePrefixRequired(s *models.Statement, r *models.Rule)

FullTextIndexNamePrefixRequired 索引名前缀必须匹配规则 RULE: MTB-L2-038

func (*TableAlterVldr) FullTextIndexNameQualified

func (v *TableAlterVldr) FullTextIndexNameQualified(s *models.Statement, r *models.Rule)

FullTextIndexNameQualified 索引名标识符规则 RULE: MTB-L2-035

func (*TableAlterVldr) FullTextIndexNotAllowed

func (v *TableAlterVldr) FullTextIndexNotAllowed(s *models.Statement, r *models.Rule)

FullTextIndexNotAllowed 禁用全文索引 RULE: MTB-L2-033

func (*TableAlterVldr) GetRules

func (v *TableAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TableAlterVldr) IndexColumnDoesNotExist

func (v *TableAlterVldr) IndexColumnDoesNotExist(s *models.Statement, r *models.Rule)

IndexColumnDoesNotExist 索引的目标字段必须存在

func (*TableAlterVldr) IndexCountLimit

func (v *TableAlterVldr) IndexCountLimit(s *models.Statement, r *models.Rule)

IndexCountLimit 索引数量限制

func (*TableAlterVldr) IndexDoesNotExist

func (v *TableAlterVldr) IndexDoesNotExist(s *models.Statement, r *models.Rule)

IndexDoesNotExist 修改删除列 - 数据库检查 TODO:

func (*TableAlterVldr) IndexInfo

func (v *TableAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TableAlterVldr) IndexNameDuplicate

func (v *TableAlterVldr) IndexNameDuplicate(s *models.Statement, r *models.Rule)

IndexNameDuplicate 添加索引时名称不可重复

func (*TableAlterVldr) IndexNameExplicit

func (v *TableAlterVldr) IndexNameExplicit(s *models.Statement, r *models.Rule)

IndexNameExplicit 索引必须命名 RULE: MTB-L2-014

func (*TableAlterVldr) IndexNameLowerCaseRequired

func (v *TableAlterVldr) IndexNameLowerCaseRequired(s *models.Statement, r *models.Rule)

IndexNameLowerCaseRequired 索引名必须小写 RULE: MTB-L2-016

func (*TableAlterVldr) IndexNameMaxLength

func (v *TableAlterVldr) IndexNameMaxLength(s *models.Statement, r *models.Rule)

IndexNameMaxLength 索引名最大长度 RULE: MTB-L2-017

func (*TableAlterVldr) IndexNamePrefixRequired

func (v *TableAlterVldr) IndexNamePrefixRequired(s *models.Statement, r *models.Rule)

IndexNamePrefixRequired 索引名前缀规则 RULE: MTB-L2-018

func (*TableAlterVldr) IndexNameQualified

func (v *TableAlterVldr) IndexNameQualified(s *models.Statement, r *models.Rule)

IndexNameQualified 索引名标识符必须满足规则 RULE: MTB-L2-015

func (*TableAlterVldr) IndexOnBlobColumnNotAllowed

func (v *TableAlterVldr) IndexOnBlobColumnNotAllowed(s *models.Statement, r *models.Rule)

IndexOnBlobColumnNotAllowed 禁止在BLOB/TEXT上索引

func (*TableAlterVldr) IndexOverlayNotAllowed

func (v *TableAlterVldr) IndexOverlayNotAllowed(s *models.Statement, r *models.Rule)

IndexOverlayNotAllowed 不允许索引覆盖 RULE: MTB-L3-007

func (*TableAlterVldr) MaxAllowedColumnCount

func (v *TableAlterVldr) MaxAllowedColumnCount(s *models.Statement, r *models.Rule)

MaxAllowedColumnCount 列的数量是否超过阈值 RULE: MTB-L3-006

func (*TableAlterVldr) MaxAllowedIndexColumnCount

func (v *TableAlterVldr) MaxAllowedIndexColumnCount(s *models.Statement, r *models.Rule)

MaxAllowedIndexColumnCount 单一索引最大列数 RULE: MTB-L2-039

func (*TableAlterVldr) MaxAllowedTimestampCount

func (v *TableAlterVldr) MaxAllowedTimestampCount(s *models.Statement, r *models.Rule)

MaxAllowedTimestampCount 仅允许一个事件戳类型的列 RULE: MTB-L3-007

func (*TableAlterVldr) NewTableNameLowerCaseRequired

func (v *TableAlterVldr) NewTableNameLowerCaseRequired(s *models.Statement, r *models.Rule)

NewTableNameLowerCaseRequired 更名新表必须小写 RULE: MTB-L2-031

func (*TableAlterVldr) NewTableNameMaxLength

func (v *TableAlterVldr) NewTableNameMaxLength(s *models.Statement, r *models.Rule)

NewTableNameMaxLength 更名新表最大长度 RULE: MTB-L2-032

func (*TableAlterVldr) NewTableNameQualified

func (v *TableAlterVldr) NewTableNameQualified(s *models.Statement, r *models.Rule)

NewTableNameQualified 更名新表标识符规则 RULE: MTB-L2-030

func (*TableAlterVldr) PositionColumnDoesNotExist

func (v *TableAlterVldr) PositionColumnDoesNotExist(s *models.Statement, r *models.Rule)

PositionColumnDoesNotExist 位置标记列必须存在 RULE: MTB-L2-013

func (*TableAlterVldr) PrimaryKeyDoesNotExist

func (v *TableAlterVldr) PrimaryKeyDoesNotExist(s *models.Statement, r *models.Rule)

PrimaryKeyDoesNotExist TODO

func (*TableAlterVldr) SetContext

func (v *TableAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TableAlterVldr) SetGroup

func (v *TableAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TableAlterVldr) TableCharsetCollateMustMatch

func (v *TableAlterVldr) TableCharsetCollateMustMatch(s *models.Statement, r *models.Rule)

TableCharsetCollateMustMatch 表的字符集与排序规则必须匹配 RULE: MTB-L2-003

func (*TableAlterVldr) TableInfo

func (v *TableAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TableAlterVldr) TargetDatabaseDoesNotExist

func (v *TableAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 单一索引最大列数 RULE: MTB-L2-039

func (*TableAlterVldr) TargetTableDoesNotExist

func (v *TableAlterVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 单一索引最大列数 RULE: MTB-L2-039

func (*TableAlterVldr) TargetTableDuplicate

func (v *TableAlterVldr) TargetTableDuplicate(s *models.Statement, r *models.Rule)

TargetTableDuplicate 修改表名,如果新名称已经存在

func (*TableAlterVldr) UniqueNameExplicit

func (v *TableAlterVldr) UniqueNameExplicit(s *models.Statement, r *models.Rule)

UniqueNameExplicit 唯一索引必须命名 RULE: MTB-L2-019

func (*TableAlterVldr) UniqueNameLowerCaseRequired

func (v *TableAlterVldr) UniqueNameLowerCaseRequired(s *models.Statement, r *models.Rule)

UniqueNameLowerCaseRequired 唯一索引名必须小写 RULE: MTB-L2-021

func (*TableAlterVldr) UniqueNameMaxLength

func (v *TableAlterVldr) UniqueNameMaxLength(s *models.Statement, r *models.Rule)

UniqueNameMaxLength 唯一索引名不能超过最大长度 RULE: MTB-L2-022

func (*TableAlterVldr) UniqueNamePrefixRequired

func (v *TableAlterVldr) UniqueNamePrefixRequired(s *models.Statement, r *models.Rule)

UniqueNamePrefixRequired 唯一索引名前缀必须符合规则 RULE: MTB-L2-023

func (*TableAlterVldr) UniqueNameQualified

func (v *TableAlterVldr) UniqueNameQualified(s *models.Statement, r *models.Rule)

UniqueNameQualified 唯一索引索名标识符必须符合规则 RULE: MTB-L2-020

func (*TableAlterVldr) Validate

func (v *TableAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TableAlterVldr) Walk

func (v *TableAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TableAlterVldr) WalkSubquery

func (v *TableAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TableCreateVldr

type TableCreateVldr struct {
	// contains filtered or unexported fields
}

TableCreateVldr 创建表语句相关的审核规则

func (*TableCreateVldr) AutoIncColumnDuplicate

func (v *TableCreateVldr) AutoIncColumnDuplicate(s *models.Statement, r *models.Rule)

AutoIncColumnDuplicate 只允许一个自增列 RULE: CTB-L2-050

func (*TableCreateVldr) AvailableCharsets

func (v *TableCreateVldr) AvailableCharsets(s *models.Statement, r *models.Rule)

AvailableCharsets 建表允许的字符集 RULE: CTB-L2-001

func (*TableCreateVldr) AvailableCollates

func (v *TableCreateVldr) AvailableCollates(s *models.Statement, r *models.Rule)

AvailableCollates 建表允许的排序规则 RULE: CTB-L2-002

func (*TableCreateVldr) AvailableEngines

func (v *TableCreateVldr) AvailableEngines(s *models.Statement, r *models.Rule)

AvailableEngines 建表允许的存储引擎 RULE: CTB-L2-004

func (*TableCreateVldr) Call

func (v *TableCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TableCreateVldr) ColumnAutoIncAvailableTypes

func (v *TableCreateVldr) ColumnAutoIncAvailableTypes(s *models.Statement, r *models.Rule)

ColumnAutoIncAvailableTypes 自增列允许的数据类型 RULE: CTB-L2-021

func (*TableCreateVldr) ColumnAutoIncMustPrimaryKey

func (v *TableCreateVldr) ColumnAutoIncMustPrimaryKey(s *models.Statement, r *models.Rule)

ColumnAutoIncMustPrimaryKey 自增列必须是主键 RULE: CTB-L2-023

func (*TableCreateVldr) ColumnAutoIncUnsignedRequired

func (v *TableCreateVldr) ColumnAutoIncUnsignedRequired(s *models.Statement, r *models.Rule)

ColumnAutoIncUnsignedRequired 自增列必须是无符号 RULE: CTB-L2-022

func (*TableCreateVldr) ColumnAvailableCharsets

func (v *TableCreateVldr) ColumnAvailableCharsets(s *models.Statement, r *models.Rule)

ColumnAvailableCharsets 列允许的字符集 RULE: CTB-L2-017

func (*TableCreateVldr) ColumnAvailableCollates

func (v *TableCreateVldr) ColumnAvailableCollates(s *models.Statement, r *models.Rule)

ColumnAvailableCollates 列允许的排序规则 RULE: CTB-L2-018

func (*TableCreateVldr) ColumnCharsetCollateMustMatch

func (v *TableCreateVldr) ColumnCharsetCollateMustMatch(s *models.Statement, r *models.Rule)

ColumnCharsetCollateMustMatch 列的字符集与排序规则必须匹配 RULE: CTB-L2-019

func (*TableCreateVldr) ColumnCommentRequired

func (v *TableCreateVldr) ColumnCommentRequired(s *models.Statement, r *models.Rule)

ColumnCommentRequired 列必须有注释 RULE: CTB-L2-016

func (*TableCreateVldr) ColumnInfo

func (v *TableCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TableCreateVldr) ColumnNameDuplicate

func (v *TableCreateVldr) ColumnNameDuplicate(s *models.Statement, r *models.Rule)

ColumnNameDuplicate 列名是否重复 RULE: CTB-L2-013

func (*TableCreateVldr) ColumnNameLowerCaseRequired

func (v *TableCreateVldr) ColumnNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ColumnNameLowerCaseRequired 列名是否允许大写 RULE: CTB-L2-011

func (*TableCreateVldr) ColumnNameMaxLength

func (v *TableCreateVldr) ColumnNameMaxLength(s *models.Statement, r *models.Rule)

ColumnNameMaxLength 列名最大长度 RULE: CTB-L2-012

func (*TableCreateVldr) ColumnNameQualified

func (v *TableCreateVldr) ColumnNameQualified(s *models.Statement, r *models.Rule)

ColumnNameQualified 列名必须符合命名规范 RULE: CTB-L2-010

func (*TableCreateVldr) ColumnNotNullWithDefaultRequired

func (v *TableCreateVldr) ColumnNotNullWithDefaultRequired(s *models.Statement, r *models.Rule)

ColumnNotNullWithDefaultRequired 非空列是否有默认值 RULE: CTB-L2-020

func (*TableCreateVldr) ColumnTypesDoesNotExpect

func (v *TableCreateVldr) ColumnTypesDoesNotExpect(s *models.Statement, r *models.Rule)

ColumnTypesDoesNotExpect 列不允许的数据类型 RULE: CTB-L2-015

func (*TableCreateVldr) CreateTableFromSelectNotAllowed

func (v *TableCreateVldr) CreateTableFromSelectNotAllowed(s *models.Statement, r *models.Rule)

CreateTableFromSelectNotAllowed 是否允许查询语句建表 RULE: CTB-L2-009

func (*TableCreateVldr) CreateTableUseLikeNotAllowed

func (v *TableCreateVldr) CreateTableUseLikeNotAllowed(s *models.Statement, r *models.Rule)

CreateTableUseLikeNotAllowed 禁止允许LIKE方式建表 RULE: CTB-L2-049

func (*TableCreateVldr) DatabaseInfo

func (v *TableCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TableCreateVldr) Enabled

func (v *TableCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TableCreateVldr) ForeignKeyNameExplicit

func (v *TableCreateVldr) ForeignKeyNameExplicit(s *models.Statement, r *models.Rule)

ForeignKeyNameExplicit 是否配置外键名称 RULE: CTB-L2-043

func (*TableCreateVldr) ForeignKeyNameLowerCaseRequired

func (v *TableCreateVldr) ForeignKeyNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ForeignKeyNameLowerCaseRequired 外键名大小写规则 RULE: CTB-L2-045

func (*TableCreateVldr) ForeignKeyNameMaxLength

func (v *TableCreateVldr) ForeignKeyNameMaxLength(s *models.Statement, r *models.Rule)

ForeignKeyNameMaxLength 外键名长度规则 RULE: CTB-L2-046

func (*TableCreateVldr) ForeignKeyNamePrefixRequired

func (v *TableCreateVldr) ForeignKeyNamePrefixRequired(s *models.Statement, r *models.Rule)

ForeignKeyNamePrefixRequired 外键名前缀规则 RULE: CTB-L2-047

func (*TableCreateVldr) ForeignKeyNameQualified

func (v *TableCreateVldr) ForeignKeyNameQualified(s *models.Statement, r *models.Rule)

ForeignKeyNameQualified 外键名标识符规则 RULE: CTB-L2-044

func (*TableCreateVldr) ForeignKeyNotAllowed

func (v *TableCreateVldr) ForeignKeyNotAllowed(s *models.Statement, r *models.Rule)

ForeignKeyNotAllowed 是否允许外键 RULE: CTB-L2-042

func (*TableCreateVldr) GetRules

func (v *TableCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TableCreateVldr) IndexInfo

func (v *TableCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TableCreateVldr) IndexNameExplicit

func (v *TableCreateVldr) IndexNameExplicit(s *models.Statement, r *models.Rule)

IndexNameExplicit 索引必须命名 RULE: CTB-L2-032

func (*TableCreateVldr) IndexNameLowerCaseRequired

func (v *TableCreateVldr) IndexNameLowerCaseRequired(s *models.Statement, r *models.Rule)

IndexNameLowerCaseRequired 索引名大小写规则 RULE: CTB-L2-034

func (*TableCreateVldr) IndexNameMaxLength

func (v *TableCreateVldr) IndexNameMaxLength(s *models.Statement, r *models.Rule)

IndexNameMaxLength 索引名长度规则 RULE: CTB-L2-035

func (*TableCreateVldr) IndexNamePrefixRequired

func (v *TableCreateVldr) IndexNamePrefixRequired(s *models.Statement, r *models.Rule)

IndexNamePrefixRequired 索引名前缀规则 RULE: CTB-L2-036

func (*TableCreateVldr) IndexNameQualified

func (v *TableCreateVldr) IndexNameQualified(s *models.Statement, r *models.Rule)

IndexNameQualified 索引名标识符规则 RULE: CTB-L2-033

func (*TableCreateVldr) MaxAllowedColumnCount

func (v *TableCreateVldr) MaxAllowedColumnCount(s *models.Statement, r *models.Rule)

MaxAllowedColumnCount 表允许的最大列数 RULE: CTB-L2-014

func (*TableCreateVldr) MaxAllowedIndexColumnCount

func (v *TableCreateVldr) MaxAllowedIndexColumnCount(s *models.Statement, r *models.Rule)

MaxAllowedIndexColumnCount 单一索引最大列数 RULE: CTB-L2-025

func (*TableCreateVldr) MaxAllowedIndexCount

func (v *TableCreateVldr) MaxAllowedIndexCount(s *models.Statement, r *models.Rule)

MaxAllowedIndexCount 表中最多可建多少个索引 RULE: CTB-L2-048

func (*TableCreateVldr) MaxAllowedTimestampCount

func (v *TableCreateVldr) MaxAllowedTimestampCount(s *models.Statement, r *models.Rule)

MaxAllowedTimestampCount 仅允许一个时间戳类型的列 RULE: CTB-L2-024

func (*TableCreateVldr) PrimaryKeyDuplicate

func (v *TableCreateVldr) PrimaryKeyDuplicate(s *models.Statement, r *models.Rule)

PrimaryKeyDuplicate 只允许一个主键 RULE: CTB-L2-051

func (*TableCreateVldr) PrimaryKeyNameExplicit

func (v *TableCreateVldr) PrimaryKeyNameExplicit(s *models.Statement, r *models.Rule)

PrimaryKeyNameExplicit 主键是否显式命名 RULE: CTB-L2-027

func (*TableCreateVldr) PrimaryKeyNameQualified

func (v *TableCreateVldr) PrimaryKeyNameQualified(s *models.Statement, r *models.Rule)

PrimaryKeyNameQualified 主键名标识符规则 RULE: CTB-L2-028

func (*TableCreateVldr) PrimaryKeyRequired

func (v *TableCreateVldr) PrimaryKeyRequired(s *models.Statement, r *models.Rule)

PrimaryKeyRequired 必须有主键 RULE: CTB-L2-026

func (*TableCreateVldr) PrimryKeyLowerCaseRequired

func (v *TableCreateVldr) PrimryKeyLowerCaseRequired(s *models.Statement, r *models.Rule)

PrimryKeyLowerCaseRequired 主键名大小写规则 RULE: CTB-L2-029

func (*TableCreateVldr) PrimryKeyMaxLength

func (v *TableCreateVldr) PrimryKeyMaxLength(s *models.Statement, r *models.Rule)

PrimryKeyMaxLength 主键名长度规则 RULE: CTB-L2-030

func (*TableCreateVldr) PrimryKeyPrefixRequired

func (v *TableCreateVldr) PrimryKeyPrefixRequired(s *models.Statement, r *models.Rule)

PrimryKeyPrefixRequired 主键名前缀规则 RULE: CTB-L2-031

func (*TableCreateVldr) SetContext

func (v *TableCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TableCreateVldr) SetGroup

func (v *TableCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TableCreateVldr) TableCharsetCollateMustMatch

func (v *TableCreateVldr) TableCharsetCollateMustMatch(s *models.Statement, r *models.Rule)

TableCharsetCollateMustMatch 建表是校验规则与字符集必须匹配 RULE: CTB-L2-003

func (*TableCreateVldr) TableCommentRequired

func (v *TableCreateVldr) TableCommentRequired(s *models.Statement, r *models.Rule)

TableCommentRequired 表必须有注释 RULE: CTB-L2-008

func (*TableCreateVldr) TableInfo

func (v *TableCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TableCreateVldr) TableNameLowerCaseRequired

func (v *TableCreateVldr) TableNameLowerCaseRequired(s *models.Statement, r *models.Rule)

TableNameLowerCaseRequired 表名是否允许大写 RULE: CTB-L2-006

func (*TableCreateVldr) TableNameMaxLength

func (v *TableCreateVldr) TableNameMaxLength(s *models.Statement, r *models.Rule)

TableNameMaxLength 表名最大长度 RULE: CTB-L2-007

func (*TableCreateVldr) TableNameQualified

func (v *TableCreateVldr) TableNameQualified(s *models.Statement, r *models.Rule)

TableNameQualified 表名必须符合命名规范 RULE: CTB-L2-005

func (*TableCreateVldr) TargetDatabaseDoesNotExist

func (v *TableCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 建表时检查目标库是否存在 RULE: CTB-L3-001

func (*TableCreateVldr) TargetTableDoesNotExist

func (v *TableCreateVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 建表时检查表是否已经存在 RULE: CTB-L3-002

func (*TableCreateVldr) UniqueNameExplicit

func (v *TableCreateVldr) UniqueNameExplicit(s *models.Statement, r *models.Rule)

UniqueNameExplicit 唯一索引必须命名 RULE: CTB-L2-037

func (*TableCreateVldr) UniqueNameLowerCaseRequired

func (v *TableCreateVldr) UniqueNameLowerCaseRequired(s *models.Statement, r *models.Rule)

UniqueNameLowerCaseRequired 唯一索引名大小写规则 RULE: CTB-L2-039

func (*TableCreateVldr) UniqueNameMaxLength

func (v *TableCreateVldr) UniqueNameMaxLength(s *models.Statement, r *models.Rule)

UniqueNameMaxLength 唯一索引名长度规则 RULE: CTB-L2-040

func (*TableCreateVldr) UniqueNamePrefixRequired

func (v *TableCreateVldr) UniqueNamePrefixRequired(s *models.Statement, r *models.Rule)

UniqueNamePrefixRequired 唯一索引名前缀规则 RULE: CTB-L2-041

func (*TableCreateVldr) UniqueNameQualified

func (v *TableCreateVldr) UniqueNameQualified(s *models.Statement, r *models.Rule)

UniqueNameQualified 唯一索引索名标识符规则 RULE: CTB-L2-038

func (*TableCreateVldr) Validate

func (v *TableCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TableCreateVldr) Walk

func (v *TableCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TableCreateVldr) WalkSubquery

func (v *TableCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TableDropVldr

type TableDropVldr struct {
	// contains filtered or unexported fields
}

TableDropVldr 删除表语句相关的审核规则

func (*TableDropVldr) Call

func (v *TableDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TableDropVldr) ColumnInfo

func (v *TableDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TableDropVldr) DatabaseInfo

func (v *TableDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TableDropVldr) Enabled

func (v *TableDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TableDropVldr) GetRules

func (v *TableDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TableDropVldr) IndexInfo

func (v *TableDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TableDropVldr) SetContext

func (v *TableDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TableDropVldr) SetGroup

func (v *TableDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TableDropVldr) TableInfo

func (v *TableDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TableDropVldr) TargetDatabaseDoesNotExist

func (v *TableDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DTB-L3-001

func (*TableDropVldr) TargetTableDoesNotExist

func (v *TableDropVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: DTB-L3-002

func (*TableDropVldr) Validate

func (v *TableDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TableDropVldr) Walk

func (v *TableDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TableDropVldr) WalkSubquery

func (v *TableDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TableEntry

type TableEntry struct {
	Name   string
	Alias  string
	IsView bool
}

TableEntry 抽象语法树需要访问的表

type TableRenameVldr

type TableRenameVldr struct {
	// contains filtered or unexported fields
}

TableRenameVldr 改名表语句相关的审核规则

func (*TableRenameVldr) Call

func (v *TableRenameVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TableRenameVldr) ColumnInfo

func (v *TableRenameVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TableRenameVldr) DatabaseInfo

func (v *TableRenameVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TableRenameVldr) Enabled

func (v *TableRenameVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TableRenameVldr) GetRules

func (v *TableRenameVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TableRenameVldr) IndexInfo

func (v *TableRenameVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TableRenameVldr) SetContext

func (v *TableRenameVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TableRenameVldr) SetGroup

func (v *TableRenameVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TableRenameVldr) TableInfo

func (v *TableRenameVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TableRenameVldr) TableRenameSourceDatabaseDoesNotExist

func (v *TableRenameVldr) TableRenameSourceDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TableRenameSourceDatabaseDoesNotExist 源表是否存在 RULE: RTB-L3-002

func (*TableRenameVldr) TableRenameSourceTableDoesNotExist

func (v *TableRenameVldr) TableRenameSourceTableDoesNotExist(s *models.Statement, r *models.Rule)

TableRenameSourceTableDoesNotExist 源库是否存在 RULE: RTB-L3-001

func (*TableRenameVldr) TableRenameTablesIdentical

func (v *TableRenameVldr) TableRenameTablesIdentical(s *models.Statement, r *models.Rule)

TableRenameTablesIdentical 目标表跟源表是同一个表 RULE: RTB-L2-001

func (*TableRenameVldr) TableRenameTargetTableDoesNotExist

func (v *TableRenameVldr) TableRenameTargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TableRenameTargetTableDoesNotExist 目标库是否存在 RULE: RTB-L3-003

func (*TableRenameVldr) TableRenameTargetTableNameLowerCaseRequired

func (v *TableRenameVldr) TableRenameTargetTableNameLowerCaseRequired(s *models.Statement, r *models.Rule)

TableRenameTargetTableNameLowerCaseRequired 目标表名大小写规则 RULE: RTB-L2-003

func (*TableRenameVldr) TableRenameTargetTableNameMaxLength

func (v *TableRenameVldr) TableRenameTargetTableNameMaxLength(s *models.Statement, r *models.Rule)

TableRenameTargetTableNameMaxLength 目标表名长度规则 RULE: RTB-L2-004

func (*TableRenameVldr) TableRenameTargetTableNameQualified

func (v *TableRenameVldr) TableRenameTargetTableNameQualified(s *models.Statement, r *models.Rule)

TableRenameTargetTableNameQualified 目标表名标识符规则 RULE: RTB-L2-002

func (*TableRenameVldr) Validate

func (v *TableRenameVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TableRenameVldr) Walk

func (v *TableRenameVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TableRenameVldr) WalkSubquery

func (v *TableRenameVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TriggerAlterVldr

type TriggerAlterVldr struct {
	// contains filtered or unexported fields
}

TriggerAlterVldr 修改触发器语句相关的审核规则

func (*TriggerAlterVldr) Call

func (v *TriggerAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TriggerAlterVldr) ColumnInfo

func (v *TriggerAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TriggerAlterVldr) DatabaseInfo

func (v *TriggerAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TriggerAlterVldr) Enabled

func (v *TriggerAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TriggerAlterVldr) GetRules

func (v *TriggerAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TriggerAlterVldr) IndexInfo

func (v *TriggerAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TriggerAlterVldr) SetContext

func (v *TriggerAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TriggerAlterVldr) SetGroup

func (v *TriggerAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TriggerAlterVldr) TableInfo

func (v *TriggerAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TriggerAlterVldr) TargetDatabaseDoesNotExist

func (v *TriggerAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE:DTG-L3-001

func (*TriggerAlterVldr) TargetTableDoesNotExist

func (v *TriggerAlterVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: MTG-L3-002

func (*TriggerAlterVldr) TargetTriggerDoesNotExist

func (v *TriggerAlterVldr) TargetTriggerDoesNotExist(s *models.Statement, r *models.Rule)

TargetTriggerDoesNotExist 目标触发器是否存在 RULE: MTG-L3-003

func (*TriggerAlterVldr) Validate

func (v *TriggerAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TriggerAlterVldr) Walk

func (v *TriggerAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TriggerAlterVldr) WalkSubquery

func (v *TriggerAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TriggerCreateVldr

type TriggerCreateVldr struct {
	// contains filtered or unexported fields
}

TriggerCreateVldr 创建触发器语句相关的审核规则

func (*TriggerCreateVldr) Call

func (v *TriggerCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TriggerCreateVldr) ColumnInfo

func (v *TriggerCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TriggerCreateVldr) DatabaseInfo

func (v *TriggerCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TriggerCreateVldr) Enabled

func (v *TriggerCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TriggerCreateVldr) GetRules

func (v *TriggerCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TriggerCreateVldr) IndexInfo

func (v *TriggerCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TriggerCreateVldr) SetContext

func (v *TriggerCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TriggerCreateVldr) SetGroup

func (v *TriggerCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TriggerCreateVldr) TableInfo

func (v *TriggerCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TriggerCreateVldr) TargetDatabaseDoesNotExist

func (v *TriggerCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: CTG-L3-001

func (*TriggerCreateVldr) TargetTableDoesNotExist

func (v *TriggerCreateVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: CTG-L3-002

func (*TriggerCreateVldr) TargetTriggerDoesNotExist

func (v *TriggerCreateVldr) TargetTriggerDoesNotExist(s *models.Statement, r *models.Rule)

TargetTriggerDoesNotExist 目标触发器是否存在 RULE: CTG-L3-003

func (*TriggerCreateVldr) TriggerNameLowerCaseRequired

func (v *TriggerCreateVldr) TriggerNameLowerCaseRequired(s *models.Statement, r *models.Rule)

TriggerNameLowerCaseRequired 触发器名大小写规则 RULE: CTG-L2-002

func (*TriggerCreateVldr) TriggerNameMaxLength

func (v *TriggerCreateVldr) TriggerNameMaxLength(s *models.Statement, r *models.Rule)

TriggerNameMaxLength 触发器名长度规则 RULE: CTG-L2-003

func (*TriggerCreateVldr) TriggerNameQualified

func (v *TriggerCreateVldr) TriggerNameQualified(s *models.Statement, r *models.Rule)

TriggerNameQualified 触发器名标识符规则 RULE: CTG-L2-001

func (*TriggerCreateVldr) TriggerPrefixRequired

func (v *TriggerCreateVldr) TriggerPrefixRequired(s *models.Statement, r *models.Rule)

TriggerPrefixRequired 触发器名前缀规则 RULE: CTG-L2-004

func (*TriggerCreateVldr) Validate

func (v *TriggerCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TriggerCreateVldr) Walk

func (v *TriggerCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TriggerCreateVldr) WalkSubquery

func (v *TriggerCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type TriggerDropVldr

type TriggerDropVldr struct {
	// contains filtered or unexported fields
}

TriggerDropVldr 删除触发器语句相关的审核规则

func (*TriggerDropVldr) Call

func (v *TriggerDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*TriggerDropVldr) ColumnInfo

func (v *TriggerDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*TriggerDropVldr) DatabaseInfo

func (v *TriggerDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*TriggerDropVldr) Enabled

func (v *TriggerDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*TriggerDropVldr) GetRules

func (v *TriggerDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*TriggerDropVldr) IndexInfo

func (v *TriggerDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*TriggerDropVldr) SetContext

func (v *TriggerDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*TriggerDropVldr) SetGroup

func (v *TriggerDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*TriggerDropVldr) TableInfo

func (v *TriggerDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*TriggerDropVldr) TargetDatabaseDoesNotExist

func (v *TriggerDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE:DTG-L3-001

func (*TriggerDropVldr) TargetTableDoesNotExist

func (v *TriggerDropVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE:DTG-L3-002

func (*TriggerDropVldr) TargetTriggerDoesNotExist

func (v *TriggerDropVldr) TargetTriggerDoesNotExist(s *models.Statement, r *models.Rule)

TargetTriggerDoesNotExist 目标触发器是否存在 RULE:DTG-L3-003

func (*TriggerDropVldr) Validate

func (v *TriggerDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*TriggerDropVldr) Walk

func (v *TriggerDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*TriggerDropVldr) WalkSubquery

func (v *TriggerDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type UpdateVldr

type UpdateVldr struct {
	// contains filtered or unexported fields
}

UpdateVldr 数据更新语句相关的审核规则

func (*UpdateVldr) Call

func (v *UpdateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*UpdateVldr) ColumnInfo

func (v *UpdateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*UpdateVldr) DatabaseInfo

func (v *UpdateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*UpdateVldr) Enabled

func (v *UpdateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*UpdateVldr) GetRules

func (v *UpdateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*UpdateVldr) IndexInfo

func (v *UpdateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*UpdateVldr) MaxAllowedUpdateRows

func (v *UpdateVldr) MaxAllowedUpdateRows(s *models.Statement, r *models.Rule)

MaxAllowedUpdateRows 允许单次更新的最大行数 RULE: UPD-L3-004

func (*UpdateVldr) SetContext

func (v *UpdateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*UpdateVldr) SetGroup

func (v *UpdateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*UpdateVldr) TableInfo

func (v *UpdateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*UpdateVldr) TargetColumnDoesNotExist

func (v *UpdateVldr) TargetColumnDoesNotExist(s *models.Statement, r *models.Rule)

TargetColumnDoesNotExist 目标列是否存在 RULE: UPD-L3-003

func (*UpdateVldr) TargetDatabaseDoesNotExist

func (v *UpdateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: UPD-L3-001

func (*UpdateVldr) TargetTableDoesNotExist

func (v *UpdateVldr) TargetTableDoesNotExist(s *models.Statement, r *models.Rule)

TargetTableDoesNotExist 目标表是否存在 RULE: UPD-L3-002

func (*UpdateVldr) Validate

func (v *UpdateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*UpdateVldr) Walk

func (v *UpdateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*UpdateVldr) WalkSubquery

func (v *UpdateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

func (*UpdateVldr) WithoutWhereNotAllowed

func (v *UpdateVldr) WithoutWhereNotAllowed(s *models.Statement, r *models.Rule)

WithoutWhereNotAllowed 是否允许没有WHERE的更新 RULE: UPD-L2-001

type Validator

type Validator interface {
	SetGroup(gid uint16) // 设定分组,获得规则列表
	GetRules() []*models.Rule
	Enabled() bool
	SetContext(ctx *Context)     // 分组规则是否启用
	Validate(wg *sync.WaitGroup) // 验证
}

Validator 接口定义

type ViewAlterVldr

type ViewAlterVldr struct {
	// contains filtered or unexported fields
}

ViewAlterVldr 修改视图语句相关的审核规则

func (*ViewAlterVldr) Call

func (v *ViewAlterVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ViewAlterVldr) ColumnInfo

func (v *ViewAlterVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ViewAlterVldr) DatabaseInfo

func (v *ViewAlterVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ViewAlterVldr) Enabled

func (v *ViewAlterVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ViewAlterVldr) GetRules

func (v *ViewAlterVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ViewAlterVldr) IndexInfo

func (v *ViewAlterVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ViewAlterVldr) SetContext

func (v *ViewAlterVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ViewAlterVldr) SetGroup

func (v *ViewAlterVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ViewAlterVldr) TableInfo

func (v *ViewAlterVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ViewAlterVldr) TargetDatabaseDoesNotExist

func (v *ViewAlterVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: MVW-L3-001

func (*ViewAlterVldr) TargetViewDoesNotExist

func (v *ViewAlterVldr) TargetViewDoesNotExist(s *models.Statement, r *models.Rule)

TargetViewDoesNotExist 目标视图是否存在 RULE: MVW-L3-002

func (*ViewAlterVldr) Validate

func (v *ViewAlterVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ViewAlterVldr) Walk

func (v *ViewAlterVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ViewAlterVldr) WalkSubquery

func (v *ViewAlterVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ViewCreateVldr

type ViewCreateVldr struct {
	// contains filtered or unexported fields
}

ViewCreateVldr 创建视图语句相关的审核规则

func (*ViewCreateVldr) Call

func (v *ViewCreateVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ViewCreateVldr) ColumnInfo

func (v *ViewCreateVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ViewCreateVldr) DatabaseInfo

func (v *ViewCreateVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ViewCreateVldr) Enabled

func (v *ViewCreateVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ViewCreateVldr) GetRules

func (v *ViewCreateVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ViewCreateVldr) IndexInfo

func (v *ViewCreateVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ViewCreateVldr) SetContext

func (v *ViewCreateVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ViewCreateVldr) SetGroup

func (v *ViewCreateVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ViewCreateVldr) TableInfo

func (v *ViewCreateVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ViewCreateVldr) TargetDatabaseDoesNotExist

func (v *ViewCreateVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: CVW-L3-001

func (*ViewCreateVldr) TargetViewDoesNotExist

func (v *ViewCreateVldr) TargetViewDoesNotExist(s *models.Statement, r *models.Rule)

TargetViewDoesNotExist 目标视图是否存在 RULE: CVW-L3-002

func (*ViewCreateVldr) Validate

func (v *ViewCreateVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ViewCreateVldr) ViewNameLowerCaseRequired

func (v *ViewCreateVldr) ViewNameLowerCaseRequired(s *models.Statement, r *models.Rule)

ViewNameLowerCaseRequired 视图名大小写规则 RULE: CVW-L2-002

func (*ViewCreateVldr) ViewNameMaxLength

func (v *ViewCreateVldr) ViewNameMaxLength(s *models.Statement, r *models.Rule)

ViewNameMaxLength 视图名长度规则 RULE: CVW-L2-003

func (*ViewCreateVldr) ViewNamePrefixRequired

func (v *ViewCreateVldr) ViewNamePrefixRequired(s *models.Statement, r *models.Rule)

ViewNamePrefixRequired 视图名前缀规则 RULE: CVW-L2-004

func (*ViewCreateVldr) ViewNameQualified

func (v *ViewCreateVldr) ViewNameQualified(s *models.Statement, r *models.Rule)

ViewNameQualified 视图名标识符规则 RULE: CVW-L2-001

func (*ViewCreateVldr) Walk

func (v *ViewCreateVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ViewCreateVldr) WalkSubquery

func (v *ViewCreateVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type ViewDropVldr

type ViewDropVldr struct {
	// contains filtered or unexported fields
}

ViewDropVldr 删除视图语句相关的审核规则

func (*ViewDropVldr) Call

func (v *ViewDropVldr) Call(method string, params ...interface{})

Call 利用反射方法动态调用审核函数

func (*ViewDropVldr) ColumnInfo

func (v *ViewDropVldr) ColumnInfo(database, table, column string) *core.Column

ColumnInfo 获取表信息

func (*ViewDropVldr) DatabaseInfo

func (v *ViewDropVldr) DatabaseInfo(name string) *models.Database

DatabaseInfo 根据数据库名称获取数据库信息

func (*ViewDropVldr) Enabled

func (v *ViewDropVldr) Enabled() bool

Enabled 当前规则组是否生效

func (*ViewDropVldr) GetRules

func (v *ViewDropVldr) GetRules() []*models.Rule

GetRules 设置验证分组,并初始化验证规则

func (*ViewDropVldr) IndexInfo

func (v *ViewDropVldr) IndexInfo(database, table, index string) *core.Index

IndexInfo 获取表信息

func (*ViewDropVldr) SetContext

func (v *ViewDropVldr) SetContext(ctx *Context)

SetContext 设置上下文

func (*ViewDropVldr) SetGroup

func (v *ViewDropVldr) SetGroup(gid uint16)

SetGroup 设置验证分组,并初始化验证规则

func (*ViewDropVldr) TableInfo

func (v *ViewDropVldr) TableInfo(database, table string) *core.Table

TableInfo 获取表信息

func (*ViewDropVldr) TargetDatabaseDoesNotExist

func (v *ViewDropVldr) TargetDatabaseDoesNotExist(s *models.Statement, r *models.Rule)

TargetDatabaseDoesNotExist 目标库是否存在 RULE: DVW-L3-001

func (*ViewDropVldr) TargetViewDoesNotExist

func (v *ViewDropVldr) TargetViewDoesNotExist(s *models.Statement, r *models.Rule)

TargetViewDoesNotExist 目标视图是否存在 RULE: DVW-L3-002

func (*ViewDropVldr) Validate

func (v *ViewDropVldr) Validate(wg *sync.WaitGroup)

Validate 规则组的审核入口

func (*ViewDropVldr) Walk

func (v *ViewDropVldr) Walk(node ast.Node)

Walk 语法树分析

func (*ViewDropVldr) WalkSubquery

func (v *ViewDropVldr) WalkSubquery(node ast.SubqueryExpr, stack *Stack)

WalkSubquery 递归检查自查询有效性并获取访问信息

type VisitInfo

type VisitInfo struct {
	Database string
	Table    *TableEntry
	Column   *ColumnEntry
	Index    *IndexEntry
}

VisitInfo 访问信息

func Walk

func Walk(ctx *Context, node ast.Node) []VisitInfo

Walk TODO

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL