Documentation ¶
Index ¶
- Variables
- func Normalize(sql string) (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 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) // ErrWarnDeprecatedIntegerDisplayWidth share the same code 1681, and it will be returned when length is specified in integer. ErrWarnDeprecatedIntegerDisplayWidth = terror.ClassParser.NewStdErr(mysql.ErrWarnDeprecatedSyntaxNoReplacement, mysql.Message("Integer display width is deprecated and will be removed in a future release.", nil)) // ErrWrongUsage returns for incorrect usages. ErrWrongUsage = terror.ClassParser.NewStd(mysql.ErrWrongUsage) // SpecFieldPattern special result field pattern SpecFieldPattern = regexp.MustCompile(`(\/\*!(M?[0-9]{5,6})?|\*\/)`) )
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.
for example: Normalize('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.
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. |