Documentation ¶
Index ¶
- Variables
- func Normalize(sql string, redact string) (result string)
- func NormalizeForBinding(sql string, forPlanReplayerReload bool) (result string)
- func NormalizeKeepHint(sql string) (result string)
- func ParseErrorWith(errstr string, lineno int) error
- func ParseHint(input string, sqlMode mysql.SQLMode, initPos Pos) ([]*ast.TableOptimizerHint, []error)
- func TrimComment(txt string) string
- type CharsetClient
- type CharsetConnection
- type CollationConnection
- type Digest
- type KeywordsType
- type ParseParam
- type Parser
- func (parser *Parser) EnableWindowFunc(val bool)
- func (parser *Parser) Parse(sql, charset, collation string) (stmt []ast.StmtNode, warns []error, err error)
- func (parser *Parser) ParseOneStmt(sql, charset, collation string) (ast.StmtNode, error)
- func (parser *Parser) ParseSQL(sql string, params ...ParseParam) (stmt []ast.StmtNode, warns []error, err error)
- func (parser *Parser) SetParserConfig(config ParserConfig)
- func (parser *Parser) SetSQLMode(mode mysql.SQLMode)
- func (parser *Parser) SetStrictDoubleTypeCheck(val bool)
- type ParserConfig
- type Pos
- type Scanner
- func (s *Scanner) AppendError(err error)
- func (s *Scanner) AppendWarn(err error)
- func (s *Scanner) EnableWindowFunc(val bool)
- func (s *Scanner) Errorf(format string, a ...interface{}) (err error)
- func (s *Scanner) Errors() (warns []error, errs []error)
- func (s *Scanner) GetSQLMode() mysql.SQLMode
- func (s *Scanner) InheritScanner(sql string) *Scanner
- func (s *Scanner) Lex(v *yySymType) int
- func (s *Scanner) LexLiteral() interface{}
- func (s *Scanner) SetSQLMode(mode mysql.SQLMode)
Constants ¶
This section is empty.
Variables ¶
var ( ErrWarnOptimizerHintUnsupportedHint = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintUnsupportedHint) ErrWarnOptimizerHintInvalidToken = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintInvalidToken) ErrWarnMemoryQuotaOverflow = terror.ClassParser.NewStd(mysql.ErrWarnMemoryQuotaOverflow) ErrWarnOptimizerHintParseError = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintParseError) ErrWarnOptimizerHintInvalidInteger = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintInvalidInteger) ErrWarnOptimizerHintWrongPos = terror.ClassParser.NewStd(mysql.ErrWarnOptimizerHintWrongPos) )
var ( // ErrSyntax returns for sql syntax error. ErrSyntax = terror.ClassParser.NewStd(mysql.ErrSyntax) // ErrParse returns for sql parse error. ErrParse = terror.ClassParser.NewStd(mysql.ErrParse) // ErrUnknownCharacterSet returns for no character set found error. ErrUnknownCharacterSet = terror.ClassParser.NewStd(mysql.ErrUnknownCharacterSet) // ErrInvalidYearColumnLength returns for illegal column length for year type. ErrInvalidYearColumnLength = terror.ClassParser.NewStd(mysql.ErrInvalidYearColumnLength) // ErrWrongArguments returns for illegal argument. ErrWrongArguments = terror.ClassParser.NewStd(mysql.ErrWrongArguments) // ErrWrongFieldTerminators returns for illegal field terminators. ErrWrongFieldTerminators = terror.ClassParser.NewStd(mysql.ErrWrongFieldTerminators) // ErrTooBigDisplayWidth returns for data display width exceed limit . ErrTooBigDisplayWidth = terror.ClassParser.NewStd(mysql.ErrTooBigDisplaywidth) // ErrTooBigPrecision returns for data precision exceed limit. ErrTooBigPrecision = terror.ClassParser.NewStd(mysql.ErrTooBigPrecision) // ErrUnknownAlterLock returns for no alter lock type found error. ErrUnknownAlterLock = terror.ClassParser.NewStd(mysql.ErrUnknownAlterLock) // ErrUnknownAlterAlgorithm returns for no alter algorithm found error. ErrUnknownAlterAlgorithm = terror.ClassParser.NewStd(mysql.ErrUnknownAlterAlgorithm) // ErrWrongValue returns for wrong value ErrWrongValue = terror.ClassParser.NewStd(mysql.ErrWrongValue) // ErrWarnDeprecatedSyntax return when the syntax was deprecated ErrWarnDeprecatedSyntax = terror.ClassParser.NewStd(mysql.ErrWarnDeprecatedSyntax) // ErrWarnDeprecatedSyntaxNoReplacement return when the syntax was deprecated and there is no replacement. ErrWarnDeprecatedSyntaxNoReplacement = terror.ClassParser.NewStd(mysql.ErrWarnDeprecatedSyntaxNoReplacement) // ErrWrongUsage returns for incorrect usages. ErrWrongUsage = terror.ClassParser.NewStd(mysql.ErrWrongUsage) // ErrWrongDBName returns for incorrect DB name. ErrWrongDBName = terror.ClassParser.NewStd(mysql.ErrWrongDBName) // SpecFieldPattern special result field pattern SpecFieldPattern = regexp.MustCompile(`(\/\*!(M?[0-9]{5,6})?|\*\/)`) )
var Keywords = []KeywordsType{}/* 654 elements not displayed */
Keywords is used for all keywords in TiDB
Functions ¶
func Normalize ¶
Normalize generates the normalized statements. it will get normalized form of statement text which removes general property of a statement but keeps specific property. possible values for 'redact' is "OFF", "ON" or "MARKER". Passing "" is seen as "OFF".
when "OFF", it is returned as is for example, when "ON": Normalize('select 1 from b where a = 1') => 'select ? from b where a = ?' for example, when "MARKER": Normalize('select 1 from b where a = 1') => 'select ‹1› from b where a = ‹1›'
func NormalizeForBinding ¶
NormalizeForBinding generates the normalized statements with additional binding rules it will get normalized form of statement text which removes general property of a statement but keeps specific property.
for example: NormalizeForBinding('select 1 from b where a = 1') => 'select ? from b where a = ?'
func NormalizeKeepHint ¶
NormalizeKeepHint generates the normalized statements, but keep the hints. it will get normalized form of statement text with hints. which removes general property of a statement but keeps specific property.
for example: Normalize('select /*+ use_index(t, primary) */ 1 from b where a = 1') => 'select /*+ use_index(t, primary) */ ? from b where a = ?'
func ParseErrorWith ¶
ParseErrorWith returns "You have a syntax error near..." error message compatible with mysql.
func ParseHint ¶
func ParseHint(input string, sqlMode mysql.SQLMode, initPos Pos) ([]*ast.TableOptimizerHint, []error)
ParseHint parses an optimizer hint (the interior of `/*+ ... */`).
func TrimComment ¶
TrimComment trim comment for special comment code of MySQL.
Types ¶
type CharsetClient ¶
type CharsetClient string
CharsetClient specifies the charset of a SQL. This is used to decode the SQL into a utf-8 string.
func (CharsetClient) ApplyOn ¶
func (c CharsetClient) ApplyOn(p *Parser) error
ApplyOn implements ParseParam interface.
type CharsetConnection ¶
type CharsetConnection string
CharsetConnection is used for literals specified without a character set.
func (CharsetConnection) ApplyOn ¶
func (c CharsetConnection) ApplyOn(p *Parser) error
ApplyOn implements ParseParam interface.
type CollationConnection ¶
type CollationConnection string
CollationConnection is used for literals specified without a collation.
func (CollationConnection) ApplyOn ¶
func (c CollationConnection) ApplyOn(p *Parser) error
ApplyOn implements ParseParam interface.
type Digest ¶
type Digest struct {
// contains filtered or unexported fields
}
Digest stores the fixed length hash value.
func DigestHash
deprecated
DigestHash generates the digest of statements. it will generate a hash on normalized form of statement text which removes general property of a statement but keeps specific property.
for example: both DigestHash('select 1') and DigestHash('select 2') => e1c71d1661ae46e09b7aaec1c390957f0d6260410df4e4bc71b9c8d681021471
Deprecated: It is logically consistent with NormalizeDigest.
func DigestNormalized ¶
DigestNormalized generates the digest of a normalized sql. it will generate a hash on a normalized sql. Normalize + DigestNormalized equals to NormalizeDigest.
for example: DigestNormalized('select ?') DigestNormalized should be called with a normalized SQL string (like 'select ?') generated by function Normalize. do not call with SQL which is not normalized, DigestNormalized('select 1') and DigestNormalized('select 2') is not the same
func NormalizeDigest ¶
NormalizeDigest combines Normalize and DigestNormalized into one method.
func NormalizeDigestForBinding ¶
NormalizeDigestForBinding combines Normalize and DigestNormalized into one method with additional binding rules.
type KeywordsType ¶
KeywordsType defines the attributes of keywords
type ParseParam ¶
ParseParam represents the parameter of parsing.
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser represents a parser instance. Some temporary objects are stored in it to reduce object allocation during Parse function.
func (*Parser) EnableWindowFunc ¶
EnableWindowFunc controls whether the parser to parse syntax related with window function.
func (*Parser) Parse ¶
func (parser *Parser) Parse(sql, charset, collation string) (stmt []ast.StmtNode, warns []error, err error)
Parse parses a query string to raw ast.StmtNode. If charset or collation is "", default charset and collation will be used.
func (*Parser) ParseOneStmt ¶
ParseOneStmt parses a query and returns an ast.StmtNode. The query must have one statement, otherwise ErrSyntax is returned.
func (*Parser) ParseSQL ¶
func (parser *Parser) ParseSQL(sql string, params ...ParseParam) (stmt []ast.StmtNode, warns []error, err error)
ParseSQL parses a query string to raw ast.StmtNode.
func (*Parser) SetParserConfig ¶
func (parser *Parser) SetParserConfig(config ParserConfig)
SetParserConfig sets the parser config.
func (*Parser) SetSQLMode ¶
SetSQLMode sets the SQL mode for parser.
func (*Parser) SetStrictDoubleTypeCheck ¶
SetStrictDoubleTypeCheck enables/disables strict double type check.
type ParserConfig ¶
type ParserConfig struct { EnableWindowFunction bool EnableStrictDoubleTypeCheck bool SkipPositionRecording bool }
ParserConfig is the parser config.
type Scanner ¶
type Scanner struct {
// contains filtered or unexported fields
}
Scanner implements the yyLexer interface.
func (*Scanner) AppendError ¶
AppendError sets error into scanner. Scanner satisfies yyLexer interface which need this function.
func (*Scanner) AppendWarn ¶
AppendWarn sets warning into scanner.
func (*Scanner) EnableWindowFunc ¶
EnableWindowFunc controls whether the scanner recognize the keywords of window function.
func (*Scanner) Errorf ¶
Errorf tells scanner something is wrong. Scanner satisfies yyLexer interface which need this function.
func (*Scanner) GetSQLMode ¶
GetSQLMode return the SQL mode of scanner.
func (*Scanner) InheritScanner ¶
InheritScanner returns a new scanner object which inherits configurations from the parent scanner.
func (*Scanner) Lex ¶
Lex returns a token and store the token value in v. Scanner satisfies yyLexer interface. 0 and invalid are special token id this function would return: return 0 tells parser that scanner meets EOF, return invalid tells parser that scanner meets illegal character.
func (*Scanner) LexLiteral ¶
func (s *Scanner) LexLiteral() interface{}
LexLiteral returns the value of the converted literal
func (*Scanner) SetSQLMode ¶
SetSQLMode sets the SQL mode for scanner.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ast is the abstract syntax tree parsed from a SQL statement by parser.
|
Package ast is the abstract syntax tree parsed from a SQL statement by parser. |
Package duration provides a customized duration, which supports unit 'd', 'h' and 'm'
|
Package duration provides a customized duration, which supports unit 'd', 'h' and 'm' |
Goyacc is a version of yacc generating Go parsers.
|
Goyacc is a version of yacc generating Go parsers. |