code: func (p *MySQLPrivilege) RequestVerification(activeRoles []*auth.RoleIdentity, user, host, db, table, column string, priv mysql.PrivilegeType) bool {
  	roleList := p.FindAllRole(activeRoles)
  	roleList = append(roleList, &auth.RoleIdentity{Username: user, Hostname: host})
  
  	var userPriv, dbPriv, tablePriv, columnPriv mysql.PrivilegeType
  	for _, r := range roleList {
  		userRecord := p.matchUser(r.Username, r.Hostname)
  		if userRecord != nil {
  			userPriv |= userRecord.Privileges
  		}
  	}
  	if userPriv&priv > 0 {
  		return true
  	}
  
  	for _, r := range roleList {
  		dbRecord := p.matchDB(r.Username, r.Hostname, db)
  		if dbRecord != nil {
  			dbPriv |= dbRecord.Privileges
  		}
  	}
  	if dbPriv&priv > 0 {
  		return true
  	}
  
  	for _, r := range roleList {
  		tableRecord := p.matchTables(r.Username, r.Hostname, db, table)
  		if tableRecord != nil {
  			tablePriv |= tableRecord.TablePriv
  			if column != "" {
  				columnPriv |= tableRecord.ColumnPriv
  			}
  		}
  	}
  	if tablePriv&priv > 0 || columnPriv&priv > 0 {
  		return true
  	}
  
  	columnPriv = 0
  	for _, r := range roleList {
  		columnRecord := p.matchColumns(r.Username, r.Hostname, db, table, column)
  		if columnRecord != nil {
  			columnPriv |= columnRecord.ColumnPriv
  		}
  	}
  	if columnPriv&priv > 0 {
  		return true
  	}
  
  	return priv == 0
  }
docs: // RequestVerification checks whether the user have sufficient privileges to do the operation.