func (p *Parser) GetFingerprint(sql string) string {
	return query.Fingerprint(p.RemoveSQLComments(sql))
}
GetFingerprint returns fingerprint of the given sql
package parser
import (
	"errors"
	"fmt"
	"regexp"
	"strings"
	"github.com/hashicorp/go-multierror"
	"github.com/percona/go-mysql/query"
	"github.com/pingcap/parser"
	"github.com/pingcap/parser/ast"
	"github.com/romberli/go-util/constant"
)
const (
	alterTablePrefix = "alter table"
	addIndexKeyword  = "add index"
	backTicks            = "(`[^\\s]*`)"
	alterTableExpString  = `(?i)alter\s*table\s*(` + backTicks + `|([^\s]*))\s*`
	createIndexExpString = `(?i)create((unique)|(fulltext)|(spatial)|(primary)|(\s*)\s*)((index)|(key))\s*`
	indexNameExpString   = `(?i)(` + backTicks + `|([^\s]*))\s*`
)
type Parser struct {
	parser  *parser.Parser
	visitor *Visitor
}
func NewParser(visitor *Visitor) *Parser {
	return &Parser{
		parser:  parser.New(),
		visitor: visitor,
	}
}
func NewParserWithDefault() *Parser {
	return &Parser{
		parser:  parser.New(),
		visitor: NewVisitorWithDefault(),
	}
}
func (p *Parser) GetTiDBParser() *parser.Parser {
	return p.parser
}
func (p *Parser) GetVisitor() *Visitor {
	return p.visitor
}