From 3fda3fb63b4271901cedab8f6d7496b662b7a7e2 Mon Sep 17 00:00:00 2001 From: Leon Zhang Date: Wed, 10 Jun 2020 18:08:09 +0800 Subject: [PATCH] fix Tokenize concurrent map writes bug Test Function: var i = 1 // infinite loop for { for _, sql := range TestSQLs { go ast.QueryType(sql) } i = i + 1 fmt.Println("loop: ", i) } --- ast/token.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ast/token.go b/ast/token.go index ed8353f..cc93065 100644 --- a/ast/token.go +++ b/ast/token.go @@ -45,7 +45,6 @@ const ( var maxCachekeySize = 15 var cacheHits int var cacheMisses int -var tokenCache map[string]Token var tokenBoundaries = []string{ // multi character @@ -790,7 +789,7 @@ func Tokenize(sql string) []Token { var token Token var tokenLength int var tokens []Token - tokenCache = make(map[string]Token) + tokenCache := make(map[string]Token) // Used to make sure the string keeps shrinking on each iteration oldStringLen := len(sql) + 1 -- GitLab