Documentation
¶
Index ¶
- Variables
- func GetKeywords() map[string]int
- 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 Parser
- type Pos
- type Scanner
- func (s *Scanner) AppendError(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) SetSQLMode(mode mysql.SQLMode)
Constants ¶
This section is empty.
Variables ¶
var ( ErrWarnOptimizerHintUnsupportedHint = terror.ClassParser.New(mysql.ErrWarnOptimizerHintUnsupportedHint, mysql.MySQLErrName[mysql.ErrWarnOptimizerHintUnsupportedHint]) ErrWarnOptimizerHintInvalidToken = terror.ClassParser.New(mysql.ErrWarnOptimizerHintInvalidToken, mysql.MySQLErrName[mysql.ErrWarnOptimizerHintInvalidToken]) ErrWarnMemoryQuotaOverflow = terror.ClassParser.New(mysql.ErrWarnMemoryQuotaOverflow, mysql.MySQLErrName[mysql.ErrWarnMemoryQuotaOverflow]) ErrWarnOptimizerHintParseError = terror.ClassParser.New(mysql.ErrWarnOptimizerHintParseError, mysql.MySQLErrName[mysql.ErrWarnOptimizerHintParseError]) ErrWarnOptimizerHintInvalidInteger = terror.ClassParser.New(mysql.ErrWarnOptimizerHintInvalidInteger, mysql.MySQLErrName[mysql.ErrWarnOptimizerHintInvalidInteger]) )
var ( // ErrSyntax returns for sql syntax error. ErrSyntax = terror.ClassParser.New(mysql.ErrSyntax, mysql.MySQLErrName[mysql.ErrSyntax]) // ErrParse returns for sql parse error. ErrParse = terror.ClassParser.New(mysql.ErrParse, mysql.MySQLErrName[mysql.ErrParse]) // ErrUnknownCharacterSet returns for no character set found error. ErrUnknownCharacterSet = terror.ClassParser.New(mysql.ErrUnknownCharacterSet, mysql.MySQLErrName[mysql.ErrUnknownCharacterSet]) // ErrInvalidYearColumnLength returns for illegal column length for year type. ErrInvalidYearColumnLength = terror.ClassParser.New(codeErrInvalidYearColumnLength, mysql.MySQLErrName[mysql.ErrInvalidYearColumnLength]) // ErrWrongArguments returns for illegal argument. ErrWrongArguments = terror.ClassParser.New(mysql.ErrWrongArguments, mysql.MySQLErrName[mysql.ErrWrongArguments]) // ErrWrongFieldTerminators returns for illegal field terminators. ErrWrongFieldTerminators = terror.ClassParser.New(mysql.ErrWrongFieldTerminators, mysql.MySQLErrName[mysql.ErrWrongFieldTerminators]) // ErrTooBigDisplayWidth returns for data display width exceed limit . ErrTooBigDisplayWidth = terror.ClassParser.New(mysql.ErrTooBigDisplaywidth, mysql.MySQLErrName[mysql.ErrTooBigDisplaywidth]) // ErrTooBigPrecision returns for data precision exceed limit. ErrTooBigPrecision = terror.ClassParser.New(mysql.ErrTooBigPrecision, mysql.MySQLErrName[mysql.ErrTooBigPrecision]) // ErrUnknownAlterLock returns for no alter lock type found error. ErrUnknownAlterLock = terror.ClassParser.New(mysql.ErrUnknownAlterLock, mysql.MySQLErrName[mysql.ErrUnknownAlterLock]) // ErrUnknownAlterAlgorithm returns for no alter algorithm found error. ErrUnknownAlterAlgorithm = terror.ClassParser.New(mysql.ErrUnknownAlterAlgorithm, mysql.MySQLErrName[mysql.ErrUnknownAlterAlgorithm]) // SpecFieldPattern special result field pattern SpecFieldPattern = regexp.MustCompile(`(\/\*!(M?[0-9]{5,6})?|\*\/)`) )
var SpecialCommentsController = specialCommentsCtrl{ // contains filtered or unexported fields }
SpecialCommentsController controls whether special comments like `/*T![xxx] yyy */` can be parsed as `yyy`. To add such rules, please use SpecialCommentsController.Register(). For example:
SpecialCommentsController.Register("30100");
Now the parser will treat
select a, /*T![30100] mysterious_keyword */ from t;
and
select a, mysterious_keyword from t;
equally. Similar special comments without registration are ignored by parser.
Functions ¶
func ParseErrorWith ¶
ParseErrorWith returns "You have a syntax error near..." error message compatible with mysql.
func ParseHint ¶ added in v1.2.5
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 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 ¶ added in v1.1.5
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) SetSQLMode ¶
SetSQLMode sets the SQL mode for parser.
type Scanner ¶
type Scanner struct {
// contains filtered or unexported fields
}
Scanner implements the yyLexer interface.
func (*Scanner) AppendError ¶ added in v1.0.2
AppendError sets error into scanner. Scanner satisfies yyLexer interface which need this function.
func (*Scanner) EnableWindowFunc ¶ added in v1.0.2
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 ¶ added in v1.2.0
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) SetSQLMode ¶
SetSQLMode sets the SQL mode for scanner.