aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/sqlvm/parser/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/vm/sqlvm/parser/parser.go')
-rw-r--r--core/vm/sqlvm/parser/parser.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/core/vm/sqlvm/parser/parser.go b/core/vm/sqlvm/parser/parser.go
index 8ed94e7aa..685b1dd0d 100644
--- a/core/vm/sqlvm/parser/parser.go
+++ b/core/vm/sqlvm/parser/parser.go
@@ -122,6 +122,7 @@ func Parse(b []byte) ([]ast.Node, error) {
return nil, errors.ErrorList{
errors.Error{
Position: 0,
+ Length: 0,
Category: errors.ErrorCategoryLimit,
Code: errors.ErrorCodeDepthLimitReached,
Token: "",
@@ -148,12 +149,18 @@ func Parse(b []byte) ([]ast.Node, error) {
}
sqlvmErrList[i].Token =
string(internal.DecodeString([]byte(sqlvmErrList[i].Token)))
- if offset, ok := encMap[sqlvmErrList[i].Position]; ok {
- sqlvmErrList[i].Position = offset
- } else {
- panic(fmt.Sprintf("cannot fix error position byte offset %d",
- sqlvmErrList[i].Position))
+ begin := sqlvmErrList[i].Position
+ end := begin + sqlvmErrList[i].Length
+ fixedBegin, ok := encMap[begin]
+ if !ok {
+ panic(fmt.Sprintf("cannot fix error position byte offset %d", begin))
+ }
+ fixedEnd, ok := encMap[end]
+ if !ok {
+ panic(fmt.Sprintf("cannot fix error position byte offset %d", end))
}
+ sqlvmErrList[i].Position = fixedBegin
+ sqlvmErrList[i].Length = fixedEnd - fixedBegin
}
return stmts, sqlvmErrList
}