This commit is contained in:
Nuno Cruces
2024-07-10 15:41:28 +01:00
parent 88b5b409df
commit f537ab9a94
6 changed files with 46 additions and 5 deletions

View File

@@ -20,17 +20,17 @@ func Register(db *sqlite3.Conn) error {
func zorder(ctx sqlite3.Context, arg ...sqlite3.Value) {
var x [63]int64
for i := range arg {
x[i] = arg[i].Int64()
}
if len(arg) > len(x) {
ctx.ResultError(util.ErrorString("zorder: too many parameters"))
return
}
for i := range arg {
x[i] = arg[i].Int64()
}
var z int64
if len(arg) > 0 {
for i := 0; i < 63; i++ {
for i := range x {
j := i % len(arg)
z |= (x[j] & 1) << i
x[j] >>= 1

View File

@@ -1,6 +1,8 @@
package zorder_test
import (
"strconv"
"strings"
"testing"
"github.com/ncruces/go-sqlite3/driver"
@@ -94,4 +96,16 @@ func TestRegister_error(t *testing.T) {
if err == nil {
t.Error("want error")
}
var buf strings.Builder
buf.WriteString("SELECT zorder(0")
for i := 1; i < 80; i++ {
buf.WriteByte(',')
buf.WriteString(strconv.Itoa(0))
}
buf.WriteByte(')')
err = db.QueryRow(buf.String()).Scan(&got)
if err == nil {
t.Error("want error")
}
}