Skip to content

Commit da44470

Browse files
committed
Add vectorized JSON reader
1 parent 02bfe41 commit da44470

File tree

24 files changed

+1133
-1
lines changed

24 files changed

+1133
-1
lines changed

compiler/semantic/op.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ func (t *translator) file(n ast.Node, name string, args []ast.OpArg) sem.Op {
284284
if format == "" {
285285
format = sio.FormatFromPath(name)
286286
}
287-
if format == "csup" || format == "parquet" {
287+
if format == "csup" || format == "parquet" || format == "json" {
288288
t.hasVectorizedInput = true
289289
}
290290
typ, err := t.fileType(name, format)

go.mod

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ require (
1010
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de
1111
github.com/aws/aws-sdk-go v1.36.17
1212
github.com/axiomhq/hyperloglog v0.2.5
13+
github.com/bytedance/sonic v1.15.0
1314
github.com/go-redis/redis/v8 v8.11.5
1415
github.com/goccy/go-yaml v1.19.0
1516
github.com/golang-jwt/jwt/v4 v4.4.3
@@ -49,7 +50,10 @@ require (
4950
github.com/apache/thrift v0.22.0 // indirect
5051
github.com/beorn7/perks v1.0.1 // indirect
5152
github.com/bits-and-blooms/bitset v1.12.0 // indirect
53+
github.com/bytedance/gopkg v0.1.3 // indirect
54+
github.com/bytedance/sonic/loader v0.5.0 // indirect
5255
github.com/cespare/xxhash/v2 v2.3.0 // indirect
56+
github.com/cloudwego/base64x v0.1.6 // indirect
5357
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
5458
github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect
5559
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
@@ -75,9 +79,11 @@ require (
7579
github.com/prometheus/common v0.37.0 // indirect
7680
github.com/prometheus/procfs v0.8.0 // indirect
7781
github.com/rivo/uniseg v0.4.7 // indirect
82+
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
7883
github.com/zeebo/xxh3 v1.0.2 // indirect
7984
go.uber.org/atomic v1.7.0 // indirect
8085
go.uber.org/multierr v1.8.0 // indirect
86+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
8187
golang.org/x/mod v0.32.0 // indirect
8288
golang.org/x/net v0.49.0 // indirect
8389
golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect

go.sum

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
6666
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
6767
github.com/bits-and-blooms/bitset v1.12.0 h1:U/q1fAF7xXRhFCrhROzIfffYnu+dlS38vCZtmFVPHmA=
6868
github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
69+
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
70+
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
71+
github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE=
72+
github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k=
73+
github.com/bytedance/sonic/loader v0.5.0 h1:gXH3KVnatgY7loH5/TkeVyXPfESoqSBSBEiDd5VjlgE=
74+
github.com/bytedance/sonic/loader v0.5.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo=
6975
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
7076
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
7177
github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
@@ -75,6 +81,8 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR
7581
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
7682
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
7783
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
84+
github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M=
85+
github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU=
7886
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
7987
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
8088
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -326,16 +334,24 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
326334
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
327335
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
328336
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
337+
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
338+
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
329339
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
330340
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
331341
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
332342
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
333343
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
334344
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
345+
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
346+
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
347+
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
348+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
335349
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
336350
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
337351
github.com/teamortix/golang-wasm/wasm v0.0.0-20230719150929-5d000994c833 h1:PE/ebx5HZAsK42Bs/syRaSWBInfZpj9RifI/sEhGHvo=
338352
github.com/teamortix/golang-wasm/wasm v0.0.0-20230719150929-5d000994c833/go.mod h1:nskvTyoGIaAsC+664SkRitVI1ft6dm1xerCr50YZsnY=
353+
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
354+
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
339355
github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
340356
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
341357
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
@@ -378,6 +394,8 @@ go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8=
378394
go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak=
379395
go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY=
380396
go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY=
397+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670 h1:18EFjUmQOcUvxNYSkA6jO9VAiXCnxFY6NyDX0bHDmkU=
398+
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
381399
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
382400
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
383401
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=

runtime/exec/environment.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/brimdata/super/sbuf"
1717
"github.com/brimdata/super/sio/anyio"
1818
"github.com/brimdata/super/sio/csupio"
19+
"github.com/brimdata/super/sio/fjsonio"
1920
"github.com/brimdata/super/sio/parquetio"
2021
"github.com/brimdata/super/vector"
2122
"github.com/brimdata/super/vector/vio"
@@ -188,6 +189,8 @@ func (e *Environment) VectorOpen(ctx context.Context, sctx *super.Context, path,
188189
puller, err = csupio.NewVectorReader(ctx, sctx, reader, p, concurrentReaders)
189190
case "parquet":
190191
puller, err = parquetio.NewVectorReader(ctx, sctx, reader, p, concurrentReaders)
192+
case "fjson":
193+
puller = fjsonio.NewVectorReader(ctx, sctx, reader, p, concurrentReaders)
191194
default:
192195
var sbufPuller sbuf.Puller
193196
sbufPuller, err = e.Open(ctx, sctx, path, format, p)

sio/anyio/lookup.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package anyio
22

33
import (
4+
"context"
45
"fmt"
56
"io"
67

78
"github.com/brimdata/super"
9+
"github.com/brimdata/super/sbuf"
810
"github.com/brimdata/super/sio"
911
"github.com/brimdata/super/sio/arrowio"
1012
"github.com/brimdata/super/sio/bsupio"
1113
"github.com/brimdata/super/sio/csupio"
1214
"github.com/brimdata/super/sio/csvio"
15+
"github.com/brimdata/super/sio/fjsonio"
1316
"github.com/brimdata/super/sio/jsonio"
1417
"github.com/brimdata/super/sio/jsupio"
1518
"github.com/brimdata/super/sio/lineio"
@@ -34,6 +37,10 @@ func lookupReader(sctx *super.Context, r io.Reader, opts ReaderOpts) (sio.ReadCl
3437
return sio.NopReadCloser(csvio.NewReader(sctx, r, opts.CSV)), nil
3538
case "line":
3639
return sio.NopReadCloser(lineio.NewReader(r)), nil
40+
case "fjson":
41+
v := fjsonio.NewVectorReader(context.Background(), sctx, r, nil, 1)
42+
puller := sbuf.NewMaterializer(v)
43+
return sio.NopReadCloser(sbuf.PullerReader(puller)), nil
3744
case "json":
3845
return sio.NopReadCloser(jsonio.NewReader(sctx, r)), nil
3946
case "parquet":

sio/fjsonio/jsonvec/array.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package jsonvec
2+
3+
import "github.com/brimdata/super/vector"
4+
5+
var _ Value = (*Array)(nil)
6+
7+
type Array struct {
8+
Offsets []uint32
9+
Inner Value
10+
}
11+
12+
func NewArray() *Array {
13+
return &Array{
14+
Offsets: []uint32{0},
15+
Inner: Unknown{},
16+
}
17+
}
18+
19+
func (a *Array) BeginArray() Value { return a }
20+
func (a *Array) EnterArray() Value { return a.Inner }
21+
22+
func (a *Array) EndArray(inner Value) {
23+
a.Inner = inner
24+
n := a.Inner.Len()
25+
if n == 0 {
26+
a.Inner = new(Null)
27+
}
28+
a.Offsets = append(a.Offsets, n)
29+
}
30+
31+
func (a *Array) OnNull() Value { return ToUnion(a).OnNull() }
32+
func (a *Array) OnBool(v bool) Value { return ToUnion(a).OnBool(v) }
33+
func (a *Array) OnInt(v int64) Value { return ToUnion(a).OnInt(v) }
34+
func (a *Array) OnFloat(v float64) Value { return ToUnion(a).OnFloat(v) }
35+
func (a *Array) OnString(v string) Value { return ToUnion(a).OnString(v) }
36+
func (a *Array) BeginRecord() Value { return ToUnion(a).BeginRecord() }
37+
func (a *Array) Field(v string) Value { panic("system error") }
38+
func (a *Array) EndRecord() { panic("system error") }
39+
func (a *Array) Kind() vector.Kind { return vector.KindNull }
40+
func (a *Array) Len() uint32 { return uint32(len(a.Offsets)) - 1 }

sio/fjsonio/jsonvec/bool.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package jsonvec
2+
3+
import (
4+
"github.com/brimdata/super/vector"
5+
"github.com/brimdata/super/vector/bitvec"
6+
)
7+
8+
type Bool struct {
9+
Value bitvec.Bits
10+
}
11+
12+
var _ Value = (*Bool)(nil)
13+
14+
func (b *Bool) OnBool(v bool) Value {
15+
b.Value.Append(v)
16+
return b
17+
}
18+
19+
func (b *Bool) OnNull() Value { return ToUnion(b).OnNull() }
20+
func (b *Bool) OnString(v string) Value { return ToUnion(b).OnString(v) }
21+
func (b *Bool) OnInt(v int64) Value { return ToUnion(b).OnInt(v) }
22+
func (b *Bool) OnFloat(v float64) Value { return ToUnion(b).OnFloat(v) }
23+
func (b *Bool) BeginRecord() Value { return ToUnion(b).BeginRecord() }
24+
func (b *Bool) Field(k string) Value { panic("system error") }
25+
func (b *Bool) EndRecord() { panic("system error") }
26+
func (b *Bool) BeginArray() Value { return ToUnion(b).BeginArray() }
27+
func (b *Bool) EnterArray() Value { panic("system error") }
28+
func (b *Bool) EndArray(Value) { panic("system error") }
29+
func (b *Bool) Kind() vector.Kind { return vector.KindBool }
30+
func (b *Bool) Len() uint32 { return b.Value.Len() }

sio/fjsonio/jsonvec/builder.go

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package jsonvec
2+
3+
import (
4+
"encoding/json"
5+
6+
"github.com/bytedance/sonic/ast"
7+
)
8+
9+
var _ ast.Visitor = (*Builder)(nil)
10+
11+
type Builder struct {
12+
stack []Value
13+
}
14+
15+
func NewBuilder() *Builder {
16+
return &Builder{
17+
stack: []Value{Unknown{}},
18+
}
19+
}
20+
21+
func (b *Builder) Reset() {
22+
b.stack = b.stack[:1]
23+
}
24+
25+
func (b *Builder) OnNull() error {
26+
b.stack[len(b.stack)-1] = b.tos().OnNull()
27+
return nil
28+
}
29+
30+
func (b *Builder) OnBool(v bool) error {
31+
b.stack[len(b.stack)-1] = b.tos().OnBool(v)
32+
return nil
33+
}
34+
35+
func (b *Builder) OnInt64(v int64, _ json.Number) error {
36+
b.stack[len(b.stack)-1] = b.tos().OnInt(v)
37+
return nil
38+
}
39+
40+
func (b *Builder) OnFloat64(v float64, _ json.Number) error {
41+
b.stack[len(b.stack)-1] = b.tos().OnFloat(v)
42+
return nil
43+
}
44+
45+
func (b *Builder) OnString(v string) error {
46+
b.stack[len(b.stack)-1] = b.tos().OnString(v)
47+
return nil
48+
}
49+
50+
func (b *Builder) OnObjectBegin(capacity int) error {
51+
b.stack[len(b.stack)-1] = b.tos().BeginRecord()
52+
b.push(nil)
53+
return nil
54+
}
55+
56+
func (b *Builder) OnObjectKey(name string) error {
57+
b.pop()
58+
b.push(b.tos().Field(name))
59+
return nil
60+
}
61+
62+
func (b *Builder) OnObjectEnd() error {
63+
b.pop()
64+
b.tos().EndRecord()
65+
return nil
66+
}
67+
68+
func (b *Builder) OnArrayBegin(capacity int) error {
69+
b.stack[len(b.stack)-1] = b.tos().BeginArray()
70+
b.push(b.tos().EnterArray())
71+
return nil
72+
}
73+
74+
func (b *Builder) OnArrayEnd() error {
75+
inner := b.pop()
76+
b.tos().EndArray(inner)
77+
return nil
78+
}
79+
80+
func (b *Builder) tos() Value {
81+
return b.stack[len(b.stack)-1]
82+
}
83+
84+
func (b *Builder) push(val Value) {
85+
b.stack = append(b.stack, val)
86+
}
87+
88+
func (b *Builder) pop() Value {
89+
v := b.tos()
90+
b.stack = b.stack[:len(b.stack)-1]
91+
return v
92+
}

sio/fjsonio/jsonvec/float.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package jsonvec
2+
3+
import (
4+
"github.com/brimdata/super"
5+
"github.com/brimdata/super/vector"
6+
)
7+
8+
var _ Value = (*Float)(nil)
9+
10+
type Float struct {
11+
Value *vector.Float
12+
}
13+
14+
func NewFloat() *Float {
15+
return &Float{Value: vector.NewFloatEmpty(super.TypeFloat64, 0)}
16+
}
17+
18+
func (f *Float) OnFloat(v float64) Value {
19+
f.Value.Append(v)
20+
return f
21+
}
22+
23+
func (f *Float) OnNull() Value { return ToUnion(f).OnNull() }
24+
func (f *Float) OnBool(v bool) Value { return ToUnion(f).OnBool(v) }
25+
func (f *Float) OnInt(v int64) Value { return ToUnion(f).OnInt(v) }
26+
func (f *Float) OnString(v string) Value { return ToUnion(f).OnString(v) }
27+
func (f *Float) BeginRecord() Value { return ToUnion(f).BeginRecord() }
28+
func (f *Float) Field(key string) Value { panic("system error") }
29+
func (f *Float) EndRecord() { panic("system error") }
30+
func (f *Float) BeginArray() Value { return ToUnion(f).BeginArray() }
31+
func (f *Float) EnterArray() Value { panic("system error") }
32+
func (f *Float) EndArray(Value) { panic("system error") }
33+
func (f *Float) Kind() vector.Kind { return vector.KindFloat }
34+
func (f *Float) Len() uint32 { return f.Value.Len() }

sio/fjsonio/jsonvec/int.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package jsonvec
2+
3+
import (
4+
"github.com/brimdata/super"
5+
"github.com/brimdata/super/vector"
6+
)
7+
8+
var _ Value = (*Int)(nil)
9+
10+
type Int struct {
11+
Value *vector.Int
12+
}
13+
14+
func NewInt() *Int {
15+
return &Int{Value: vector.NewIntEmpty(super.TypeInt64, 0)}
16+
}
17+
18+
func (i *Int) OnInt(v int64) Value {
19+
i.Value.Append(v)
20+
return i
21+
}
22+
23+
func (i *Int) OnNull() Value { return ToUnion(i).OnNull() }
24+
func (i *Int) OnBool(v bool) Value { return ToUnion(i).OnBool(v) }
25+
func (i *Int) OnFloat(v float64) Value { return ToUnion(i).OnFloat(v) }
26+
func (i *Int) OnString(v string) Value { return ToUnion(i).OnString(v) }
27+
func (i *Int) BeginRecord() Value { return ToUnion(i).BeginRecord() }
28+
func (i *Int) Field(key string) Value { panic("system error") }
29+
func (i *Int) EndRecord() { panic("system error") }
30+
func (i *Int) BeginArray() Value { return ToUnion(i).BeginArray() }
31+
func (i *Int) EnterArray() Value { panic("system error") }
32+
func (i *Int) EndArray(Value) { panic("system error") }
33+
func (i *Int) Kind() vector.Kind { return vector.KindInt }
34+
func (i *Int) Len() uint32 { return i.Value.Len() }

0 commit comments

Comments
 (0)