ensure int conversion correctness

This commit is contained in:
chrislu
2025-09-04 09:54:24 -07:00
parent 02d36637de
commit d572443c79
2 changed files with 30 additions and 6 deletions

View File

@@ -147,11 +147,16 @@ func (e *SQLEngine) Substring(value *schema_pb.Value, start *schema_pb.Value, le
if lengthVal <= 0 {
result = ""
} else {
endIdx := startIdx + int(lengthVal)
if endIdx > len(str) {
endIdx = len(str)
if lengthVal > int64(math.MaxInt) {
// If length is too large, take substring from startIdx to end
result = str[startIdx:]
} else {
endIdx := startIdx + int(lengthVal)
if endIdx > len(str) {
endIdx = len(str)
}
result = str[startIdx:endIdx]
}
result = str[startIdx:endIdx]
}
} else {
result = str[startIdx:]
@@ -266,7 +271,13 @@ func (e *SQLEngine) Left(value *schema_pb.Value, length *schema_pb.Value) (*sche
}, nil
}
if lengthVal > int64(len(str)) || lengthVal > int64(math.MaxInt) {
if lengthVal > int64(len(str)) {
return &schema_pb.Value{
Kind: &schema_pb.Value_StringValue{StringValue: str},
}, nil
}
if lengthVal > int64(math.MaxInt) {
return &schema_pb.Value{
Kind: &schema_pb.Value_StringValue{StringValue: str},
}, nil
@@ -299,7 +310,13 @@ func (e *SQLEngine) Right(value *schema_pb.Value, length *schema_pb.Value) (*sch
}, nil
}
if lengthVal > int64(len(str)) || lengthVal > int64(math.MaxInt) {
if lengthVal > int64(len(str)) {
return &schema_pb.Value{
Kind: &schema_pb.Value_StringValue{StringValue: str},
}, nil
}
if lengthVal > int64(math.MaxInt) {
return &schema_pb.Value{
Kind: &schema_pb.Value_StringValue{StringValue: str},
}, nil