36 lines
705 B
Go
36 lines
705 B
Go
package ormtable
|
|
|
|
// prefixEndBytes returns the []byte that would end a
|
|
// range query for all []byte with a certain prefix
|
|
// Deals with last byte of prefix being FF without overflowing
|
|
func prefixEndBytes(prefix []byte) []byte {
|
|
if len(prefix) == 0 {
|
|
return nil
|
|
}
|
|
|
|
end := make([]byte, len(prefix))
|
|
copy(end, prefix)
|
|
|
|
for {
|
|
if end[len(end)-1] != byte(255) {
|
|
end[len(end)-1]++
|
|
break
|
|
}
|
|
|
|
end = end[:len(end)-1]
|
|
|
|
if len(end) == 0 {
|
|
end = nil
|
|
break
|
|
}
|
|
}
|
|
|
|
return end
|
|
}
|
|
|
|
// inclusiveEndBytes returns the []byte that would end a
|
|
// range query such that the input would be included
|
|
func inclusiveEndBytes(inclusiveBytes []byte) []byte {
|
|
return append(inclusiveBytes, byte(0x00))
|
|
}
|