aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/apache
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/apache')
-rw-r--r--vendor/github.com/apache/arrow/go/v15/LICENSE.txt1791
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/.editorconfig21
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/.gitignore35
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.lock44
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.toml23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/Makefile54
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array.go129
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/array.go186
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/binary.go453
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/binarybuilder.go704
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/boolean.go126
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/booleanbuilder.go263
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder.go261
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_byte.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go124
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go.tmpl61
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/builder.go373
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/compare.go854
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/concat.go938
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/data.go275
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/decimal128.go365
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/decimal256.go364
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/dictionary.go1953
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/diff.go315
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/doc.go20
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/encoded.go520
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/extension.go244
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/extension_builder.go23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/fixed_size_list.go372
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binary.go123
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binarybuilder.go261
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/float16.go113
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/float16_builder.go263
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/interval.go953
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/json_reader.go205
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/list.go1574
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/map.go361
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/null.go218
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go1430
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go.tmpl158
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go3664
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go.tmpl447
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen_test.go.tmpl276
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/record.go411
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/string.go718
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/struct.go491
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/table.go421
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/timestamp.go381
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/union.go1370
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/array/util.go523
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/arrio/arrio.go92
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/Makefile62
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops.go109
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_amd64.go41
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_arm64.go27
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.s373
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_noasm.go27
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_ppc64le.go27
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_s390x.go27
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.s501
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmaps.go747
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitutil.go217
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_default.go34
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_s390x.go32
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/compare.go153
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype.go411
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_binary.go139
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_encoded.go69
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_extension.go180
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_fixedwidth.go823
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_nested.go993
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_null.go33
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go206
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpl45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpldata66
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader.go141
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline.go31
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_go1.19.go35
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_tinygo.go35
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/decimal128/decimal128.go627
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/decimal256/decimal256.go708
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/doc.go48
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/encoded/ree_utils.go219
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/endian/big.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/endian/endian.go41
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/endian/little.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/errors.go28
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/float16/float16.go201
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_off.go24
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_on.go28
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/doc.go32
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_off.go21
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_on.go32
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/util.go37
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/dictutils/dict.go411
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Binary.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BinaryView.go57
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Block.go74
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompression.go89
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompressionMethod.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Bool.go50
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Buffer.go73
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/CompressionType.go45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Date.go71
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DateUnit.go45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Decimal.go107
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryBatch.go108
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryEncoding.go135
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryKind.go47
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Duration.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Endianness.go47
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Feature.go71
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Field.go188
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FieldNode.go76
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeBinary.go67
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeList.go67
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FloatingPoint.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Footer.go162
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Int.go80
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Interval.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/IntervalUnit.go48
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/KeyValue.go75
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeBinary.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeList.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeListView.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeUtf8.go52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/List.go50
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/ListView.go53
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Map.go92
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Message.go133
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MessageHeader.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MetadataVersion.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Null.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Precision.go48
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RecordBatch.go214
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunEndEncoded.go55
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunLengthEncoded.go50
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Schema.go159
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixCompressedAxis.go45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSR.go181
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSX.go200
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensor.go175
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndex.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCOO.go179
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCSF.go291
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Struct_.go53
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Tensor.go163
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TensorDim.go83
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Time.go94
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TimeUnit.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Timestamp.go201
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Type.go123
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Union.go101
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/UnionMode.go45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8View.go57
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/internal/utils.go59
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/compression.go137
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/endian_swap.go166
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_reader.go770
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_writer.go394
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/ipc.go199
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/message.go242
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/metadata.go1317
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/reader.go285
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/ipc/writer.go1044
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/Makefile66
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/allocator.go27
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/buffer.go157
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator.go108
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_defaults.go23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_logging.go23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/checked_allocator.go221
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/default_allocator.go25
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/default_mallocator.go29
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/doc.go22
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/go_allocator.go47
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.cc71
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.go108
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.h39
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/helpers.h52
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/doc.go21
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/mallocator.go115
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory.go33
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_amd64.go33
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_arm64.go31
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.go41
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.s85
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_js_wasm.go23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.go31
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.s43
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_noasm.go23
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.go31
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.s84
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/memory/util.go45
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/numeric.schema.json15
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/numeric.tmpldata135
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/record.go49
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/schema.go301
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/table.go193
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/tools.go25
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_string.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits.go162
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_boolean.go28
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal128.go58
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal256.go53
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_float16.go57
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_interval.go135
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go524
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go.tmpl78
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen_test.go.tmpl61
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_timestamp.go54
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/type_traits_view.go48
-rw-r--r--vendor/github.com/apache/arrow/go/v15/arrow/unionmode_string.go25
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_block_counter.go452
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_run_reader.go151
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_set_run_reader.go361
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/bitutils/bitmap_generate.go109
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_funcs.go90
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string.go26
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string_go1.19.go37
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/types.tmpldata42
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go2833
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go.tmpl349
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.go443
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/json/json.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/json/json_tinygo.go51
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/Makefile80
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/buf_reader.go212
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/endians_default.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/endians_s390x.go33
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/math.go33
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max.go212
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_amd64.go55
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_arm64.go65
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.go90
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.s927
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.go56
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.s324
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_noasm.go31
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_ppc64le.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_s390x.go30
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.go88
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.s1044
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go407
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go.tmpl34
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.tmpldata34
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go325
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go.tmpl75
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_arm64.go96
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.go473
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.s3074
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_def.go227
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go96
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go.tmpl34
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_ppc64le.go96
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go96
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go.tmpl34
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_simd.go.tmpl42
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.go473
-rw-r--r--vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.s3074
263 files changed, 0 insertions, 64407 deletions
diff --git a/vendor/github.com/apache/arrow/go/v15/LICENSE.txt b/vendor/github.com/apache/arrow/go/v15/LICENSE.txt
deleted file mode 100644
index 573103298..000000000
--- a/vendor/github.com/apache/arrow/go/v15/LICENSE.txt
+++ /dev/null
@@ -1,1791 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
---------------------------------------------------------------------------------
-
-src/arrow/util (some portions): Apache 2.0, and 3-clause BSD
-
-Some portions of this module are derived from code in the Chromium project,
-copyright (c) Google inc and (c) The Chromium Authors and licensed under the
-Apache 2.0 License or the under the 3-clause BSD license:
-
- Copyright (c) 2013 The Chromium Authors. All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following disclaimer
- in the documentation and/or other materials provided with the
- distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from Daniel Lemire's FrameOfReference project.
-
-https://github.com/lemire/FrameOfReference/blob/6ccaf9e97160f9a3b299e23a8ef739e711ef0c71/src/bpacking.cpp
-
-Copyright: 2013 Daniel Lemire
-Home page: http://lemire.me/en/
-Project page: https://github.com/lemire/FrameOfReference
-License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from the TensorFlow project
-
-Copyright 2015 The TensorFlow Authors. All Rights Reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-This project includes code from the NumPy project.
-
-https://github.com/numpy/numpy/blob/e1f191c46f2eebd6cb892a4bfe14d9dd43a06c4e/numpy/core/src/multiarray/multiarraymodule.c#L2910
-
-https://github.com/numpy/numpy/blob/68fd82271b9ea5a9e50d4e761061dfcca851382a/numpy/core/src/multiarray/datetime.c
-
-Copyright (c) 2005-2017, NumPy Developers.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- * Neither the name of the NumPy Developers nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the Boost project
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the FlatBuffers project
-
-Copyright 2014 Google Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-This project includes code from the tslib project
-
-Copyright 2015 Microsoft Corporation. All rights reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-This project includes code from the jemalloc project
-
-https://github.com/jemalloc/jemalloc
-
-Copyright (C) 2002-2017 Jason Evans <jasone@canonware.com>.
-All rights reserved.
-Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved.
-Copyright (C) 2009-2017 Facebook, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-1. Redistributions of source code must retain the above copyright notice(s),
- this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright notice(s),
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS
-OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------------
-
-This project includes code from the Go project, BSD 3-clause license + PATENTS
-weak patent termination clause
-(https://github.com/golang/go/blob/master/PATENTS).
-
-Copyright (c) 2009 The Go Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project includes code from the hs2client
-
-https://github.com/cloudera/hs2client
-
-Copyright 2016 Cloudera Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-The script ci/scripts/util_wait_for_it.sh has the following license
-
-Copyright (c) 2016 Giles Hall
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The script r/configure has the following license (MIT)
-
-Copyright (c) 2017, Jeroen Ooms and Jim Hester
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-cpp/src/arrow/util/logging.cc, cpp/src/arrow/util/logging.h and
-cpp/src/arrow/util/logging-test.cc are adapted from
-Ray Project (https://github.com/ray-project/ray) (Apache 2.0).
-
-Copyright (c) 2016 Ray Project (https://github.com/ray-project/ray)
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-The files cpp/src/arrow/vendored/datetime/date.h, cpp/src/arrow/vendored/datetime/tz.h,
-cpp/src/arrow/vendored/datetime/tz_private.h, cpp/src/arrow/vendored/datetime/ios.h,
-cpp/src/arrow/vendored/datetime/ios.mm,
-cpp/src/arrow/vendored/datetime/tz.cpp are adapted from
-Howard Hinnant's date library (https://github.com/HowardHinnant/date)
-It is licensed under MIT license.
-
-The MIT License (MIT)
-Copyright (c) 2015, 2016, 2017 Howard Hinnant
-Copyright (c) 2016 Adrian Colomitchi
-Copyright (c) 2017 Florian Dang
-Copyright (c) 2017 Paul Thompson
-Copyright (c) 2018 Tomasz Kamiński
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/util/utf8.h includes code adapted from the page
- https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
-with the following license (MIT)
-
-Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/string_view.hpp has the following license
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/xxhash/ have the following license
-(BSD 2-Clause License)
-
-xxHash Library
-Copyright (c) 2012-2014, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-You can contact the author at :
-- xxHash homepage: http://www.xxhash.com
-- xxHash source repository : https://github.com/Cyan4973/xxHash
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/double-conversion/ have the following license
-(BSD 3-Clause License)
-
-Copyright 2006-2011, the V8 project authors. All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/uriparser/ have the following license
-(BSD 3-Clause License)
-
-uriparser - RFC 3986 URI parsing library
-
-Copyright (C) 2007, Weijia Song <songweijia@gmail.com>
-Copyright (C) 2007, Sebastian Pipping <sebastian@pipping.org>
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- * Redistributions of source code must retain the above
- copyright notice, this list of conditions and the following
- disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
-
- * Neither the name of the <ORGANIZATION> nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior written
- permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files under dev/tasks/conda-recipes have the following license
-
-BSD 3-clause license
-Copyright (c) 2015-2018, conda-forge
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
-TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-The files in cpp/src/arrow/vendored/utf8cpp/ have the following license
-
-Copyright 2006 Nemanja Trifunovic
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Kudu.
-
- * cpp/cmake_modules/CompilerInfo.cmake is based on Kudu's cmake_modules/CompilerInfo.cmake
-
-Copyright: 2016 The Apache Software Foundation.
-Home page: https://kudu.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Impala (incubating), formerly
-Impala. The Impala code and rights were donated to the ASF as part of the
-Incubator process after the initial code imports into Apache Parquet.
-
-Copyright: 2012 Cloudera, Inc.
-Copyright: 2016 The Apache Software Foundation.
-Home page: http://impala.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Apache Aurora.
-
-* dev/release/{release,changelog,release-candidate} are based on the scripts from
- Apache Aurora
-
-Copyright: 2016 The Apache Software Foundation.
-Home page: https://aurora.apache.org/
-License: http://www.apache.org/licenses/LICENSE-2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from the Google styleguide.
-
-* cpp/build-support/cpplint.py is based on the scripts from the Google styleguide.
-
-Copyright: 2009 Google Inc. All rights reserved.
-Homepage: https://github.com/google/styleguide
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-This project includes code from Snappy.
-
-* cpp/cmake_modules/{SnappyCMakeLists.txt,SnappyConfig.h} are based on code
- from Google's Snappy project.
-
-Copyright: 2009 Google Inc. All rights reserved.
-Homepage: https://github.com/google/snappy
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-This project includes code from the manylinux project.
-
-* python/manylinux1/scripts/{build_python.sh,python-tag-abi-tag.py,
- requirements.txt} are based on code from the manylinux project.
-
-Copyright: 2016 manylinux
-Homepage: https://github.com/pypa/manylinux
-License: The MIT License (MIT)
-
---------------------------------------------------------------------------------
-
-This project includes code from the cymove project:
-
-* python/pyarrow/includes/common.pxd includes code from the cymove project
-
-The MIT License (MIT)
-Copyright (c) 2019 Omer Ozarslan
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
-OR OTHER DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The projects includes code from the Ursabot project under the dev/archery
-directory.
-
-License: BSD 2-Clause
-
-Copyright 2019 RStudio, Inc.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-This project include code from CMake.
-
-* cpp/cmake_modules/FindGTest.cmake is based on code from CMake.
-
-Copyright: Copyright 2000-2019 Kitware, Inc. and Contributors
-Homepage: https://gitlab.kitware.com/cmake/cmake
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-This project include code from mingw-w64.
-
-* cpp/src/arrow/util/cpu-info.cc has a polyfill for mingw-w64 < 5
-
-Copyright (c) 2009 - 2013 by the mingw-w64 project
-Homepage: https://mingw-w64.org
-License: Zope Public License (ZPL) Version 2.1.
-
----------------------------------------------------------------------------------
-
-This project include code from Google's Asylo project.
-
-* cpp/src/arrow/result.h is based on status_or.h
-
-Copyright (c) Copyright 2017 Asylo authors
-Homepage: https://asylo.dev/
-License: Apache 2.0
-
---------------------------------------------------------------------------------
-
-This project includes code from Google's protobuf project
-
-* cpp/src/arrow/result.h ARROW_ASSIGN_OR_RAISE is based off ASSIGN_OR_RETURN
-
-Copyright 2008 Google Inc. All rights reserved.
-Homepage: https://developers.google.com/protocol-buffers/
-License:
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it. This code is not
-standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency LLVM is statically linked in certain binary distributions.
-Additionally some sections of source code have been derived from sources in LLVM
-and have been clearly labeled as such. LLVM has the following license:
-
-==============================================================================
-LLVM Release License
-==============================================================================
-University of Illinois/NCSA
-Open Source License
-
-Copyright (c) 2003-2018 University of Illinois at Urbana-Champaign.
-All rights reserved.
-
-Developed by:
-
- LLVM Team
-
- University of Illinois at Urbana-Champaign
-
- http://llvm.org
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal with
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimers.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimers in the
- documentation and/or other materials provided with the distribution.
-
- * Neither the names of the LLVM Team, University of Illinois at
- Urbana-Champaign, nor the names of its contributors may be used to
- endorse or promote products derived from this Software without specific
- prior written permission.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
-SOFTWARE.
-
-==============================================================================
-Copyrights and Licenses for Third Party Software Distributed with LLVM:
-==============================================================================
-The LLVM software contains code written by third parties. Such software will
-have its own individual LICENSE.TXT file in the directory in which it appears.
-This file will describe the copyrights, license, and restrictions which apply
-to that code.
-
-The disclaimer of warranty in the University of Illinois Open Source License
-applies to all code in the LLVM Distribution, and nothing in any of the
-other licenses gives permission to use the names of the LLVM Team or the
-University of Illinois to endorse or promote products derived from this
-Software.
-
-The following pieces of software have additional or alternate copyrights,
-licenses, and/or restrictions:
-
-Program Directory
-------- ---------
-Google Test llvm/utils/unittest/googletest
-OpenBSD regex llvm/lib/Support/{reg*, COPYRIGHT.regex}
-pyyaml tests llvm/test/YAMLParser/{*.data, LICENSE.TXT}
-ARM contributions llvm/lib/Target/ARM/LICENSE.TXT
-md5 contributions llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h
-
---------------------------------------------------------------------------------
-
-3rdparty dependency gRPC is statically linked in certain binary
-distributions, like the python wheels. gRPC has the following license:
-
-Copyright 2014 gRPC authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Apache Thrift is statically linked in certain binary
-distributions, like the python wheels. Apache Thrift has the following license:
-
-Apache Thrift
-Copyright (C) 2006 - 2019, The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Apache ORC is statically linked in certain binary
-distributions, like the python wheels. Apache ORC has the following license:
-
-Apache ORC
-Copyright 2013-2019 The Apache Software Foundation
-
-This product includes software developed by The Apache Software
-Foundation (http://www.apache.org/).
-
-This product includes software developed by Hewlett-Packard:
-(c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency zstd is statically linked in certain binary
-distributions, like the python wheels. ZSTD has the following license:
-
-BSD License
-
-For Zstandard software
-
-Copyright (c) 2016-present, Facebook, Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- * Neither the name Facebook nor the names of its contributors may be used to
- endorse or promote products derived from this software without specific
- prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency lz4 is statically linked in certain binary
-distributions, like the python wheels. lz4 has the following license:
-
-LZ4 Library
-Copyright (c) 2011-2016, Yann Collet
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice, this
- list of conditions and the following disclaimer in the documentation and/or
- other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency Brotli is statically linked in certain binary
-distributions, like the python wheels. Brotli has the following license:
-
-Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency snappy is statically linked in certain binary
-distributions, like the python wheels. snappy has the following license:
-
-Copyright 2011, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- * Neither the name of Google Inc. nor the names of its contributors may be
- used to endorse or promote products derived from this software without
- specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-===
-
-Some of the benchmark data in testdata/ is licensed differently:
-
- - fireworks.jpeg is Copyright 2013 Steinar H. Gunderson, and
- is licensed under the Creative Commons Attribution 3.0 license
- (CC-BY-3.0). See https://creativecommons.org/licenses/by/3.0/
- for more information.
-
- - kppkn.gtb is taken from the Gaviota chess tablebase set, and
- is licensed under the MIT License. See
- https://sites.google.com/site/gaviotachessengine/Home/endgame-tablebases-1
- for more information.
-
- - paper-100k.pdf is an excerpt (bytes 92160 to 194560) from the paper
- “Combinatorial Modeling of Chromatin Features Quantitatively Predicts DNA
- Replication Timing in _Drosophila_” by Federico Comoglio and Renato Paro,
- which is licensed under the CC-BY license. See
- http://www.ploscompbiol.org/static/license for more ifnormation.
-
- - alice29.txt, asyoulik.txt, plrabn12.txt and lcet10.txt are from Project
- Gutenberg. The first three have expired copyrights and are in the public
- domain; the latter does not have expired copyright, but is still in the
- public domain according to the license information
- (http://www.gutenberg.org/ebooks/53).
-
---------------------------------------------------------------------------------
-
-3rdparty dependency gflags is statically linked in certain binary
-distributions, like the python wheels. gflags has the following license:
-
-Copyright (c) 2006, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency glog is statically linked in certain binary
-distributions, like the python wheels. glog has the following license:
-
-Copyright (c) 2008, Google Inc.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-A function gettimeofday in utilities.cc is based on
-
-http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd
-
-The license of this code is:
-
-Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors
-All Rights Reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-3. Neither the name(s) of the above-listed copyright holder(s) nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency re2 is statically linked in certain binary
-distributions, like the python wheels. re2 has the following license:
-
-Copyright (c) 2009 The RE2 Authors. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
- * Neither the name of Google Inc. nor the names of its contributors
- may be used to endorse or promote products derived from this
- software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency c-ares is statically linked in certain binary
-distributions, like the python wheels. c-ares has the following license:
-
-# c-ares license
-
-Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS
-file.
-
-Copyright 1998 by the Massachusetts Institute of Technology.
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted, provided that
-the above copyright notice appear in all copies and that both that copyright
-notice and this permission notice appear in supporting documentation, and that
-the name of M.I.T. not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-M.I.T. makes no representations about the suitability of this software for any
-purpose. It is provided "as is" without express or implied warranty.
-
---------------------------------------------------------------------------------
-
-3rdparty dependency zlib is redistributed as a dynamically linked shared
-library in certain binary distributions, like the python wheels. In the future
-this will likely change to static linkage. zlib has the following license:
-
-zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
-
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
-
- This software is provided 'as-is', without any express or implied
- warranty. In no event will the authors be held liable for any damages
- arising from the use of this software.
-
- Permission is granted to anyone to use this software for any purpose,
- including commercial applications, and to alter it and redistribute it
- freely, subject to the following restrictions:
-
- 1. The origin of this software must not be misrepresented; you must not
- claim that you wrote the original software. If you use this software
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
- 2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
- 3. This notice may not be removed or altered from any source distribution.
-
- Jean-loup Gailly Mark Adler
- jloup@gzip.org madler@alumni.caltech.edu
-
---------------------------------------------------------------------------------
-
-3rdparty dependency openssl is redistributed as a dynamically linked shared
-library in certain binary distributions, like the python wheels. openssl
-preceding version 3 has the following license:
-
- LICENSE ISSUES
- ==============
-
- The OpenSSL toolkit stays under a double license, i.e. both the conditions of
- the OpenSSL License and the original SSLeay license apply to the toolkit.
- See below for the actual license texts.
-
- OpenSSL License
- ---------------
-
-/* ====================================================================
- * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * openssl-core@openssl.org.
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- * nor may "OpenSSL" appear in their names without prior written
- * permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the OpenSSL Project
- * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This product includes cryptographic software written by Eric Young
- * (eay@cryptsoft.com). This product includes software written by Tim
- * Hudson (tjh@cryptsoft.com).
- *
- */
-
- Original SSLeay License
- -----------------------
-
-/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
- * All rights reserved.
- *
- * This package is an SSL implementation written
- * by Eric Young (eay@cryptsoft.com).
- * The implementation was written so as to conform with Netscapes SSL.
- *
- * This library is free for commercial and non-commercial use as long as
- * the following conditions are aheared to. The following conditions
- * apply to all code found in this distribution, be it the RC4, RSA,
- * lhash, DES, etc., code; not just the SSL code. The SSL documentation
- * included with this distribution is covered by the same copyright terms
- * except that the holder is Tim Hudson (tjh@cryptsoft.com).
- *
- * Copyright remains Eric Young's, and as such any Copyright notices in
- * the code are not to be removed.
- * If this package is used in a product, Eric Young should be given attribution
- * as the author of the parts of the library used.
- * This can be in the form of a textual message at program startup or
- * in documentation (online or textual) provided with the package.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * "This product includes cryptographic software written by
- * Eric Young (eay@cryptsoft.com)"
- * The word 'cryptographic' can be left out if the rouines from the library
- * being used are not cryptographic related :-).
- * 4. If you include any Windows specific code (or a derivative thereof) from
- * the apps directory (application code) you must include an acknowledgement:
- * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
- *
- * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * The licence and distribution terms for any publically available version or
- * derivative of this code cannot be changed. i.e. this code cannot simply be
- * copied and put under another distribution licence
- * [including the GNU Public Licence.]
- */
-
---------------------------------------------------------------------------------
-
-This project includes code from the rtools-backports project.
-
-* ci/scripts/PKGBUILD and ci/scripts/r_windows_build.sh are based on code
- from the rtools-backports project.
-
-Copyright: Copyright (c) 2013 - 2019, Алексей and Jeroen Ooms.
-All rights reserved.
-Homepage: https://github.com/r-windows/rtools-backports
-License: 3-clause BSD
-
---------------------------------------------------------------------------------
-
-Some code from pandas has been adapted for the pyarrow codebase. pandas is
-available under the 3-clause BSD license, which follows:
-
-pandas license
-==============
-
-Copyright (c) 2011-2012, Lambda Foundry, Inc. and PyData Development Team
-All rights reserved.
-
-Copyright (c) 2008-2011 AQR Capital Management, LLC
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- * Neither the name of the copyright holder nor the names of any
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
---------------------------------------------------------------------------------
-
-Some bits from DyND, in particular aspects of the build system, have been
-adapted from libdynd and dynd-python under the terms of the BSD 2-clause
-license
-
-The BSD 2-Clause License
-
- Copyright (C) 2011-12, Dynamic NDArray Developers
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Dynamic NDArray Developers list:
-
- * Mark Wiebe
- * Continuum Analytics
-
---------------------------------------------------------------------------------
-
-Some source code from Ibis (https://github.com/cloudera/ibis) has been adapted
-for PyArrow. Ibis is released under the Apache License, Version 2.0.
-
---------------------------------------------------------------------------------
-
-dev/tasks/homebrew-formulae/apache-arrow.rb has the following license:
-
-BSD 2-Clause License
-
-Copyright (c) 2009-present, Homebrew contributors
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-----------------------------------------------------------------------
-
-cpp/src/arrow/vendored/base64.cpp has the following license
-
-ZLIB License
-
-Copyright (C) 2004-2017 René Nyffenegger
-
-This source code is provided 'as-is', without any express or implied
-warranty. In no event will the author be held liable for any damages arising
-from the use of this software.
-
-Permission is granted to anyone to use this software for any purpose, including
-commercial applications, and to alter it and redistribute it freely, subject to
-the following restrictions:
-
-1. The origin of this source code must not be misrepresented; you must not
- claim that you wrote the original source code. If you use this source code
- in a product, an acknowledgment in the product documentation would be
- appreciated but is not required.
-
-2. Altered source versions must be plainly marked as such, and must not be
- misrepresented as being the original source code.
-
-3. This notice may not be removed or altered from any source distribution.
-
-René Nyffenegger rene.nyffenegger@adp-gmbh.ch
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/optional.hpp has the following license
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
---------------------------------------------------------------------------------
-
-The file cpp/src/arrow/vendored/musl/strptime.c has the following license
-
-Copyright © 2005-2020 Rich Felker, et al.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/.editorconfig b/vendor/github.com/apache/arrow/go/v15/arrow/.editorconfig
deleted file mode 100644
index a7ceaf938..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/.editorconfig
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-root = true
-
-[*.tmpl]
-indent_style = tab
-indent_size = 4 \ No newline at end of file
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/.gitignore b/vendor/github.com/apache/arrow/go/v15/arrow/.gitignore
deleted file mode 100644
index d4b831ae8..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-### Go template
-# Binaries for programs and plugins
-*.exe
-*.dll
-*.so
-*.dylib
-*.o
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736
-.glide/
-
-bin/
-vendor/ \ No newline at end of file
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.lock b/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.lock
deleted file mode 100644
index 143e4f93b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.lock
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
-
-
-[[projects]]
- digest = "1:56c130d885a4aacae1dd9c7b71cfe39912c7ebc1ff7d2b46083c8812996dc43b"
- name = "github.com/davecgh/go-spew"
- packages = ["spew"]
- pruneopts = ""
- revision = "346938d642f2ec3594ed81d874461961cd0faa76"
- version = "v1.1.0"
-
-[[projects]]
- digest = "1:1d7e1867c49a6dd9856598ef7c3123604ea3daabf5b83f303ff457bcbc410b1d"
- name = "github.com/pkg/errors"
- packages = ["."]
- pruneopts = ""
- revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4"
- version = "v0.8.1"
-
-[[projects]]
- digest = "1:256484dbbcd271f9ecebc6795b2df8cad4c458dd0f5fd82a8c2fa0c29f233411"
- name = "github.com/pmezard/go-difflib"
- packages = ["difflib"]
- pruneopts = ""
- revision = "792786c7400a136282c1664665ae0a8db921c6c2"
- version = "v1.0.0"
-
-[[projects]]
- digest = "1:2d0dc026c4aef5e2f3a0e06a4dabe268b840d8f63190cf6894e02134a03f52c5"
- name = "github.com/stretchr/testify"
- packages = ["assert"]
- pruneopts = ""
- revision = "b91bfb9ebec76498946beb6af7c0230c7cc7ba6c"
- version = "v1.2.0"
-
-[solve-meta]
- analyzer-name = "dep"
- analyzer-version = 1
- input-imports = [
- "github.com/pkg/errors",
- "github.com/stretchr/testify/assert",
- ]
- solver-name = "gps-cdcl"
- solver-version = 1
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.toml b/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.toml
deleted file mode 100644
index b27807d69..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/Gopkg.toml
+++ /dev/null
@@ -1,23 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-[[constraint]]
- name = "github.com/stretchr/testify"
- version = "1.2.0"
-
-[[constraint]]
- name = "github.com/pkg/errors"
- version = "0.8.1" \ No newline at end of file
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/Makefile b/vendor/github.com/apache/arrow/go/v15/arrow/Makefile
deleted file mode 100644
index 9c4a23262..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-GO_BUILD=go build
-GO_GEN=go generate
-GO_TEST?=go test
-GOPATH=$(realpath ../../../../../..)
-
-GO_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -not -name '*_test.go')
-ALL_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -name '*.s' -not -name '*_test.go')
-SOURCES_NO_VENDOR := $(shell find . -path ./vendor -prune -o -name "*.go" -not -name '*_test.go' -print)
-
-.PHONEY: test bench assembly generate
-
-assembly:
- @$(MAKE) -C memory assembly
- @$(MAKE) -C math assembly
-
-generate: bin/tmpl
- bin/tmpl -i -data=numeric.tmpldata type_traits_numeric.gen.go.tmpl type_traits_numeric.gen_test.go.tmpl array/numeric.gen.go.tmpl array/numericbuilder.gen_test.go.tmpl array/numericbuilder.gen.go.tmpl array/bufferbuilder_numeric.gen.go.tmpl
- bin/tmpl -i -data=datatype_numeric.gen.go.tmpldata datatype_numeric.gen.go.tmpl
- @$(MAKE) -C math generate
-
-fmt: $(SOURCES_NO_VENDOR)
- goimports -w $^
-
-bench: $(GO_SOURCES) | assembly
- $(GO_TEST) $(GO_TEST_ARGS) -bench=. -run=- ./...
-
-bench-noasm: $(GO_SOURCES)
- $(GO_TEST) $(GO_TEST_ARGS) -tags='noasm' -bench=. -run=- ./...
-
-test: $(GO_SOURCES) | assembly
- $(GO_TEST) $(GO_TEST_ARGS) ./...
-
-test-noasm: $(GO_SOURCES)
- $(GO_TEST) $(GO_TEST_ARGS) -tags='noasm' ./...
-
-bin/tmpl: _tools/tmpl/main.go
- $(GO_BUILD) -o $@ ./_tools/tmpl
-
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array.go b/vendor/github.com/apache/arrow/go/v15/arrow/array.go
deleted file mode 100644
index eed859cf4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array.go
+++ /dev/null
@@ -1,129 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
-
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// ArrayData is the underlying memory and metadata of an Arrow array, corresponding
-// to the same-named object in the C++ implementation.
-//
-// The Array interface and subsequent typed objects provide strongly typed
-// accessors which support marshalling and other patterns to the data.
-// This interface allows direct access to the underlying raw byte buffers
-// which allows for manipulating the internal data and casting. For example,
-// one could cast the raw bytes from int64 to float64 like so:
-//
-// arrdata := GetMyInt64Data().Data()
-// newdata := array.NewData(arrow.PrimitiveTypes.Float64, arrdata.Len(),
-// arrdata.Buffers(), nil, arrdata.NullN(), arrdata.Offset())
-// defer newdata.Release()
-// float64arr := array.NewFloat64Data(newdata)
-// defer float64arr.Release()
-//
-// This is also useful in an analytics setting where memory may be reused. For
-// example, if we had a group of operations all returning float64 such as:
-//
-// Log(Sqrt(Expr(arr)))
-//
-// The low-level implementations could have signatures such as:
-//
-// func Log(values arrow.ArrayData) arrow.ArrayData
-//
-// Another example would be a function that consumes one or more memory buffers
-// in an input array and replaces them with newly-allocated data, changing the
-// output data type as well.
-type ArrayData interface {
- // Retain increases the reference count by 1, it is safe to call
- // in multiple goroutines simultaneously.
- Retain()
- // Release decreases the reference count by 1, it is safe to call
- // in multiple goroutines simultaneously. Data is removed when reference
- // count is 0.
- Release()
- // DataType returns the current datatype stored in the object.
- DataType() DataType
- // NullN returns the number of nulls for this data instance.
- NullN() int
- // Len returns the length of this data instance
- Len() int
- // Offset returns the offset into the raw buffers where this data begins
- Offset() int
- // Buffers returns the slice of raw data buffers for this data instance. Their
- // meaning depends on the context of the data type.
- Buffers() []*memory.Buffer
- // Children returns the slice of children data instances, only relevant for
- // nested data types. For instance, List data will have a single child containing
- // elements of all the rows and Struct data will contain numfields children which
- // are the arrays for each field of the struct.
- Children() []ArrayData
- // Reset allows reusing this ArrayData object by replacing the data in this ArrayData
- // object without changing the reference count.
- Reset(newtype DataType, newlength int, newbuffers []*memory.Buffer, newchildren []ArrayData, newnulls int, newoffset int)
- // Dictionary returns the ArrayData object for the dictionary if this is a
- // dictionary array, otherwise it will be nil.
- Dictionary() ArrayData
- // SizeInBytes returns the size of the ArrayData buffers and any children and/or dictionary in bytes.
- SizeInBytes() uint64
-}
-
-// Array represents an immutable sequence of values using the Arrow in-memory format.
-type Array interface {
- json.Marshaler
-
- fmt.Stringer
-
- // DataType returns the type metadata for this instance.
- DataType() DataType
-
- // NullN returns the number of null values in the array.
- NullN() int
-
- // NullBitmapBytes returns a byte slice of the validity bitmap.
- NullBitmapBytes() []byte
-
- // IsNull returns true if value at index is null.
- // NOTE: IsNull will panic if NullBitmapBytes is not empty and 0 > i ≥ Len.
- IsNull(i int) bool
-
- // IsValid returns true if value at index is not null.
- // NOTE: IsValid will panic if NullBitmapBytes is not empty and 0 > i ≥ Len.
- IsValid(i int) bool
- // ValueStr returns the value at index as a string.
- ValueStr(i int) string
-
- // Get single value to be marshalled with `json.Marshal`
- GetOneForMarshal(i int) interface{}
-
- Data() ArrayData
-
- // Len returns the number of elements in the array.
- Len() int
-
- // Retain increases the reference count by 1.
- // Retain may be called simultaneously from multiple goroutines.
- Retain()
-
- // Release decreases the reference count by 1.
- // Release may be called simultaneously from multiple goroutines.
- // When the reference count goes to zero, the memory is freed.
- Release()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/array.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/array.go
deleted file mode 100644
index 5aacc8f99..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/array.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-const (
- // UnknownNullCount specifies the NullN should be calculated from the null bitmap buffer.
- UnknownNullCount = -1
-
- // NullValueStr represents a null value in arrow.Array.ValueStr and in Builder.AppendValueFromString.
- // It should be returned from the arrow.Array.ValueStr implementations.
- // Using it as the value in Builder.AppendValueFromString should be equivalent to Builder.AppendNull.
- NullValueStr = "(null)"
-)
-
-type array struct {
- refCount int64
- data *Data
- nullBitmapBytes []byte
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (a *array) Retain() {
- atomic.AddInt64(&a.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// Release may be called simultaneously from multiple goroutines.
-// When the reference count goes to zero, the memory is freed.
-func (a *array) Release() {
- debug.Assert(atomic.LoadInt64(&a.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&a.refCount, -1) == 0 {
- a.data.Release()
- a.data, a.nullBitmapBytes = nil, nil
- }
-}
-
-// DataType returns the type metadata for this instance.
-func (a *array) DataType() arrow.DataType { return a.data.dtype }
-
-// NullN returns the number of null values in the array.
-func (a *array) NullN() int {
- if a.data.nulls < 0 {
- a.data.nulls = a.data.length - bitutil.CountSetBits(a.nullBitmapBytes, a.data.offset, a.data.length)
- }
- return a.data.nulls
-}
-
-// NullBitmapBytes returns a byte slice of the validity bitmap.
-func (a *array) NullBitmapBytes() []byte { return a.nullBitmapBytes }
-
-func (a *array) Data() arrow.ArrayData { return a.data }
-
-// Len returns the number of elements in the array.
-func (a *array) Len() int { return a.data.length }
-
-// IsNull returns true if value at index is null.
-// NOTE: IsNull will panic if NullBitmapBytes is not empty and 0 > i ≥ Len.
-func (a *array) IsNull(i int) bool {
- return len(a.nullBitmapBytes) != 0 && bitutil.BitIsNotSet(a.nullBitmapBytes, a.data.offset+i)
-}
-
-// IsValid returns true if value at index is not null.
-// NOTE: IsValid will panic if NullBitmapBytes is not empty and 0 > i ≥ Len.
-func (a *array) IsValid(i int) bool {
- return len(a.nullBitmapBytes) == 0 || bitutil.BitIsSet(a.nullBitmapBytes, a.data.offset+i)
-}
-
-func (a *array) setData(data *Data) {
- // Retain before releasing in case a.data is the same as data.
- data.Retain()
-
- if a.data != nil {
- a.data.Release()
- }
-
- if len(data.buffers) > 0 && data.buffers[0] != nil {
- a.nullBitmapBytes = data.buffers[0].Bytes()
- }
- a.data = data
-}
-
-func (a *array) Offset() int {
- return a.data.Offset()
-}
-
-type arrayConstructorFn func(arrow.ArrayData) arrow.Array
-
-var (
- makeArrayFn [64]arrayConstructorFn
-)
-
-func invalidDataType(data arrow.ArrayData) arrow.Array {
- panic("invalid data type: " + data.DataType().ID().String())
-}
-
-// MakeFromData constructs a strongly-typed array instance from generic Data.
-func MakeFromData(data arrow.ArrayData) arrow.Array {
- return makeArrayFn[byte(data.DataType().ID()&0x3f)](data)
-}
-
-// NewSlice constructs a zero-copy slice of the array with the indicated
-// indices i and j, corresponding to array[i:j].
-// The returned array must be Release()'d after use.
-//
-// NewSlice panics if the slice is outside the valid range of the input array.
-// NewSlice panics if j < i.
-func NewSlice(arr arrow.Array, i, j int64) arrow.Array {
- data := NewSliceData(arr.Data(), i, j)
- slice := MakeFromData(data)
- data.Release()
- return slice
-}
-
-func init() {
- makeArrayFn = [...]arrayConstructorFn{
- arrow.NULL: func(data arrow.ArrayData) arrow.Array { return NewNullData(data) },
- arrow.BOOL: func(data arrow.ArrayData) arrow.Array { return NewBooleanData(data) },
- arrow.UINT8: func(data arrow.ArrayData) arrow.Array { return NewUint8Data(data) },
- arrow.INT8: func(data arrow.ArrayData) arrow.Array { return NewInt8Data(data) },
- arrow.UINT16: func(data arrow.ArrayData) arrow.Array { return NewUint16Data(data) },
- arrow.INT16: func(data arrow.ArrayData) arrow.Array { return NewInt16Data(data) },
- arrow.UINT32: func(data arrow.ArrayData) arrow.Array { return NewUint32Data(data) },
- arrow.INT32: func(data arrow.ArrayData) arrow.Array { return NewInt32Data(data) },
- arrow.UINT64: func(data arrow.ArrayData) arrow.Array { return NewUint64Data(data) },
- arrow.INT64: func(data arrow.ArrayData) arrow.Array { return NewInt64Data(data) },
- arrow.FLOAT16: func(data arrow.ArrayData) arrow.Array { return NewFloat16Data(data) },
- arrow.FLOAT32: func(data arrow.ArrayData) arrow.Array { return NewFloat32Data(data) },
- arrow.FLOAT64: func(data arrow.ArrayData) arrow.Array { return NewFloat64Data(data) },
- arrow.STRING: func(data arrow.ArrayData) arrow.Array { return NewStringData(data) },
- arrow.BINARY: func(data arrow.ArrayData) arrow.Array { return NewBinaryData(data) },
- arrow.FIXED_SIZE_BINARY: func(data arrow.ArrayData) arrow.Array { return NewFixedSizeBinaryData(data) },
- arrow.DATE32: func(data arrow.ArrayData) arrow.Array { return NewDate32Data(data) },
- arrow.DATE64: func(data arrow.ArrayData) arrow.Array { return NewDate64Data(data) },
- arrow.TIMESTAMP: func(data arrow.ArrayData) arrow.Array { return NewTimestampData(data) },
- arrow.TIME32: func(data arrow.ArrayData) arrow.Array { return NewTime32Data(data) },
- arrow.TIME64: func(data arrow.ArrayData) arrow.Array { return NewTime64Data(data) },
- arrow.INTERVAL_MONTHS: func(data arrow.ArrayData) arrow.Array { return NewMonthIntervalData(data) },
- arrow.INTERVAL_DAY_TIME: func(data arrow.ArrayData) arrow.Array { return NewDayTimeIntervalData(data) },
- arrow.DECIMAL128: func(data arrow.ArrayData) arrow.Array { return NewDecimal128Data(data) },
- arrow.DECIMAL256: func(data arrow.ArrayData) arrow.Array { return NewDecimal256Data(data) },
- arrow.LIST: func(data arrow.ArrayData) arrow.Array { return NewListData(data) },
- arrow.STRUCT: func(data arrow.ArrayData) arrow.Array { return NewStructData(data) },
- arrow.SPARSE_UNION: func(data arrow.ArrayData) arrow.Array { return NewSparseUnionData(data) },
- arrow.DENSE_UNION: func(data arrow.ArrayData) arrow.Array { return NewDenseUnionData(data) },
- arrow.DICTIONARY: func(data arrow.ArrayData) arrow.Array { return NewDictionaryData(data) },
- arrow.MAP: func(data arrow.ArrayData) arrow.Array { return NewMapData(data) },
- arrow.EXTENSION: func(data arrow.ArrayData) arrow.Array { return NewExtensionData(data) },
- arrow.FIXED_SIZE_LIST: func(data arrow.ArrayData) arrow.Array { return NewFixedSizeListData(data) },
- arrow.DURATION: func(data arrow.ArrayData) arrow.Array { return NewDurationData(data) },
- arrow.LARGE_STRING: func(data arrow.ArrayData) arrow.Array { return NewLargeStringData(data) },
- arrow.LARGE_BINARY: func(data arrow.ArrayData) arrow.Array { return NewLargeBinaryData(data) },
- arrow.LARGE_LIST: func(data arrow.ArrayData) arrow.Array { return NewLargeListData(data) },
- arrow.INTERVAL_MONTH_DAY_NANO: func(data arrow.ArrayData) arrow.Array { return NewMonthDayNanoIntervalData(data) },
- arrow.RUN_END_ENCODED: func(data arrow.ArrayData) arrow.Array { return NewRunEndEncodedData(data) },
- arrow.LIST_VIEW: func(data arrow.ArrayData) arrow.Array { return NewListViewData(data) },
- arrow.LARGE_LIST_VIEW: func(data arrow.ArrayData) arrow.Array { return NewLargeListViewData(data) },
- arrow.BINARY_VIEW: func(data arrow.ArrayData) arrow.Array { return NewBinaryViewData(data) },
- arrow.STRING_VIEW: func(data arrow.ArrayData) arrow.Array { return NewStringViewData(data) },
- // invalid data types to fill out array to size 2^6 - 1
- 63: invalidDataType,
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/binary.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/binary.go
deleted file mode 100644
index 9e26de7a6..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/binary.go
+++ /dev/null
@@ -1,453 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "strings"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type BinaryLike interface {
- arrow.Array
- ValueLen(int) int
- ValueBytes() []byte
- ValueOffset64(int) int64
-}
-
-// A type which represents an immutable sequence of variable-length binary strings.
-type Binary struct {
- array
- valueOffsets []int32
- valueBytes []byte
-}
-
-// NewBinaryData constructs a new Binary array from data.
-func NewBinaryData(data arrow.ArrayData) *Binary {
- a := &Binary{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Value returns the slice at index i. This value should not be mutated.
-func (a *Binary) Value(i int) []byte {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- idx := a.array.data.offset + i
- return a.valueBytes[a.valueOffsets[idx]:a.valueOffsets[idx+1]]
-}
-
-// ValueStr returns a copy of the base64-encoded string value or NullValueStr
-func (a *Binary) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return base64.StdEncoding.EncodeToString(a.Value(i))
-}
-
-// ValueString returns the string at index i without performing additional allocations.
-// The string is only valid for the lifetime of the Binary array.
-func (a *Binary) ValueString(i int) string {
- b := a.Value(i)
- return *(*string)(unsafe.Pointer(&b))
-}
-
-func (a *Binary) ValueOffset(i int) int {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return int(a.valueOffsets[a.array.data.offset+i])
-}
-
-func (a *Binary) ValueOffset64(i int) int64 {
- return int64(a.ValueOffset(i))
-}
-
-func (a *Binary) ValueLen(i int) int {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- beg := a.array.data.offset + i
- return int(a.valueOffsets[beg+1] - a.valueOffsets[beg])
-}
-
-func (a *Binary) ValueOffsets() []int32 {
- beg := a.array.data.offset
- end := beg + a.array.data.length + 1
- return a.valueOffsets[beg:end]
-}
-
-func (a *Binary) ValueBytes() []byte {
- beg := a.array.data.offset
- end := beg + a.array.data.length
- return a.valueBytes[a.valueOffsets[beg]:a.valueOffsets[end]]
-}
-
-func (a *Binary) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%q", a.ValueString(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Binary) setData(data *Data) {
- if len(data.buffers) != 3 {
- panic("len(data.buffers) != 3")
- }
-
- a.array.setData(data)
-
- if valueData := data.buffers[2]; valueData != nil {
- a.valueBytes = valueData.Bytes()
- }
-
- if valueOffsets := data.buffers[1]; valueOffsets != nil {
- a.valueOffsets = arrow.Int32Traits.CastFromBytes(valueOffsets.Bytes())
- }
-
- if a.array.data.length < 1 {
- return
- }
-
- expNumOffsets := a.array.data.offset + a.array.data.length + 1
- if len(a.valueOffsets) < expNumOffsets {
- panic(fmt.Errorf("arrow/array: binary offset buffer must have at least %d values", expNumOffsets))
- }
-
- if int(a.valueOffsets[expNumOffsets-1]) > len(a.valueBytes) {
- panic("arrow/array: binary offsets out of bounds of data buffer")
- }
-}
-
-func (a *Binary) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.Value(i)
-}
-
-func (a *Binary) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- // golang marshal standard says that []byte will be marshalled
- // as a base64-encoded string
- return json.Marshal(vals)
-}
-
-func arrayEqualBinary(left, right *Binary) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !bytes.Equal(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-type LargeBinary struct {
- array
- valueOffsets []int64
- valueBytes []byte
-}
-
-func NewLargeBinaryData(data arrow.ArrayData) *LargeBinary {
- a := &LargeBinary{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *LargeBinary) Value(i int) []byte {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- idx := a.array.data.offset + i
- return a.valueBytes[a.valueOffsets[idx]:a.valueOffsets[idx+1]]
-}
-
-func (a *LargeBinary) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return base64.StdEncoding.EncodeToString(a.Value(i))
-}
-func (a *LargeBinary) ValueString(i int) string {
- b := a.Value(i)
- return *(*string)(unsafe.Pointer(&b))
-}
-
-func (a *LargeBinary) ValueOffset(i int) int64 {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return a.valueOffsets[a.array.data.offset+i]
-}
-
-func (a *LargeBinary) ValueOffset64(i int) int64 {
- return a.ValueOffset(i)
-}
-
-func (a *LargeBinary) ValueLen(i int) int {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- beg := a.array.data.offset + i
- return int(a.valueOffsets[beg+1] - a.valueOffsets[beg])
-}
-
-func (a *LargeBinary) ValueOffsets() []int64 {
- beg := a.array.data.offset
- end := beg + a.array.data.length + 1
- return a.valueOffsets[beg:end]
-}
-
-func (a *LargeBinary) ValueBytes() []byte {
- beg := a.array.data.offset
- end := beg + a.array.data.length
- return a.valueBytes[a.valueOffsets[beg]:a.valueOffsets[end]]
-}
-
-func (a *LargeBinary) String() string {
- var o strings.Builder
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(&o, "%q", a.ValueString(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *LargeBinary) setData(data *Data) {
- if len(data.buffers) != 3 {
- panic("len(data.buffers) != 3")
- }
-
- a.array.setData(data)
-
- if valueData := data.buffers[2]; valueData != nil {
- a.valueBytes = valueData.Bytes()
- }
-
- if valueOffsets := data.buffers[1]; valueOffsets != nil {
- a.valueOffsets = arrow.Int64Traits.CastFromBytes(valueOffsets.Bytes())
- }
-
- if a.array.data.length < 1 {
- return
- }
-
- expNumOffsets := a.array.data.offset + a.array.data.length + 1
- if len(a.valueOffsets) < expNumOffsets {
- panic(fmt.Errorf("arrow/array: large binary offset buffer must have at least %d values", expNumOffsets))
- }
-
- if int(a.valueOffsets[expNumOffsets-1]) > len(a.valueBytes) {
- panic("arrow/array: large binary offsets out of bounds of data buffer")
- }
-}
-
-func (a *LargeBinary) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.Value(i)
-}
-
-func (a *LargeBinary) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- // golang marshal standard says that []byte will be marshalled
- // as a base64-encoded string
- return json.Marshal(vals)
-}
-
-func arrayEqualLargeBinary(left, right *LargeBinary) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !bytes.Equal(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-type ViewLike interface {
- arrow.Array
- ValueHeader(int) *arrow.ViewHeader
-}
-
-type BinaryView struct {
- array
- values []arrow.ViewHeader
- dataBuffers []*memory.Buffer
-}
-
-func NewBinaryViewData(data arrow.ArrayData) *BinaryView {
- a := &BinaryView{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *BinaryView) setData(data *Data) {
- if len(data.buffers) < 2 {
- panic("len(data.buffers) < 2")
- }
- a.array.setData(data)
-
- if valueData := data.buffers[1]; valueData != nil {
- a.values = arrow.ViewHeaderTraits.CastFromBytes(valueData.Bytes())
- }
-
- a.dataBuffers = data.buffers[2:]
-}
-
-func (a *BinaryView) ValueHeader(i int) *arrow.ViewHeader {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return &a.values[a.array.data.offset+i]
-}
-
-func (a *BinaryView) Value(i int) []byte {
- s := a.ValueHeader(i)
- if s.IsInline() {
- return s.InlineBytes()
- }
- start := s.BufferOffset()
- buf := a.dataBuffers[s.BufferIndex()]
- return buf.Bytes()[start : start+int32(s.Len())]
-}
-
-func (a *BinaryView) ValueLen(i int) int {
- s := a.ValueHeader(i)
- return s.Len()
-}
-
-// ValueString returns the value at index i as a string instead of
-// a byte slice, without copying the underlying data.
-func (a *BinaryView) ValueString(i int) string {
- b := a.Value(i)
- return *(*string)(unsafe.Pointer(&b))
-}
-
-func (a *BinaryView) String() string {
- var o strings.Builder
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(&o, "%q", a.ValueString(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-// ValueStr is paired with AppendValueFromString in that it returns
-// the value at index i as a string: Semantically this means that for
-// a null value it will return the string "(null)", otherwise it will
-// return the value as a base64 encoded string suitable for CSV/JSON.
-//
-// This is always going to be less performant than just using ValueString
-// and exists to fulfill the Array interface to provide a method which
-// can produce a human readable string for a given index.
-func (a *BinaryView) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return base64.StdEncoding.EncodeToString(a.Value(i))
-}
-
-func (a *BinaryView) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.Value(i)
-}
-
-func (a *BinaryView) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- // golang marshal standard says that []byte will be marshalled
- // as a base64-encoded string
- return json.Marshal(vals)
-}
-
-func arrayEqualBinaryView(left, right *BinaryView) bool {
- leftBufs, rightBufs := left.dataBuffers, right.dataBuffers
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !left.ValueHeader(i).Equals(leftBufs, right.ValueHeader(i), rightBufs) {
- return false
- }
- }
- return true
-}
-
-var (
- _ arrow.Array = (*Binary)(nil)
- _ arrow.Array = (*LargeBinary)(nil)
- _ arrow.Array = (*BinaryView)(nil)
-
- _ BinaryLike = (*Binary)(nil)
- _ BinaryLike = (*LargeBinary)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/binarybuilder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/binarybuilder.go
deleted file mode 100644
index 21ad57650..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/binarybuilder.go
+++ /dev/null
@@ -1,704 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "math"
- "reflect"
- "sync/atomic"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A BinaryBuilder is used to build a Binary array using the Append methods.
-type BinaryBuilder struct {
- builder
-
- dtype arrow.BinaryDataType
- offsets bufBuilder
- values *byteBufferBuilder
-
- appendOffsetVal func(int)
- getOffsetVal func(int) int
- maxCapacity uint64
- offsetByteWidth int
-}
-
-// NewBinaryBuilder can be used for any of the variable length binary types,
-// Binary, LargeBinary, String, LargeString by passing the appropriate data type
-func NewBinaryBuilder(mem memory.Allocator, dtype arrow.BinaryDataType) *BinaryBuilder {
- var (
- offsets bufBuilder
- offsetValFn func(int)
- maxCapacity uint64
- offsetByteWidth int
- getOffsetVal func(int) int
- )
- switch dtype.Layout().Buffers[1].ByteWidth {
- case 4:
- b := newInt32BufferBuilder(mem)
- offsetValFn = func(v int) { b.AppendValue(int32(v)) }
- getOffsetVal = func(i int) int { return int(b.Value(i)) }
- offsets = b
- maxCapacity = math.MaxInt32
- offsetByteWidth = arrow.Int32SizeBytes
- case 8:
- b := newInt64BufferBuilder(mem)
- offsetValFn = func(v int) { b.AppendValue(int64(v)) }
- getOffsetVal = func(i int) int { return int(b.Value(i)) }
- offsets = b
- maxCapacity = math.MaxInt64
- offsetByteWidth = arrow.Int64SizeBytes
- }
-
- b := &BinaryBuilder{
- builder: builder{refCount: 1, mem: mem},
- dtype: dtype,
- offsets: offsets,
- values: newByteBufferBuilder(mem),
- appendOffsetVal: offsetValFn,
- maxCapacity: maxCapacity,
- offsetByteWidth: offsetByteWidth,
- getOffsetVal: getOffsetVal,
- }
- return b
-}
-
-func (b *BinaryBuilder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (b *BinaryBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.offsets != nil {
- b.offsets.Release()
- b.offsets = nil
- }
- if b.values != nil {
- b.values.Release()
- b.values = nil
- }
- }
-}
-
-func (b *BinaryBuilder) Append(v []byte) {
- b.Reserve(1)
- b.appendNextOffset()
- b.values.Append(v)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *BinaryBuilder) AppendString(v string) {
- b.Append([]byte(v))
-}
-
-func (b *BinaryBuilder) AppendNull() {
- b.Reserve(1)
- b.appendNextOffset()
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *BinaryBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *BinaryBuilder) AppendEmptyValue() {
- b.Reserve(1)
- b.appendNextOffset()
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *BinaryBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *BinaryBuilder) AppendValues(v [][]byte, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- for _, vv := range v {
- b.appendNextOffset()
- b.values.Append(vv)
- }
-
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-// AppendStringValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *BinaryBuilder) AppendStringValues(v []string, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- for _, vv := range v {
- b.appendNextOffset()
- b.values.Append([]byte(vv))
- }
-
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *BinaryBuilder) UnsafeAppend(v []byte) {
- b.appendNextOffset()
- b.values.unsafeAppend(v)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *BinaryBuilder) Value(i int) []byte {
- start := b.getOffsetVal(i)
- var end int
- if i == (b.length - 1) {
- end = b.values.Len()
- } else {
- end = b.getOffsetVal(i + 1)
- }
- return b.values.Bytes()[start:end]
-}
-
-func (b *BinaryBuilder) init(capacity int) {
- b.builder.init(capacity)
- b.offsets.resize((capacity + 1) * b.offsetByteWidth)
-}
-
-// DataLen returns the number of bytes in the data array.
-func (b *BinaryBuilder) DataLen() int { return b.values.length }
-
-// DataCap returns the total number of bytes that can be stored
-// without allocating additional memory.
-func (b *BinaryBuilder) DataCap() int { return b.values.capacity }
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *BinaryBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// ReserveData ensures there is enough space for appending n bytes
-// by checking the capacity and resizing the data buffer if necessary.
-func (b *BinaryBuilder) ReserveData(n int) {
- if b.values.capacity < b.values.length+n {
- b.values.resize(b.values.Len() + n)
- }
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may be reduced.
-func (b *BinaryBuilder) Resize(n int) {
- b.offsets.resize((n + 1) * b.offsetByteWidth)
- if (n * b.offsetByteWidth) < b.offsets.Len() {
- b.offsets.SetLength(n * b.offsetByteWidth)
- }
- b.builder.resize(n, b.init)
-}
-
-func (b *BinaryBuilder) ResizeData(n int) {
- b.values.length = n
-}
-
-// NewArray creates a Binary array from the memory buffers used by the builder and resets the BinaryBuilder
-// so it can be used to build a new array.
-//
-// Builds the appropriate Binary or LargeBinary array based on the datatype
-// it was initialized with.
-func (b *BinaryBuilder) NewArray() arrow.Array {
- if b.offsetByteWidth == arrow.Int32SizeBytes {
- return b.NewBinaryArray()
- }
- return b.NewLargeBinaryArray()
-}
-
-// NewBinaryArray creates a Binary array from the memory buffers used by the builder and resets the BinaryBuilder
-// so it can be used to build a new array.
-func (b *BinaryBuilder) NewBinaryArray() (a *Binary) {
- if b.offsetByteWidth != arrow.Int32SizeBytes {
- panic("arrow/array: invalid call to NewBinaryArray when building a LargeBinary array")
- }
-
- data := b.newData()
- a = NewBinaryData(data)
- data.Release()
- return
-}
-
-func (b *BinaryBuilder) NewLargeBinaryArray() (a *LargeBinary) {
- if b.offsetByteWidth != arrow.Int64SizeBytes {
- panic("arrow/array: invalid call to NewLargeBinaryArray when building a Binary array")
- }
-
- data := b.newData()
- a = NewLargeBinaryData(data)
- data.Release()
- return
-}
-
-func (b *BinaryBuilder) newData() (data *Data) {
- b.appendNextOffset()
- offsets, values := b.offsets.Finish(), b.values.Finish()
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, offsets, values}, nil, b.nulls, 0)
- if offsets != nil {
- offsets.Release()
- }
-
- if values != nil {
- values.Release()
- }
-
- b.builder.reset()
-
- return
-}
-
-func (b *BinaryBuilder) appendNextOffset() {
- numBytes := b.values.Len()
- debug.Assert(uint64(numBytes) <= b.maxCapacity, "exceeded maximum capacity of binary array")
- b.appendOffsetVal(numBytes)
-}
-
-func (b *BinaryBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- if b.dtype.IsUtf8() {
- b.Append([]byte(s))
- return nil
- }
-
- decodedVal, err := base64.StdEncoding.DecodeString(s)
- if err != nil {
- return fmt.Errorf("could not decode base64 string: %w", err)
- }
- b.Append(decodedVal)
- return nil
-}
-
-func (b *BinaryBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case string:
- data, err := base64.StdEncoding.DecodeString(v)
- if err != nil {
- return err
- }
- b.Append(data)
- case []byte:
- b.Append(v)
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf([]byte{}),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *BinaryBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *BinaryBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-const (
- dfltBlockSize = 32 << 10 // 32 KB
- viewValueSizeLimit int32 = math.MaxInt32
-)
-
-type BinaryViewBuilder struct {
- builder
- dtype arrow.BinaryDataType
-
- data *memory.Buffer
- rawData []arrow.ViewHeader
-
- blockBuilder multiBufferBuilder
-}
-
-func NewBinaryViewBuilder(mem memory.Allocator) *BinaryViewBuilder {
- return &BinaryViewBuilder{
- dtype: arrow.BinaryTypes.BinaryView,
- builder: builder{
- refCount: 1,
- mem: mem,
- },
- blockBuilder: multiBufferBuilder{
- refCount: 1,
- blockSize: dfltBlockSize,
- mem: mem,
- },
- }
-}
-
-func (b *BinaryViewBuilder) SetBlockSize(sz uint) {
- b.blockBuilder.blockSize = int(sz)
-}
-
-func (b *BinaryViewBuilder) Type() arrow.DataType { return b.dtype }
-
-func (b *BinaryViewBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) != 0 {
- return
- }
-
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-}
-
-func (b *BinaryViewBuilder) init(capacity int) {
- b.builder.init(capacity)
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.ViewHeaderTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.ViewHeaderTraits.CastFromBytes(b.data.Bytes())
-}
-
-func (b *BinaryViewBuilder) Resize(n int) {
- nbuild := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- return
- }
-
- b.builder.resize(nbuild, b.init)
- b.data.Resize(arrow.ViewHeaderTraits.BytesRequired(n))
- b.rawData = arrow.ViewHeaderTraits.CastFromBytes(b.data.Bytes())
-}
-
-func (b *BinaryViewBuilder) ReserveData(length int) {
- if int32(length) > viewValueSizeLimit {
- panic(fmt.Errorf("%w: BinaryView or StringView elements cannot reference strings larger than 2GB",
- arrow.ErrInvalid))
- }
- b.blockBuilder.Reserve(int(length))
-}
-
-func (b *BinaryViewBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-func (b *BinaryViewBuilder) Append(v []byte) {
- if int32(len(v)) > viewValueSizeLimit {
- panic(fmt.Errorf("%w: BinaryView or StringView elements cannot reference strings larger than 2GB", arrow.ErrInvalid))
- }
-
- if !arrow.IsViewInline(len(v)) {
- b.ReserveData(len(v))
- }
-
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-// AppendString is identical to Append, only accepting a string instead
-// of a byte slice, avoiding the extra copy that would occur if you simply
-// did []byte(v).
-//
-// This is different than AppendValueFromString which exists for the
-// Builder interface, in that this expects raw binary data which is
-// appended unmodified. AppendValueFromString expects base64 encoded binary
-// data instead.
-func (b *BinaryViewBuilder) AppendString(v string) {
- // create a []byte without copying the bytes
- // in go1.20 this would be unsafe.StringData
- val := *(*[]byte)(unsafe.Pointer(&struct {
- string
- int
- }{v, len(v)}))
- b.Append(val)
-}
-
-func (b *BinaryViewBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *BinaryViewBuilder) AppendNulls(n int) {
- b.Reserve(n)
- for i := 0; i < n; i++ {
- b.UnsafeAppendBoolToBitmap(false)
- }
-}
-
-func (b *BinaryViewBuilder) AppendEmptyValue() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *BinaryViewBuilder) AppendEmptyValues(n int) {
- b.Reserve(n)
- b.unsafeAppendBoolsToBitmap(nil, n)
-}
-
-func (b *BinaryViewBuilder) UnsafeAppend(v []byte) {
- hdr := &b.rawData[b.length]
- hdr.SetBytes(v)
- if !hdr.IsInline() {
- b.blockBuilder.UnsafeAppend(hdr, v)
- }
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *BinaryViewBuilder) AppendValues(v [][]byte, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- outOfLineTotal := 0
- for i, vv := range v {
- if len(valid) == 0 || valid[i] {
- if !arrow.IsViewInline(len(vv)) {
- outOfLineTotal += len(vv)
- }
- }
- }
-
- b.ReserveData(outOfLineTotal)
- for i, vv := range v {
- if len(valid) == 0 || valid[i] {
- hdr := &b.rawData[b.length+i]
- hdr.SetBytes(vv)
- if !hdr.IsInline() {
- b.blockBuilder.UnsafeAppend(hdr, vv)
- }
- }
- }
-
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *BinaryViewBuilder) AppendStringValues(v []string, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- outOfLineTotal := 0
- for i, vv := range v {
- if len(valid) == 0 || valid[i] {
- if !arrow.IsViewInline(len(vv)) {
- outOfLineTotal += len(vv)
- }
- }
- }
-
- b.ReserveData(outOfLineTotal)
- for i, vv := range v {
- if len(valid) == 0 || valid[i] {
- hdr := &b.rawData[b.length+i]
- hdr.SetString(vv)
- if !hdr.IsInline() {
- b.blockBuilder.UnsafeAppendString(hdr, vv)
- }
- }
- }
-
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-// AppendValueFromString is paired with ValueStr for fulfilling the
-// base Builder interface. This is intended to read in a human-readable
-// string such as from CSV or JSON and append it to the array.
-//
-// For Binary values are expected to be base64 encoded (and will be
-// decoded as such before being appended).
-func (b *BinaryViewBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- if b.dtype.IsUtf8() {
- b.Append([]byte(s))
- return nil
- }
-
- decodedVal, err := base64.StdEncoding.DecodeString(s)
- if err != nil {
- return fmt.Errorf("could not decode base64 string: %w", err)
- }
- b.Append(decodedVal)
- return nil
-}
-
-func (b *BinaryViewBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case string:
- data, err := base64.StdEncoding.DecodeString(v)
- if err != nil {
- return err
- }
- b.Append(data)
- case []byte:
- b.Append(v)
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf([]byte{}),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *BinaryViewBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *BinaryViewBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary view builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-func (b *BinaryViewBuilder) newData() (data *Data) {
- bytesRequired := arrow.ViewHeaderTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
-
- dataBuffers := b.blockBuilder.Finish()
- data = NewData(b.dtype, b.length, append([]*memory.Buffer{
- b.nullBitmap, b.data}, dataBuffers...), nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- for _, buf := range dataBuffers {
- buf.Release()
- }
- }
- return
-}
-
-func (b *BinaryViewBuilder) NewBinaryViewArray() (a *BinaryView) {
- data := b.newData()
- a = NewBinaryViewData(data)
- data.Release()
- return
-}
-
-func (b *BinaryViewBuilder) NewArray() arrow.Array {
- return b.NewBinaryViewArray()
-}
-
-var (
- _ Builder = (*BinaryBuilder)(nil)
- _ Builder = (*BinaryViewBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/boolean.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/boolean.go
deleted file mode 100644
index 43bac64a4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/boolean.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "strconv"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A type which represents an immutable sequence of boolean values.
-type Boolean struct {
- array
- values []byte
-}
-
-// NewBoolean creates a boolean array from the data memory.Buffer and contains length elements.
-// The nullBitmap buffer can be nil of there are no null values.
-// If nulls is not known, use UnknownNullCount to calculate the value of NullN at runtime from the nullBitmap buffer.
-func NewBoolean(length int, data *memory.Buffer, nullBitmap *memory.Buffer, nulls int) *Boolean {
- arrdata := NewData(arrow.FixedWidthTypes.Boolean, length, []*memory.Buffer{nullBitmap, data}, nil, nulls, 0)
- defer arrdata.Release()
- return NewBooleanData(arrdata)
-}
-
-func NewBooleanData(data arrow.ArrayData) *Boolean {
- a := &Boolean{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Boolean) Value(i int) bool {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return bitutil.BitIsSet(a.values, a.array.data.offset+i)
-}
-
-func (a *Boolean) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- } else {
- return strconv.FormatBool(a.Value(i))
- }
-}
-
-func (a *Boolean) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Boolean) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = vals.Bytes()
- }
-}
-
-func (a *Boolean) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.Value(i)
- }
- return nil
-}
-
-func (a *Boolean) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.Value(i)
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualBoolean(left, right *Boolean) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-var (
- _ arrow.Array = (*Boolean)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/booleanbuilder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/booleanbuilder.go
deleted file mode 100644
index cd0cffd5e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/booleanbuilder.go
+++ /dev/null
@@ -1,263 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strconv"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type BooleanBuilder struct {
- builder
-
- data *memory.Buffer
- rawData []byte
-}
-
-func NewBooleanBuilder(mem memory.Allocator) *BooleanBuilder {
- return &BooleanBuilder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *BooleanBuilder) Type() arrow.DataType { return arrow.FixedWidthTypes.Boolean }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (b *BooleanBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *BooleanBuilder) Append(v bool) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *BooleanBuilder) AppendByte(v byte) {
- b.Reserve(1)
- b.UnsafeAppend(v != 0)
-}
-
-func (b *BooleanBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *BooleanBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *BooleanBuilder) AppendEmptyValue() {
- b.Reserve(1)
- b.UnsafeAppend(false)
-}
-
-func (b *BooleanBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *BooleanBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- val, err := strconv.ParseBool(s)
- if err != nil {
- return err
- }
- b.Append(val)
- return nil
-}
-
-func (b *BooleanBuilder) UnsafeAppend(v bool) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- if v {
- bitutil.SetBit(b.rawData, b.length)
- } else {
- bitutil.ClearBit(b.rawData, b.length)
- }
- b.length++
-}
-
-func (b *BooleanBuilder) AppendValues(v []bool, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- for i, vv := range v {
- bitutil.SetBitTo(b.rawData, b.length+i, vv)
- }
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *BooleanBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.BooleanTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = b.data.Bytes()
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *BooleanBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *BooleanBuilder) Resize(n int) {
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(n, b.init)
- b.data.Resize(arrow.BooleanTraits.BytesRequired(n))
- b.rawData = b.data.Bytes()
- }
-}
-
-// NewArray creates a Boolean array from the memory buffers used by the builder and resets the BooleanBuilder
-// so it can be used to build a new array.
-func (b *BooleanBuilder) NewArray() arrow.Array {
- return b.NewBooleanArray()
-}
-
-// NewBooleanArray creates a Boolean array from the memory buffers used by the builder and resets the BooleanBuilder
-// so it can be used to build a new array.
-func (b *BooleanBuilder) NewBooleanArray() (a *Boolean) {
- data := b.newData()
- a = NewBooleanData(data)
- data.Release()
- return
-}
-
-func (b *BooleanBuilder) newData() *Data {
- bytesRequired := arrow.BooleanTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- res := NewData(arrow.FixedWidthTypes.Boolean, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return res
-}
-
-func (b *BooleanBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case bool:
- b.Append(v)
- case string:
- val, err := strconv.ParseBool(v)
- if err != nil {
- return err
- }
- b.Append(val)
- case json.Number:
- val, err := strconv.ParseBool(v.String())
- if err != nil {
- return err
- }
- b.Append(val)
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(true),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *BooleanBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *BooleanBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- dec.UseNumber()
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("boolean builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-func (b *BooleanBuilder) Value(i int) bool {
- return bitutil.BitIsSet(b.rawData, i)
-}
-
-var (
- _ Builder = (*BooleanBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder.go
deleted file mode 100644
index 13741ba89..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder.go
+++ /dev/null
@@ -1,261 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "sync/atomic"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-type bufBuilder interface {
- Retain()
- Release()
- Len() int
- Cap() int
- Bytes() []byte
- resize(int)
- Advance(int)
- SetLength(int)
- Append([]byte)
- Reset()
- Finish() *memory.Buffer
-}
-
-// A bufferBuilder provides common functionality for populating memory with a sequence of type-specific values.
-// Specialized implementations provide type-safe APIs for appending and accessing the memory.
-type bufferBuilder struct {
- refCount int64
- mem memory.Allocator
- buffer *memory.Buffer
- length int
- capacity int
-
- bytes []byte
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (b *bufferBuilder) Retain() {
- atomic.AddInt64(&b.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (b *bufferBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.buffer != nil {
- b.buffer.Release()
- b.buffer, b.bytes = nil, nil
- }
- }
-}
-
-// Len returns the length of the memory buffer in bytes.
-func (b *bufferBuilder) Len() int { return b.length }
-
-// Cap returns the total number of bytes that can be stored without allocating additional memory.
-func (b *bufferBuilder) Cap() int { return b.capacity }
-
-// Bytes returns a slice of length b.Len().
-// The slice is only valid for use until the next buffer modification. That is, until the next call
-// to Advance, Reset, Finish or any Append function. The slice aliases the buffer content at least until the next
-// buffer modification.
-func (b *bufferBuilder) Bytes() []byte { return b.bytes[:b.length] }
-
-func (b *bufferBuilder) resize(elements int) {
- if b.buffer == nil {
- b.buffer = memory.NewResizableBuffer(b.mem)
- }
-
- b.buffer.ResizeNoShrink(elements)
- oldCapacity := b.capacity
- b.capacity = b.buffer.Cap()
- b.bytes = b.buffer.Buf()
-
- if b.capacity > oldCapacity {
- memory.Set(b.bytes[oldCapacity:], 0)
- }
-}
-
-func (b *bufferBuilder) SetLength(length int) {
- if length > b.length {
- b.Advance(length)
- return
- }
-
- b.length = length
-}
-
-// Advance increases the buffer by length and initializes the skipped bytes to zero.
-func (b *bufferBuilder) Advance(length int) {
- if b.capacity < b.length+length {
- newCapacity := bitutil.NextPowerOf2(b.length + length)
- b.resize(newCapacity)
- }
- b.length += length
-}
-
-// Append appends the contents of v to the buffer, resizing it if necessary.
-func (b *bufferBuilder) Append(v []byte) {
- if b.capacity < b.length+len(v) {
- newCapacity := bitutil.NextPowerOf2(b.length + len(v))
- b.resize(newCapacity)
- }
- b.unsafeAppend(v)
-}
-
-// Reset returns the buffer to an empty state. Reset releases the memory and sets the length and capacity to zero.
-func (b *bufferBuilder) Reset() {
- if b.buffer != nil {
- b.buffer.Release()
- }
- b.buffer, b.bytes = nil, nil
- b.capacity, b.length = 0, 0
-}
-
-// Finish TODO(sgc)
-func (b *bufferBuilder) Finish() (buffer *memory.Buffer) {
- if b.length > 0 {
- b.buffer.ResizeNoShrink(b.length)
- }
- buffer = b.buffer
- b.buffer = nil
- b.Reset()
- if buffer == nil {
- buffer = memory.NewBufferBytes(nil)
- }
- return
-}
-
-func (b *bufferBuilder) unsafeAppend(data []byte) {
- copy(b.bytes[b.length:], data)
- b.length += len(data)
-}
-
-type multiBufferBuilder struct {
- refCount int64
- blockSize int
-
- mem memory.Allocator
- blocks []*memory.Buffer
- currentOutBuffer int
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (b *multiBufferBuilder) Retain() {
- atomic.AddInt64(&b.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (b *multiBufferBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- b.Reset()
- }
-}
-
-func (b *multiBufferBuilder) Reserve(nbytes int) {
- if len(b.blocks) == 0 {
- out := memory.NewResizableBuffer(b.mem)
- if nbytes < b.blockSize {
- nbytes = b.blockSize
- }
- out.Reserve(nbytes)
- b.currentOutBuffer = 0
- b.blocks = []*memory.Buffer{out}
- return
- }
-
- curBuf := b.blocks[b.currentOutBuffer]
- remain := curBuf.Cap() - curBuf.Len()
- if nbytes <= remain {
- return
- }
-
- // search for underfull block that has enough bytes
- for i, block := range b.blocks {
- remaining := block.Cap() - block.Len()
- if nbytes <= remaining {
- b.currentOutBuffer = i
- return
- }
- }
-
- // current buffer doesn't have enough space, no underfull buffers
- // make new buffer and set that as our current.
- newBuf := memory.NewResizableBuffer(b.mem)
- if nbytes < b.blockSize {
- nbytes = b.blockSize
- }
-
- newBuf.Reserve(nbytes)
- b.currentOutBuffer = len(b.blocks)
- b.blocks = append(b.blocks, newBuf)
-}
-
-func (b *multiBufferBuilder) RemainingBytes() int {
- if len(b.blocks) == 0 {
- return 0
- }
-
- buf := b.blocks[b.currentOutBuffer]
- return buf.Cap() - buf.Len()
-}
-
-func (b *multiBufferBuilder) Reset() {
- b.currentOutBuffer = 0
- for _, block := range b.Finish() {
- block.Release()
- }
-}
-
-func (b *multiBufferBuilder) UnsafeAppend(hdr *arrow.ViewHeader, val []byte) {
- buf := b.blocks[b.currentOutBuffer]
- idx, offset := b.currentOutBuffer, buf.Len()
- hdr.SetIndexOffset(int32(idx), int32(offset))
-
- n := copy(buf.Buf()[offset:], val)
- buf.ResizeNoShrink(offset + n)
-}
-
-func (b *multiBufferBuilder) UnsafeAppendString(hdr *arrow.ViewHeader, val string) {
- // create a byte slice with zero-copies
- // in go1.20 this would be equivalent to unsafe.StringData
- v := *(*[]byte)(unsafe.Pointer(&struct {
- string
- int
- }{val, len(val)}))
- b.UnsafeAppend(hdr, v)
-}
-
-func (b *multiBufferBuilder) Finish() (out []*memory.Buffer) {
- b.currentOutBuffer = 0
- out, b.blocks = b.blocks, nil
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_byte.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_byte.go
deleted file mode 100644
index 9b2b559ba..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_byte.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import "github.com/apache/arrow/go/v15/arrow/memory"
-
-type byteBufferBuilder struct {
- bufferBuilder
-}
-
-func newByteBufferBuilder(mem memory.Allocator) *byteBufferBuilder {
- return &byteBufferBuilder{bufferBuilder: bufferBuilder{refCount: 1, mem: mem}}
-}
-
-func (b *byteBufferBuilder) Values() []byte { return b.Bytes() }
-func (b *byteBufferBuilder) Value(i int) byte { return b.bytes[i] }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go
deleted file mode 100644
index a7961166c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go
+++ /dev/null
@@ -1,124 +0,0 @@
-// Code generated by array/bufferbuilder_numeric.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-type int64BufferBuilder struct {
- bufferBuilder
-}
-
-func newInt64BufferBuilder(mem memory.Allocator) *int64BufferBuilder {
- return &int64BufferBuilder{bufferBuilder: bufferBuilder{refCount: 1, mem: mem}}
-}
-
-// AppendValues appends the contents of v to the buffer, growing the buffer as needed.
-func (b *int64BufferBuilder) AppendValues(v []int64) { b.Append(arrow.Int64Traits.CastToBytes(v)) }
-
-// Values returns a slice of length b.Len().
-// The slice is only valid for use until the next buffer modification. That is, until the next call
-// to Advance, Reset, Finish or any Append function. The slice aliases the buffer content at least until the next
-// buffer modification.
-func (b *int64BufferBuilder) Values() []int64 { return arrow.Int64Traits.CastFromBytes(b.Bytes()) }
-
-// Value returns the int64 element at the index i. Value will panic if i is negative or ≥ Len.
-func (b *int64BufferBuilder) Value(i int) int64 { return b.Values()[i] }
-
-// Len returns the number of int64 elements in the buffer.
-func (b *int64BufferBuilder) Len() int { return b.length / arrow.Int64SizeBytes }
-
-// AppendValue appends v to the buffer, growing the buffer as needed.
-func (b *int64BufferBuilder) AppendValue(v int64) {
- if b.capacity < b.length+arrow.Int64SizeBytes {
- newCapacity := bitutil.NextPowerOf2(b.length + arrow.Int64SizeBytes)
- b.resize(newCapacity)
- }
- arrow.Int64Traits.PutValue(b.bytes[b.length:], v)
- b.length += arrow.Int64SizeBytes
-}
-
-type int32BufferBuilder struct {
- bufferBuilder
-}
-
-func newInt32BufferBuilder(mem memory.Allocator) *int32BufferBuilder {
- return &int32BufferBuilder{bufferBuilder: bufferBuilder{refCount: 1, mem: mem}}
-}
-
-// AppendValues appends the contents of v to the buffer, growing the buffer as needed.
-func (b *int32BufferBuilder) AppendValues(v []int32) { b.Append(arrow.Int32Traits.CastToBytes(v)) }
-
-// Values returns a slice of length b.Len().
-// The slice is only valid for use until the next buffer modification. That is, until the next call
-// to Advance, Reset, Finish or any Append function. The slice aliases the buffer content at least until the next
-// buffer modification.
-func (b *int32BufferBuilder) Values() []int32 { return arrow.Int32Traits.CastFromBytes(b.Bytes()) }
-
-// Value returns the int32 element at the index i. Value will panic if i is negative or ≥ Len.
-func (b *int32BufferBuilder) Value(i int) int32 { return b.Values()[i] }
-
-// Len returns the number of int32 elements in the buffer.
-func (b *int32BufferBuilder) Len() int { return b.length / arrow.Int32SizeBytes }
-
-// AppendValue appends v to the buffer, growing the buffer as needed.
-func (b *int32BufferBuilder) AppendValue(v int32) {
- if b.capacity < b.length+arrow.Int32SizeBytes {
- newCapacity := bitutil.NextPowerOf2(b.length + arrow.Int32SizeBytes)
- b.resize(newCapacity)
- }
- arrow.Int32Traits.PutValue(b.bytes[b.length:], v)
- b.length += arrow.Int32SizeBytes
-}
-
-type int8BufferBuilder struct {
- bufferBuilder
-}
-
-func newInt8BufferBuilder(mem memory.Allocator) *int8BufferBuilder {
- return &int8BufferBuilder{bufferBuilder: bufferBuilder{refCount: 1, mem: mem}}
-}
-
-// AppendValues appends the contents of v to the buffer, growing the buffer as needed.
-func (b *int8BufferBuilder) AppendValues(v []int8) { b.Append(arrow.Int8Traits.CastToBytes(v)) }
-
-// Values returns a slice of length b.Len().
-// The slice is only valid for use until the next buffer modification. That is, until the next call
-// to Advance, Reset, Finish or any Append function. The slice aliases the buffer content at least until the next
-// buffer modification.
-func (b *int8BufferBuilder) Values() []int8 { return arrow.Int8Traits.CastFromBytes(b.Bytes()) }
-
-// Value returns the int8 element at the index i. Value will panic if i is negative or ≥ Len.
-func (b *int8BufferBuilder) Value(i int) int8 { return b.Values()[i] }
-
-// Len returns the number of int8 elements in the buffer.
-func (b *int8BufferBuilder) Len() int { return b.length / arrow.Int8SizeBytes }
-
-// AppendValue appends v to the buffer, growing the buffer as needed.
-func (b *int8BufferBuilder) AppendValue(v int8) {
- if b.capacity < b.length+arrow.Int8SizeBytes {
- newCapacity := bitutil.NextPowerOf2(b.length + arrow.Int8SizeBytes)
- b.resize(newCapacity)
- }
- arrow.Int8Traits.PutValue(b.bytes[b.length:], v)
- b.length += arrow.Int8SizeBytes
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go.tmpl
deleted file mode 100644
index 845d7ef01..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/bufferbuilder_numeric.gen.go.tmpl
+++ /dev/null
@@ -1,61 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-{{range .In}}
-{{$TypeNamePrefix := .name}}
-{{if .Opt.BufferBuilder}}
-type {{$TypeNamePrefix}}BufferBuilder struct {
- bufferBuilder
-}
-
-func new{{.Name}}BufferBuilder(mem memory.Allocator) *{{$TypeNamePrefix}}BufferBuilder {
- return &{{$TypeNamePrefix}}BufferBuilder{bufferBuilder:bufferBuilder{refCount: 1, mem:mem}}
-}
-
-// AppendValues appends the contents of v to the buffer, growing the buffer as needed.
-func (b *{{$TypeNamePrefix}}BufferBuilder) AppendValues(v []{{.Type}}) { b.Append(arrow.{{.Name}}Traits.CastToBytes(v)) }
-
-// Values returns a slice of length b.Len().
-// The slice is only valid for use until the next buffer modification. That is, until the next call
-// to Advance, Reset, Finish or any Append function. The slice aliases the buffer content at least until the next
-// buffer modification.
-func (b *{{$TypeNamePrefix}}BufferBuilder) Values() []{{.Type}} { return arrow.{{.Name}}Traits.CastFromBytes(b.Bytes()) }
-
-// Value returns the {{.Type}} element at the index i. Value will panic if i is negative or ≥ Len.
-func (b *{{$TypeNamePrefix}}BufferBuilder) Value(i int) {{.Type}} { return b.Values()[i] }
-
-// Len returns the number of {{.Type}} elements in the buffer.
-func (b *{{$TypeNamePrefix}}BufferBuilder) Len() int { return b.length/arrow.{{.Name}}SizeBytes }
-
-// AppendValue appends v to the buffer, growing the buffer as needed.
-func (b *{{$TypeNamePrefix}}BufferBuilder) AppendValue(v {{.Type}}) {
- if b.capacity < b.length+arrow.{{.Name}}SizeBytes {
- newCapacity := bitutil.NextPowerOf2(b.length + arrow.{{.Name}}SizeBytes)
- b.resize(newCapacity)
- }
- arrow.{{.Name}}Traits.PutValue(b.bytes[b.length:], v)
- b.length+=arrow.{{.Name}}SizeBytes
-}
-{{end}}
-{{end}}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/builder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/builder.go
deleted file mode 100644
index 279804a1c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/builder.go
+++ /dev/null
@@ -1,373 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-const (
- minBuilderCapacity = 1 << 5
-)
-
-// Builder provides an interface to build arrow arrays.
-type Builder interface {
- // you can unmarshal a json array to add the values to a builder
- json.Unmarshaler
-
- // Type returns the datatype that this is building
- Type() arrow.DataType
-
- // Retain increases the reference count by 1.
- // Retain may be called simultaneously from multiple goroutines.
- Retain()
-
- // Release decreases the reference count by 1.
- Release()
-
- // Len returns the number of elements in the array builder.
- Len() int
-
- // Cap returns the total number of elements that can be stored
- // without allocating additional memory.
- Cap() int
-
- // NullN returns the number of null values in the array builder.
- NullN() int
-
- // AppendNull adds a new null value to the array being built.
- AppendNull()
-
- // AppendNulls adds new n null values to the array being built.
- AppendNulls(n int)
-
- // AppendEmptyValue adds a new zero value of the appropriate type
- AppendEmptyValue()
-
- // AppendEmptyValues adds new n zero values of the appropriate type
- AppendEmptyValues(n int)
-
- // AppendValueFromString adds a new value from a string. Inverse of array.ValueStr(i int) string
- AppendValueFromString(string) error
-
- // Reserve ensures there is enough space for appending n elements
- // by checking the capacity and calling Resize if necessary.
- Reserve(n int)
-
- // Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
- // additional memory will be allocated. If n is smaller, the allocated memory may reduced.
- Resize(n int)
-
- // NewArray creates a new array from the memory buffers used
- // by the builder and resets the Builder so it can be used to build
- // a new array.
- NewArray() arrow.Array
-
- // IsNull returns if a previously appended value at a given index is null or not.
- IsNull(i int) bool
-
- // SetNull sets the value at index i to null.
- SetNull(i int)
-
- UnsafeAppendBoolToBitmap(bool)
-
- init(capacity int)
- resize(newBits int, init func(int))
-
- UnmarshalOne(*json.Decoder) error
- Unmarshal(*json.Decoder) error
-
- newData() *Data
-}
-
-// builder provides common functionality for managing the validity bitmap (nulls) when building arrays.
-type builder struct {
- refCount int64
- mem memory.Allocator
- nullBitmap *memory.Buffer
- nulls int
- length int
- capacity int
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (b *builder) Retain() {
- atomic.AddInt64(&b.refCount, 1)
-}
-
-// Len returns the number of elements in the array builder.
-func (b *builder) Len() int { return b.length }
-
-// Cap returns the total number of elements that can be stored without allocating additional memory.
-func (b *builder) Cap() int { return b.capacity }
-
-// NullN returns the number of null values in the array builder.
-func (b *builder) NullN() int { return b.nulls }
-
-func (b *builder) IsNull(i int) bool {
- return b.nullBitmap.Len() != 0 && bitutil.BitIsNotSet(b.nullBitmap.Bytes(), i)
-}
-
-func (b *builder) SetNull(i int) {
- if i < 0 || i >= b.length {
- panic("arrow/array: index out of range")
- }
- bitutil.ClearBit(b.nullBitmap.Bytes(), i)
-}
-
-func (b *builder) init(capacity int) {
- toAlloc := bitutil.CeilByte(capacity) / 8
- b.nullBitmap = memory.NewResizableBuffer(b.mem)
- b.nullBitmap.Resize(toAlloc)
- b.capacity = capacity
- memory.Set(b.nullBitmap.Buf(), 0)
-}
-
-func (b *builder) reset() {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
-
- b.nulls = 0
- b.length = 0
- b.capacity = 0
-}
-
-func (b *builder) resize(newBits int, init func(int)) {
- if b.nullBitmap == nil {
- init(newBits)
- return
- }
-
- newBytesN := bitutil.CeilByte(newBits) / 8
- oldBytesN := b.nullBitmap.Len()
- b.nullBitmap.Resize(newBytesN)
- b.capacity = newBits
- if oldBytesN < newBytesN {
- // TODO(sgc): necessary?
- memory.Set(b.nullBitmap.Buf()[oldBytesN:], 0)
- }
- if newBits < b.length {
- b.length = newBits
- b.nulls = newBits - bitutil.CountSetBits(b.nullBitmap.Buf(), 0, newBits)
- }
-}
-
-func (b *builder) reserve(elements int, resize func(int)) {
- if b.nullBitmap == nil {
- b.nullBitmap = memory.NewResizableBuffer(b.mem)
- }
- if b.length+elements > b.capacity {
- newCap := bitutil.NextPowerOf2(b.length + elements)
- resize(newCap)
- }
-}
-
-// unsafeAppendBoolsToBitmap appends the contents of valid to the validity bitmap.
-// As an optimization, if the valid slice is empty, the next length bits will be set to valid (not null).
-func (b *builder) unsafeAppendBoolsToBitmap(valid []bool, length int) {
- if len(valid) == 0 {
- b.unsafeSetValid(length)
- return
- }
-
- byteOffset := b.length / 8
- bitOffset := byte(b.length % 8)
- nullBitmap := b.nullBitmap.Bytes()
- bitSet := nullBitmap[byteOffset]
-
- for _, v := range valid {
- if bitOffset == 8 {
- bitOffset = 0
- nullBitmap[byteOffset] = bitSet
- byteOffset++
- bitSet = nullBitmap[byteOffset]
- }
-
- if v {
- bitSet |= bitutil.BitMask[bitOffset]
- } else {
- bitSet &= bitutil.FlippedBitMask[bitOffset]
- b.nulls++
- }
- bitOffset++
- }
-
- if bitOffset != 0 {
- nullBitmap[byteOffset] = bitSet
- }
- b.length += len(valid)
-}
-
-// unsafeSetValid sets the next length bits to valid in the validity bitmap.
-func (b *builder) unsafeSetValid(length int) {
- padToByte := min(8-(b.length%8), length)
- if padToByte == 8 {
- padToByte = 0
- }
- bits := b.nullBitmap.Bytes()
- for i := b.length; i < b.length+padToByte; i++ {
- bitutil.SetBit(bits, i)
- }
-
- start := (b.length + padToByte) / 8
- fastLength := (length - padToByte) / 8
- memory.Set(bits[start:start+fastLength], 0xff)
-
- newLength := b.length + length
- // trailing bytes
- for i := b.length + padToByte + (fastLength * 8); i < newLength; i++ {
- bitutil.SetBit(bits, i)
- }
-
- b.length = newLength
-}
-
-func (b *builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-func NewBuilder(mem memory.Allocator, dtype arrow.DataType) Builder {
- // FIXME(sbinet): use a type switch on dtype instead?
- switch dtype.ID() {
- case arrow.NULL:
- return NewNullBuilder(mem)
- case arrow.BOOL:
- return NewBooleanBuilder(mem)
- case arrow.UINT8:
- return NewUint8Builder(mem)
- case arrow.INT8:
- return NewInt8Builder(mem)
- case arrow.UINT16:
- return NewUint16Builder(mem)
- case arrow.INT16:
- return NewInt16Builder(mem)
- case arrow.UINT32:
- return NewUint32Builder(mem)
- case arrow.INT32:
- return NewInt32Builder(mem)
- case arrow.UINT64:
- return NewUint64Builder(mem)
- case arrow.INT64:
- return NewInt64Builder(mem)
- case arrow.FLOAT16:
- return NewFloat16Builder(mem)
- case arrow.FLOAT32:
- return NewFloat32Builder(mem)
- case arrow.FLOAT64:
- return NewFloat64Builder(mem)
- case arrow.STRING:
- return NewStringBuilder(mem)
- case arrow.LARGE_STRING:
- return NewLargeStringBuilder(mem)
- case arrow.BINARY:
- return NewBinaryBuilder(mem, arrow.BinaryTypes.Binary)
- case arrow.LARGE_BINARY:
- return NewBinaryBuilder(mem, arrow.BinaryTypes.LargeBinary)
- case arrow.FIXED_SIZE_BINARY:
- typ := dtype.(*arrow.FixedSizeBinaryType)
- return NewFixedSizeBinaryBuilder(mem, typ)
- case arrow.DATE32:
- return NewDate32Builder(mem)
- case arrow.DATE64:
- return NewDate64Builder(mem)
- case arrow.TIMESTAMP:
- typ := dtype.(*arrow.TimestampType)
- return NewTimestampBuilder(mem, typ)
- case arrow.TIME32:
- typ := dtype.(*arrow.Time32Type)
- return NewTime32Builder(mem, typ)
- case arrow.TIME64:
- typ := dtype.(*arrow.Time64Type)
- return NewTime64Builder(mem, typ)
- case arrow.INTERVAL_MONTHS:
- return NewMonthIntervalBuilder(mem)
- case arrow.INTERVAL_DAY_TIME:
- return NewDayTimeIntervalBuilder(mem)
- case arrow.INTERVAL_MONTH_DAY_NANO:
- return NewMonthDayNanoIntervalBuilder(mem)
- case arrow.DECIMAL128:
- if typ, ok := dtype.(*arrow.Decimal128Type); ok {
- return NewDecimal128Builder(mem, typ)
- }
- case arrow.DECIMAL256:
- if typ, ok := dtype.(*arrow.Decimal256Type); ok {
- return NewDecimal256Builder(mem, typ)
- }
- case arrow.LIST:
- typ := dtype.(*arrow.ListType)
- return NewListBuilderWithField(mem, typ.ElemField())
- case arrow.STRUCT:
- typ := dtype.(*arrow.StructType)
- return NewStructBuilder(mem, typ)
- case arrow.SPARSE_UNION:
- typ := dtype.(*arrow.SparseUnionType)
- return NewSparseUnionBuilder(mem, typ)
- case arrow.DENSE_UNION:
- typ := dtype.(*arrow.DenseUnionType)
- return NewDenseUnionBuilder(mem, typ)
- case arrow.DICTIONARY:
- typ := dtype.(*arrow.DictionaryType)
- return NewDictionaryBuilder(mem, typ)
- case arrow.LARGE_LIST:
- typ := dtype.(*arrow.LargeListType)
- return NewLargeListBuilderWithField(mem, typ.ElemField())
- case arrow.MAP:
- typ := dtype.(*arrow.MapType)
- return NewMapBuilderWithType(mem, typ)
- case arrow.LIST_VIEW:
- typ := dtype.(*arrow.ListViewType)
- return NewListViewBuilderWithField(mem, typ.ElemField())
- case arrow.LARGE_LIST_VIEW:
- typ := dtype.(*arrow.LargeListViewType)
- return NewLargeListViewBuilderWithField(mem, typ.ElemField())
- case arrow.EXTENSION:
- typ := dtype.(arrow.ExtensionType)
- bldr := NewExtensionBuilder(mem, typ)
- if custom, ok := typ.(ExtensionBuilderWrapper); ok {
- return custom.NewBuilder(bldr)
- }
- return bldr
- case arrow.FIXED_SIZE_LIST:
- typ := dtype.(*arrow.FixedSizeListType)
- return NewFixedSizeListBuilder(mem, typ.Len(), typ.Elem())
- case arrow.DURATION:
- typ := dtype.(*arrow.DurationType)
- return NewDurationBuilder(mem, typ)
- case arrow.RUN_END_ENCODED:
- typ := dtype.(*arrow.RunEndEncodedType)
- return NewRunEndEncodedBuilder(mem, typ.RunEnds(), typ.Encoded())
- case arrow.BINARY_VIEW:
- return NewBinaryViewBuilder(mem)
- case arrow.STRING_VIEW:
- return NewStringViewBuilder(mem)
- }
- panic(fmt.Errorf("arrow/array: unsupported builder for %T", dtype))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/compare.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/compare.go
deleted file mode 100644
index 372293a61..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/compare.go
+++ /dev/null
@@ -1,854 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "math"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/float16"
- "github.com/apache/arrow/go/v15/internal/bitutils"
-)
-
-// RecordEqual reports whether the two provided records are equal.
-func RecordEqual(left, right arrow.Record) bool {
- switch {
- case left.NumCols() != right.NumCols():
- return false
- case left.NumRows() != right.NumRows():
- return false
- }
-
- for i := range left.Columns() {
- lc := left.Column(i)
- rc := right.Column(i)
- if !Equal(lc, rc) {
- return false
- }
- }
- return true
-}
-
-// RecordApproxEqual reports whether the two provided records are approximately equal.
-// For non-floating point columns, it is equivalent to RecordEqual.
-func RecordApproxEqual(left, right arrow.Record, opts ...EqualOption) bool {
- switch {
- case left.NumCols() != right.NumCols():
- return false
- case left.NumRows() != right.NumRows():
- return false
- }
-
- opt := newEqualOption(opts...)
-
- for i := range left.Columns() {
- lc := left.Column(i)
- rc := right.Column(i)
- if !arrayApproxEqual(lc, rc, opt) {
- return false
- }
- }
- return true
-}
-
-// helper function to evaluate a function on two chunked object having possibly different
-// chunk layouts. the function passed in will be called for each corresponding slice of the
-// two chunked arrays and if the function returns false it will end the loop early.
-func chunkedBinaryApply(left, right *arrow.Chunked, fn func(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64) bool) {
- var (
- pos int64
- length int64 = int64(left.Len())
- leftIdx, rightIdx int
- leftPos, rightPos int64
- )
-
- for pos < length {
- var cleft, cright arrow.Array
- for {
- cleft, cright = left.Chunk(leftIdx), right.Chunk(rightIdx)
- if leftPos == int64(cleft.Len()) {
- leftPos = 0
- leftIdx++
- continue
- }
- if rightPos == int64(cright.Len()) {
- rightPos = 0
- rightIdx++
- continue
- }
- break
- }
-
- sz := int64(min(cleft.Len()-int(leftPos), cright.Len()-int(rightPos)))
- pos += sz
- if !fn(cleft, leftPos, leftPos+sz, cright, rightPos, rightPos+sz) {
- return
- }
-
- leftPos += sz
- rightPos += sz
- }
-}
-
-// ChunkedEqual reports whether two chunked arrays are equal regardless of their chunkings
-func ChunkedEqual(left, right *arrow.Chunked) bool {
- switch {
- case left == right:
- return true
- case left.Len() != right.Len():
- return false
- case left.NullN() != right.NullN():
- return false
- case !arrow.TypeEqual(left.DataType(), right.DataType()):
- return false
- }
-
- var isequal bool = true
- chunkedBinaryApply(left, right, func(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64) bool {
- isequal = SliceEqual(left, lbeg, lend, right, rbeg, rend)
- return isequal
- })
-
- return isequal
-}
-
-// ChunkedApproxEqual reports whether two chunked arrays are approximately equal regardless of their chunkings
-// for non-floating point arrays, this is equivalent to ChunkedEqual
-func ChunkedApproxEqual(left, right *arrow.Chunked, opts ...EqualOption) bool {
- switch {
- case left == right:
- return true
- case left.Len() != right.Len():
- return false
- case left.NullN() != right.NullN():
- return false
- case !arrow.TypeEqual(left.DataType(), right.DataType()):
- return false
- }
-
- var isequal bool
- chunkedBinaryApply(left, right, func(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64) bool {
- isequal = SliceApproxEqual(left, lbeg, lend, right, rbeg, rend, opts...)
- return isequal
- })
-
- return isequal
-}
-
-// TableEqual returns if the two tables have the same data in the same schema
-func TableEqual(left, right arrow.Table) bool {
- switch {
- case left.NumCols() != right.NumCols():
- return false
- case left.NumRows() != right.NumRows():
- return false
- }
-
- for i := 0; int64(i) < left.NumCols(); i++ {
- lc := left.Column(i)
- rc := right.Column(i)
- if !lc.Field().Equal(rc.Field()) {
- return false
- }
-
- if !ChunkedEqual(lc.Data(), rc.Data()) {
- return false
- }
- }
- return true
-}
-
-// TableEqual returns if the two tables have the approximately equal data in the same schema
-func TableApproxEqual(left, right arrow.Table, opts ...EqualOption) bool {
- switch {
- case left.NumCols() != right.NumCols():
- return false
- case left.NumRows() != right.NumRows():
- return false
- }
-
- for i := 0; int64(i) < left.NumCols(); i++ {
- lc := left.Column(i)
- rc := right.Column(i)
- if !lc.Field().Equal(rc.Field()) {
- return false
- }
-
- if !ChunkedApproxEqual(lc.Data(), rc.Data(), opts...) {
- return false
- }
- }
- return true
-}
-
-// Equal reports whether the two provided arrays are equal.
-func Equal(left, right arrow.Array) bool {
- switch {
- case !baseArrayEqual(left, right):
- return false
- case left.Len() == 0:
- return true
- case left.NullN() == left.Len():
- return true
- }
-
- // at this point, we know both arrays have same type, same length, same number of nulls
- // and nulls at the same place.
- // compare the values.
-
- switch l := left.(type) {
- case *Null:
- return true
- case *Boolean:
- r := right.(*Boolean)
- return arrayEqualBoolean(l, r)
- case *FixedSizeBinary:
- r := right.(*FixedSizeBinary)
- return arrayEqualFixedSizeBinary(l, r)
- case *Binary:
- r := right.(*Binary)
- return arrayEqualBinary(l, r)
- case *String:
- r := right.(*String)
- return arrayEqualString(l, r)
- case *LargeBinary:
- r := right.(*LargeBinary)
- return arrayEqualLargeBinary(l, r)
- case *LargeString:
- r := right.(*LargeString)
- return arrayEqualLargeString(l, r)
- case *BinaryView:
- r := right.(*BinaryView)
- return arrayEqualBinaryView(l, r)
- case *StringView:
- r := right.(*StringView)
- return arrayEqualStringView(l, r)
- case *Int8:
- r := right.(*Int8)
- return arrayEqualInt8(l, r)
- case *Int16:
- r := right.(*Int16)
- return arrayEqualInt16(l, r)
- case *Int32:
- r := right.(*Int32)
- return arrayEqualInt32(l, r)
- case *Int64:
- r := right.(*Int64)
- return arrayEqualInt64(l, r)
- case *Uint8:
- r := right.(*Uint8)
- return arrayEqualUint8(l, r)
- case *Uint16:
- r := right.(*Uint16)
- return arrayEqualUint16(l, r)
- case *Uint32:
- r := right.(*Uint32)
- return arrayEqualUint32(l, r)
- case *Uint64:
- r := right.(*Uint64)
- return arrayEqualUint64(l, r)
- case *Float16:
- r := right.(*Float16)
- return arrayEqualFloat16(l, r)
- case *Float32:
- r := right.(*Float32)
- return arrayEqualFloat32(l, r)
- case *Float64:
- r := right.(*Float64)
- return arrayEqualFloat64(l, r)
- case *Decimal128:
- r := right.(*Decimal128)
- return arrayEqualDecimal128(l, r)
- case *Decimal256:
- r := right.(*Decimal256)
- return arrayEqualDecimal256(l, r)
- case *Date32:
- r := right.(*Date32)
- return arrayEqualDate32(l, r)
- case *Date64:
- r := right.(*Date64)
- return arrayEqualDate64(l, r)
- case *Time32:
- r := right.(*Time32)
- return arrayEqualTime32(l, r)
- case *Time64:
- r := right.(*Time64)
- return arrayEqualTime64(l, r)
- case *Timestamp:
- r := right.(*Timestamp)
- return arrayEqualTimestamp(l, r)
- case *List:
- r := right.(*List)
- return arrayEqualList(l, r)
- case *LargeList:
- r := right.(*LargeList)
- return arrayEqualLargeList(l, r)
- case *ListView:
- r := right.(*ListView)
- return arrayEqualListView(l, r)
- case *LargeListView:
- r := right.(*LargeListView)
- return arrayEqualLargeListView(l, r)
- case *FixedSizeList:
- r := right.(*FixedSizeList)
- return arrayEqualFixedSizeList(l, r)
- case *Struct:
- r := right.(*Struct)
- return arrayEqualStruct(l, r)
- case *MonthInterval:
- r := right.(*MonthInterval)
- return arrayEqualMonthInterval(l, r)
- case *DayTimeInterval:
- r := right.(*DayTimeInterval)
- return arrayEqualDayTimeInterval(l, r)
- case *MonthDayNanoInterval:
- r := right.(*MonthDayNanoInterval)
- return arrayEqualMonthDayNanoInterval(l, r)
- case *Duration:
- r := right.(*Duration)
- return arrayEqualDuration(l, r)
- case *Map:
- r := right.(*Map)
- return arrayEqualMap(l, r)
- case ExtensionArray:
- r := right.(ExtensionArray)
- return arrayEqualExtension(l, r)
- case *Dictionary:
- r := right.(*Dictionary)
- return arrayEqualDict(l, r)
- case *SparseUnion:
- r := right.(*SparseUnion)
- return arraySparseUnionEqual(l, r)
- case *DenseUnion:
- r := right.(*DenseUnion)
- return arrayDenseUnionEqual(l, r)
- case *RunEndEncoded:
- r := right.(*RunEndEncoded)
- return arrayRunEndEncodedEqual(l, r)
- default:
- panic(fmt.Errorf("arrow/array: unknown array type %T", l))
- }
-}
-
-// SliceEqual reports whether slices left[lbeg:lend] and right[rbeg:rend] are equal.
-func SliceEqual(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64) bool {
- l := NewSlice(left, lbeg, lend)
- defer l.Release()
- r := NewSlice(right, rbeg, rend)
- defer r.Release()
-
- return Equal(l, r)
-}
-
-// SliceApproxEqual reports whether slices left[lbeg:lend] and right[rbeg:rend] are approximately equal.
-func SliceApproxEqual(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64, opts ...EqualOption) bool {
- opt := newEqualOption(opts...)
- return sliceApproxEqual(left, lbeg, lend, right, rbeg, rend, opt)
-}
-
-func sliceApproxEqual(left arrow.Array, lbeg, lend int64, right arrow.Array, rbeg, rend int64, opt equalOption) bool {
- l := NewSlice(left, lbeg, lend)
- defer l.Release()
- r := NewSlice(right, rbeg, rend)
- defer r.Release()
-
- return arrayApproxEqual(l, r, opt)
-}
-
-const defaultAbsoluteTolerance = 1e-5
-
-type equalOption struct {
- atol float64 // absolute tolerance
- nansEq bool // whether NaNs are considered equal.
- unorderedMapKeys bool // whether maps are allowed to have different entries order
-}
-
-func (eq equalOption) f16(f1, f2 float16.Num) bool {
- v1 := float64(f1.Float32())
- v2 := float64(f2.Float32())
- switch {
- case eq.nansEq:
- return math.Abs(v1-v2) <= eq.atol || (math.IsNaN(v1) && math.IsNaN(v2))
- default:
- return math.Abs(v1-v2) <= eq.atol
- }
-}
-
-func (eq equalOption) f32(f1, f2 float32) bool {
- v1 := float64(f1)
- v2 := float64(f2)
- switch {
- case eq.nansEq:
- return v1 == v2 || math.Abs(v1-v2) <= eq.atol || (math.IsNaN(v1) && math.IsNaN(v2))
- default:
- return v1 == v2 || math.Abs(v1-v2) <= eq.atol
- }
-}
-
-func (eq equalOption) f64(v1, v2 float64) bool {
- switch {
- case eq.nansEq:
- return v1 == v2 || math.Abs(v1-v2) <= eq.atol || (math.IsNaN(v1) && math.IsNaN(v2))
- default:
- return v1 == v2 || math.Abs(v1-v2) <= eq.atol
- }
-}
-
-func newEqualOption(opts ...EqualOption) equalOption {
- eq := equalOption{
- atol: defaultAbsoluteTolerance,
- nansEq: false,
- }
- for _, opt := range opts {
- opt(&eq)
- }
-
- return eq
-}
-
-// EqualOption is a functional option type used to configure how Records and Arrays are compared.
-type EqualOption func(*equalOption)
-
-// WithNaNsEqual configures the comparison functions so that NaNs are considered equal.
-func WithNaNsEqual(v bool) EqualOption {
- return func(o *equalOption) {
- o.nansEq = v
- }
-}
-
-// WithAbsTolerance configures the comparison functions so that 2 floating point values
-// v1 and v2 are considered equal if |v1-v2| <= atol.
-func WithAbsTolerance(atol float64) EqualOption {
- return func(o *equalOption) {
- o.atol = atol
- }
-}
-
-// WithUnorderedMapKeys configures the comparison functions so that Map with different entries order are considered equal.
-func WithUnorderedMapKeys(v bool) EqualOption {
- return func(o *equalOption) {
- o.unorderedMapKeys = v
- }
-}
-
-// ApproxEqual reports whether the two provided arrays are approximately equal.
-// For non-floating point arrays, it is equivalent to Equal.
-func ApproxEqual(left, right arrow.Array, opts ...EqualOption) bool {
- opt := newEqualOption(opts...)
- return arrayApproxEqual(left, right, opt)
-}
-
-func arrayApproxEqual(left, right arrow.Array, opt equalOption) bool {
- switch {
- case !baseArrayEqual(left, right):
- return false
- case left.Len() == 0:
- return true
- case left.NullN() == left.Len():
- return true
- }
-
- // at this point, we know both arrays have same type, same length, same number of nulls
- // and nulls at the same place.
- // compare the values.
-
- switch l := left.(type) {
- case *Null:
- return true
- case *Boolean:
- r := right.(*Boolean)
- return arrayEqualBoolean(l, r)
- case *FixedSizeBinary:
- r := right.(*FixedSizeBinary)
- return arrayEqualFixedSizeBinary(l, r)
- case *Binary:
- r := right.(*Binary)
- return arrayEqualBinary(l, r)
- case *String:
- r := right.(*String)
- return arrayEqualString(l, r)
- case *LargeBinary:
- r := right.(*LargeBinary)
- return arrayEqualLargeBinary(l, r)
- case *LargeString:
- r := right.(*LargeString)
- return arrayEqualLargeString(l, r)
- case *BinaryView:
- r := right.(*BinaryView)
- return arrayEqualBinaryView(l, r)
- case *StringView:
- r := right.(*StringView)
- return arrayEqualStringView(l, r)
- case *Int8:
- r := right.(*Int8)
- return arrayEqualInt8(l, r)
- case *Int16:
- r := right.(*Int16)
- return arrayEqualInt16(l, r)
- case *Int32:
- r := right.(*Int32)
- return arrayEqualInt32(l, r)
- case *Int64:
- r := right.(*Int64)
- return arrayEqualInt64(l, r)
- case *Uint8:
- r := right.(*Uint8)
- return arrayEqualUint8(l, r)
- case *Uint16:
- r := right.(*Uint16)
- return arrayEqualUint16(l, r)
- case *Uint32:
- r := right.(*Uint32)
- return arrayEqualUint32(l, r)
- case *Uint64:
- r := right.(*Uint64)
- return arrayEqualUint64(l, r)
- case *Float16:
- r := right.(*Float16)
- return arrayApproxEqualFloat16(l, r, opt)
- case *Float32:
- r := right.(*Float32)
- return arrayApproxEqualFloat32(l, r, opt)
- case *Float64:
- r := right.(*Float64)
- return arrayApproxEqualFloat64(l, r, opt)
- case *Decimal128:
- r := right.(*Decimal128)
- return arrayEqualDecimal128(l, r)
- case *Decimal256:
- r := right.(*Decimal256)
- return arrayEqualDecimal256(l, r)
- case *Date32:
- r := right.(*Date32)
- return arrayEqualDate32(l, r)
- case *Date64:
- r := right.(*Date64)
- return arrayEqualDate64(l, r)
- case *Time32:
- r := right.(*Time32)
- return arrayEqualTime32(l, r)
- case *Time64:
- r := right.(*Time64)
- return arrayEqualTime64(l, r)
- case *Timestamp:
- r := right.(*Timestamp)
- return arrayEqualTimestamp(l, r)
- case *List:
- r := right.(*List)
- return arrayApproxEqualList(l, r, opt)
- case *LargeList:
- r := right.(*LargeList)
- return arrayApproxEqualLargeList(l, r, opt)
- case *ListView:
- r := right.(*ListView)
- return arrayApproxEqualListView(l, r, opt)
- case *LargeListView:
- r := right.(*LargeListView)
- return arrayApproxEqualLargeListView(l, r, opt)
- case *FixedSizeList:
- r := right.(*FixedSizeList)
- return arrayApproxEqualFixedSizeList(l, r, opt)
- case *Struct:
- r := right.(*Struct)
- return arrayApproxEqualStruct(l, r, opt)
- case *MonthInterval:
- r := right.(*MonthInterval)
- return arrayEqualMonthInterval(l, r)
- case *DayTimeInterval:
- r := right.(*DayTimeInterval)
- return arrayEqualDayTimeInterval(l, r)
- case *MonthDayNanoInterval:
- r := right.(*MonthDayNanoInterval)
- return arrayEqualMonthDayNanoInterval(l, r)
- case *Duration:
- r := right.(*Duration)
- return arrayEqualDuration(l, r)
- case *Map:
- r := right.(*Map)
- if opt.unorderedMapKeys {
- return arrayApproxEqualMap(l, r, opt)
- }
- return arrayApproxEqualList(l.List, r.List, opt)
- case *Dictionary:
- r := right.(*Dictionary)
- return arrayApproxEqualDict(l, r, opt)
- case ExtensionArray:
- r := right.(ExtensionArray)
- return arrayApproxEqualExtension(l, r, opt)
- case *SparseUnion:
- r := right.(*SparseUnion)
- return arraySparseUnionApproxEqual(l, r, opt)
- case *DenseUnion:
- r := right.(*DenseUnion)
- return arrayDenseUnionApproxEqual(l, r, opt)
- case *RunEndEncoded:
- r := right.(*RunEndEncoded)
- return arrayRunEndEncodedApproxEqual(l, r, opt)
- default:
- panic(fmt.Errorf("arrow/array: unknown array type %T", l))
- }
-}
-
-func baseArrayEqual(left, right arrow.Array) bool {
- switch {
- case left.Len() != right.Len():
- return false
- case left.NullN() != right.NullN():
- return false
- case !arrow.TypeEqual(left.DataType(), right.DataType()): // We do not check for metadata as in the C++ implementation.
- return false
- case !validityBitmapEqual(left, right):
- return false
- }
- return true
-}
-
-func validityBitmapEqual(left, right arrow.Array) bool {
- // TODO(alexandreyc): make it faster by comparing byte slices of the validity bitmap?
- n := left.Len()
- if n != right.Len() {
- return false
- }
- for i := 0; i < n; i++ {
- if left.IsNull(i) != right.IsNull(i) {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualFloat16(left, right *Float16, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !opt.f16(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualFloat32(left, right *Float32, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !opt.f32(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualFloat64(left, right *Float64, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !opt.f64(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualList(left, right *List, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return arrayApproxEqual(l, r, opt)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualLargeList(left, right *LargeList, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return arrayApproxEqual(l, r, opt)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualListView(left, right *ListView, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return arrayApproxEqual(l, r, opt)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualLargeListView(left, right *LargeListView, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return arrayApproxEqual(l, r, opt)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualFixedSizeList(left, right *FixedSizeList, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return arrayApproxEqual(l, r, opt)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-func arrayApproxEqualStruct(left, right *Struct, opt equalOption) bool {
- return bitutils.VisitSetBitRuns(
- left.NullBitmapBytes(),
- int64(left.Offset()), int64(left.Len()),
- approxEqualStructRun(left, right, opt),
- ) == nil
-}
-
-func approxEqualStructRun(left, right *Struct, opt equalOption) bitutils.VisitFn {
- return func(pos int64, length int64) error {
- for i := range left.fields {
- if !sliceApproxEqual(left.fields[i], pos, pos+length, right.fields[i], pos, pos+length, opt) {
- return arrow.ErrInvalid
- }
- }
- return nil
- }
-}
-
-// arrayApproxEqualMap doesn't care about the order of keys (in Go map traversal order is undefined)
-func arrayApproxEqualMap(left, right *Map, opt equalOption) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !arrayApproxEqualSingleMapEntry(left.newListValue(i).(*Struct), right.newListValue(i).(*Struct), opt) {
- return false
- }
- }
- return true
-}
-
-// arrayApproxEqualSingleMapEntry is a helper function that checks if a single entry pair is approx equal.
-// Basically, it doesn't care about key order.
-// structs passed will be released
-func arrayApproxEqualSingleMapEntry(left, right *Struct, opt equalOption) bool {
- defer left.Release()
- defer right.Release()
-
- // we don't compare the validity bitmap, but we want other checks from baseArrayEqual
- switch {
- case left.Len() != right.Len():
- return false
- case left.NullN() != right.NullN():
- return false
- case !arrow.TypeEqual(left.DataType(), right.DataType()): // We do not check for metadata as in the C++ implementation.
- return false
- case left.NullN() == left.Len():
- return true
- }
-
- used := make(map[int]bool, right.Len())
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
-
- found := false
- lBeg, lEnd := int64(i), int64(i+1)
- for j := 0; j < right.Len(); j++ {
- if used[j] {
- continue
- }
- if right.IsNull(j) {
- used[j] = true
- continue
- }
-
- rBeg, rEnd := int64(j), int64(j+1)
-
- // check keys (field 0)
- if !sliceApproxEqual(left.Field(0), lBeg, lEnd, right.Field(0), rBeg, rEnd, opt) {
- continue
- }
-
- // only now check the values
- if sliceApproxEqual(left.Field(1), lBeg, lEnd, right.Field(1), rBeg, rEnd, opt) {
- found = true
- used[j] = true
- break
- }
- }
- if !found {
- return false
- }
- }
-
- return len(used) == right.Len()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/concat.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/concat.go
deleted file mode 100644
index f0bc2855e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/concat.go
+++ /dev/null
@@ -1,938 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "errors"
- "fmt"
- "math"
- "math/bits"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/encoded"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/bitutils"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-// Concatenate creates a new arrow.Array which is the concatenation of the
-// passed in arrays. Returns nil if an error is encountered.
-//
-// The passed in arrays still need to be released manually, and will not be
-// released by this function.
-func Concatenate(arrs []arrow.Array, mem memory.Allocator) (result arrow.Array, err error) {
- if len(arrs) == 0 {
- return nil, errors.New("array/concat: must pass at least one array")
- }
-
- // gather Data of inputs
- data := make([]arrow.ArrayData, len(arrs))
- for i, ar := range arrs {
- if !arrow.TypeEqual(ar.DataType(), arrs[0].DataType()) {
- return nil, fmt.Errorf("arrays to be concatenated must be identically typed, but %s and %s were encountered",
- arrs[0].DataType(), ar.DataType())
- }
- data[i] = ar.Data()
- }
-
- out, err := concat(data, mem)
- if err != nil {
- return nil, err
- }
-
- defer out.Release()
- return MakeFromData(out), nil
-}
-
-// simple struct to hold ranges
-type rng struct {
- offset, len int
-}
-
-// simple bitmap struct to reference a specific slice of a bitmap where the range
-// offset and length are in bits
-type bitmap struct {
- data []byte
- rng rng
-}
-
-// gather up the bitmaps from the passed in data objects
-func gatherBitmaps(data []arrow.ArrayData, idx int) []bitmap {
- out := make([]bitmap, len(data))
- for i, d := range data {
- if d.Buffers()[idx] != nil {
- out[i].data = d.Buffers()[idx].Bytes()
- }
- out[i].rng.offset = d.Offset()
- out[i].rng.len = d.Len()
- }
- return out
-}
-
-// gatherFixedBuffers gathers up the buffer objects of the given index, specifically
-// returning only the slices of the buffers which are relevant to the passed in arrays
-// in case they are themselves slices of other arrays. nil buffers are ignored and not
-// in the output slice.
-func gatherFixedBuffers(data []arrow.ArrayData, idx, byteWidth int) []*memory.Buffer {
- out := make([]*memory.Buffer, 0, len(data))
- for _, d := range data {
- buf := d.Buffers()[idx]
- if buf == nil {
- continue
- }
-
- out = append(out, memory.NewBufferBytes(buf.Bytes()[d.Offset()*byteWidth:(d.Offset()+d.Len())*byteWidth]))
- }
- return out
-}
-
-// gatherBuffersFixedWidthType is like gatherFixedBuffers, but uses a datatype to determine the size
-// to use for determining the byte slice rather than a passed in bytewidth.
-func gatherBuffersFixedWidthType(data []arrow.ArrayData, idx int, fixed arrow.FixedWidthDataType) []*memory.Buffer {
- return gatherFixedBuffers(data, idx, fixed.BitWidth()/8)
-}
-
-// gatherBufferRanges requires that len(ranges) == len(data) and returns a list of buffers
-// which represent the corresponding range of each buffer in the specified index of each
-// data object.
-func gatherBufferRanges(data []arrow.ArrayData, idx int, ranges []rng) []*memory.Buffer {
- out := make([]*memory.Buffer, 0, len(data))
- for i, d := range data {
- buf := d.Buffers()[idx]
- if buf == nil {
- debug.Assert(ranges[i].len == 0, "misaligned buffer value ranges")
- continue
- }
-
- out = append(out, memory.NewBufferBytes(buf.Bytes()[ranges[i].offset:ranges[i].offset+ranges[i].len]))
- }
- return out
-}
-
-// gatherChildren gathers the children data objects for child of index idx for all of the data objects.
-func gatherChildren(data []arrow.ArrayData, idx int) []arrow.ArrayData {
- return gatherChildrenMultiplier(data, idx, 1)
-}
-
-// gatherChildrenMultiplier gathers the full data slice of the underlying values from the children data objects
-// such as the values data for a list array so that it can return a slice of the buffer for a given
-// index into the children.
-func gatherChildrenMultiplier(data []arrow.ArrayData, idx, multiplier int) []arrow.ArrayData {
- out := make([]arrow.ArrayData, len(data))
- for i, d := range data {
- out[i] = NewSliceData(d.Children()[idx], int64(d.Offset()*multiplier), int64(d.Offset()+d.Len())*int64(multiplier))
- }
- return out
-}
-
-// gatherChildrenRanges returns a slice of Data objects which each represent slices of the given ranges from the
-// child in the specified index from each data object.
-func gatherChildrenRanges(data []arrow.ArrayData, idx int, ranges []rng) []arrow.ArrayData {
- debug.Assert(len(data) == len(ranges), "mismatched children ranges for concat")
- out := make([]arrow.ArrayData, len(data))
- for i, d := range data {
- out[i] = NewSliceData(d.Children()[idx], int64(ranges[i].offset), int64(ranges[i].offset+ranges[i].len))
- }
- return out
-}
-
-// creates a single contiguous buffer which contains the concatenation of all of the passed
-// in buffer objects.
-func concatBuffers(bufs []*memory.Buffer, mem memory.Allocator) *memory.Buffer {
- outLen := 0
- for _, b := range bufs {
- outLen += b.Len()
- }
- out := memory.NewResizableBuffer(mem)
- out.Resize(outLen)
-
- data := out.Bytes()
- for _, b := range bufs {
- copy(data, b.Bytes())
- data = data[b.Len():]
- }
- return out
-}
-
-func handle32BitOffsets(outLen int, buffers []*memory.Buffer, out *memory.Buffer) (*memory.Buffer, []rng, error) {
- dst := arrow.Int32Traits.CastFromBytes(out.Bytes())
- valuesRanges := make([]rng, len(buffers))
- nextOffset := int32(0)
- nextElem := int(0)
- for i, b := range buffers {
- if b.Len() == 0 {
- valuesRanges[i].offset = 0
- valuesRanges[i].len = 0
- continue
- }
-
- // when we gather our buffers, we sliced off the last offset from the buffer
- // so that we could count the lengths accurately
- src := arrow.Int32Traits.CastFromBytes(b.Bytes())
- valuesRanges[i].offset = int(src[0])
- // expand our slice to see that final offset
- expand := src[:len(src)+1]
- // compute the length of this range by taking the final offset and subtracting where we started.
- valuesRanges[i].len = int(expand[len(src)]) - valuesRanges[i].offset
-
- if nextOffset > math.MaxInt32-int32(valuesRanges[i].len) {
- return nil, nil, errors.New("offset overflow while concatenating arrays")
- }
-
- // adjust each offset by the difference between our last ending point and our starting point
- adj := nextOffset - src[0]
- for j, o := range src {
- dst[nextElem+j] = adj + o
- }
-
- // the next index for an element in the output buffer
- nextElem += b.Len() / arrow.Int32SizeBytes
- // update our offset counter to be the total current length of our output
- nextOffset += int32(valuesRanges[i].len)
- }
-
- // final offset should point to the end of the data
- dst[outLen] = nextOffset
- return out, valuesRanges, nil
-}
-
-func unifyDictionaries(mem memory.Allocator, data []arrow.ArrayData, dt *arrow.DictionaryType) ([]*memory.Buffer, arrow.Array, error) {
- unifier, err := NewDictionaryUnifier(mem, dt.ValueType)
- if err != nil {
- return nil, nil, err
- }
- defer unifier.Release()
-
- newLookup := make([]*memory.Buffer, len(data))
- for i, d := range data {
- dictArr := MakeFromData(d.Dictionary())
- defer dictArr.Release()
- newLookup[i], err = unifier.UnifyAndTranspose(dictArr)
- if err != nil {
- return nil, nil, err
- }
- }
-
- unified, err := unifier.GetResultWithIndexType(dt.IndexType)
- if err != nil {
- for _, b := range newLookup {
- b.Release()
- }
- return nil, nil, err
- }
- return newLookup, unified, nil
-}
-
-func concatDictIndices(mem memory.Allocator, data []arrow.ArrayData, idxType arrow.FixedWidthDataType, transpositions []*memory.Buffer) (out *memory.Buffer, err error) {
- defer func() {
- if err != nil && out != nil {
- out.Release()
- out = nil
- }
- }()
-
- idxWidth := idxType.BitWidth() / 8
- outLen := 0
- for i, d := range data {
- outLen += d.Len()
- defer transpositions[i].Release()
- }
-
- out = memory.NewResizableBuffer(mem)
- out.Resize(outLen * idxWidth)
-
- outData := out.Bytes()
- for i, d := range data {
- transposeMap := arrow.Int32Traits.CastFromBytes(transpositions[i].Bytes())
- src := d.Buffers()[1].Bytes()
- if d.Buffers()[0] == nil {
- if err = utils.TransposeIntsBuffers(idxType, idxType, src, outData, d.Offset(), 0, d.Len(), transposeMap); err != nil {
- return
- }
- } else {
- rdr := bitutils.NewBitRunReader(d.Buffers()[0].Bytes(), int64(d.Offset()), int64(d.Len()))
- pos := 0
- for {
- run := rdr.NextRun()
- if run.Len == 0 {
- break
- }
-
- if run.Set {
- err = utils.TransposeIntsBuffers(idxType, idxType, src, outData, d.Offset()+pos, pos, int(run.Len), transposeMap)
- if err != nil {
- return
- }
- } else {
- memory.Set(outData[pos:pos+(int(run.Len)*idxWidth)], 0x00)
- }
-
- pos += int(run.Len)
- }
- }
- outData = outData[d.Len()*idxWidth:]
- }
- return
-}
-
-func handle64BitOffsets(outLen int, buffers []*memory.Buffer, out *memory.Buffer) (*memory.Buffer, []rng, error) {
- dst := arrow.Int64Traits.CastFromBytes(out.Bytes())
- valuesRanges := make([]rng, len(buffers))
- nextOffset := int64(0)
- nextElem := int(0)
- for i, b := range buffers {
- if b.Len() == 0 {
- valuesRanges[i].offset = 0
- valuesRanges[i].len = 0
- continue
- }
-
- // when we gather our buffers, we sliced off the last offset from the buffer
- // so that we could count the lengths accurately
- src := arrow.Int64Traits.CastFromBytes(b.Bytes())
- valuesRanges[i].offset = int(src[0])
- // expand our slice to see that final offset
- expand := src[:len(src)+1]
- // compute the length of this range by taking the final offset and subtracting where we started.
- valuesRanges[i].len = int(expand[len(src)]) - valuesRanges[i].offset
-
- if nextOffset > math.MaxInt64-int64(valuesRanges[i].len) {
- return nil, nil, errors.New("offset overflow while concatenating arrays")
- }
-
- // adjust each offset by the difference between our last ending point and our starting point
- adj := nextOffset - src[0]
- for j, o := range src {
- dst[nextElem+j] = adj + o
- }
-
- // the next index for an element in the output buffer
- nextElem += b.Len() / arrow.Int64SizeBytes
- // update our offset counter to be the total current length of our output
- nextOffset += int64(valuesRanges[i].len)
- }
-
- // final offset should point to the end of the data
- dst[outLen] = nextOffset
- return out, valuesRanges, nil
-}
-
-// concatOffsets creates a single offset buffer which represents the concatenation of all of the
-// offsets buffers, adjusting the offsets appropriately to their new relative locations.
-//
-// It also returns the list of ranges that need to be fetched for the corresponding value buffers
-// to construct the final concatenated value buffer.
-func concatOffsets(buffers []*memory.Buffer, byteWidth int, mem memory.Allocator) (*memory.Buffer, []rng, error) {
- outLen := 0
- for _, b := range buffers {
- outLen += b.Len() / byteWidth
- }
-
- out := memory.NewResizableBuffer(mem)
- out.Resize(byteWidth * (outLen + 1))
-
- switch byteWidth {
- case arrow.Int64SizeBytes:
- return handle64BitOffsets(outLen, buffers, out)
- default:
- return handle32BitOffsets(outLen, buffers, out)
- }
-}
-
-func sumArraySizes(data []arrow.ArrayData) int {
- outSize := 0
- for _, arr := range data {
- outSize += arr.Len()
- }
- return outSize
-}
-
-func getListViewBufferValues[T int32 | int64](data arrow.ArrayData, i int) []T {
- bytes := data.Buffers()[i].Bytes()
- base := (*T)(unsafe.Pointer(&bytes[0]))
- ret := unsafe.Slice(base, data.Offset()+data.Len())
- return ret[data.Offset():]
-}
-
-func putListViewOffsets32(in arrow.ArrayData, displacement int32, out *memory.Buffer, outOff int) {
- debug.Assert(in.DataType().ID() == arrow.LIST_VIEW, "putListViewOffsets32: expected LIST_VIEW data")
- inOff, inLen := in.Offset(), in.Len()
- if inLen == 0 {
- return
- }
- bitmap := in.Buffers()[0]
- srcOffsets := getListViewBufferValues[int32](in, 1)
- srcSizes := getListViewBufferValues[int32](in, 2)
- isValidAndNonEmpty := func(i int) bool {
- return (bitmap == nil || bitutil.BitIsSet(bitmap.Bytes(), inOff+i)) && srcSizes[i] > 0
- }
-
- dstOffsets := arrow.Int32Traits.CastFromBytes(out.Bytes())
- for i, offset := range srcOffsets {
- if isValidAndNonEmpty(i) {
- // This is guaranteed by RangeOfValuesUsed returning the smallest offset
- // of valid and non-empty list-views.
- debug.Assert(offset+displacement >= 0, "putListViewOffsets32: offset underflow while concatenating arrays")
- dstOffsets[outOff+i] = offset + displacement
- } else {
- dstOffsets[outOff+i] = 0
- }
- }
-}
-
-func putListViewOffsets64(in arrow.ArrayData, displacement int64, out *memory.Buffer, outOff int) {
- debug.Assert(in.DataType().ID() == arrow.LARGE_LIST_VIEW, "putListViewOffsets64: expected LARGE_LIST_VIEW data")
- inOff, inLen := in.Offset(), in.Len()
- if inLen == 0 {
- return
- }
- bitmap := in.Buffers()[0]
- srcOffsets := getListViewBufferValues[int64](in, 1)
- srcSizes := getListViewBufferValues[int64](in, 2)
- isValidAndNonEmpty := func(i int) bool {
- return (bitmap == nil || bitutil.BitIsSet(bitmap.Bytes(), inOff+i)) && srcSizes[i] > 0
- }
-
- dstOffsets := arrow.Int64Traits.CastFromBytes(out.Bytes())
- for i, offset := range srcOffsets {
- if isValidAndNonEmpty(i) {
- // This is guaranteed by RangeOfValuesUsed returning the smallest offset
- // of valid and non-empty list-views.
- debug.Assert(offset+displacement >= 0, "putListViewOffsets64: offset underflow while concatenating arrays")
- dstOffsets[outOff+i] = offset + displacement
- } else {
- dstOffsets[outOff+i] = 0
- }
- }
-}
-
-// Concatenate buffers holding list-view offsets into a single buffer of offsets
-//
-// valueRanges contains the relevant ranges of values in the child array actually
-// referenced to by the views. Most commonly, these ranges will start from 0,
-// but when that is not the case, we need to adjust the displacement of offsets.
-// The concatenated child array does not contain values from the beginning
-// if they are not referenced to by any view.
-func concatListViewOffsets(data []arrow.ArrayData, byteWidth int, valueRanges []rng, mem memory.Allocator) (*memory.Buffer, error) {
- outSize := sumArraySizes(data)
- if byteWidth == 4 && outSize > math.MaxInt32 {
- return nil, fmt.Errorf("%w: offset overflow while concatenating arrays", arrow.ErrInvalid)
- }
- out := memory.NewResizableBuffer(mem)
- out.Resize(byteWidth * outSize)
-
- numChildValues, elementsLength := 0, 0
- for i, arr := range data {
- displacement := numChildValues - valueRanges[i].offset
- if byteWidth == 4 {
- putListViewOffsets32(arr, int32(displacement), out, elementsLength)
- } else {
- putListViewOffsets64(arr, int64(displacement), out, elementsLength)
- }
- elementsLength += arr.Len()
- numChildValues += valueRanges[i].len
- }
- debug.Assert(elementsLength == outSize, "implementation error")
-
- return out, nil
-}
-
-func zeroNullListViewSizes[T int32 | int64](data arrow.ArrayData) {
- if data.Len() == 0 || data.Buffers()[0] == nil {
- return
- }
- validity := data.Buffers()[0].Bytes()
- sizes := getListViewBufferValues[T](data, 2)
-
- for i := 0; i < data.Len(); i++ {
- if !bitutil.BitIsSet(validity, data.Offset()+i) {
- sizes[i] = 0
- }
- }
-}
-
-func concatListView(data []arrow.ArrayData, offsetType arrow.FixedWidthDataType, out *Data, mem memory.Allocator) (err error) {
- // Calculate the ranges of values that each list-view array uses
- valueRanges := make([]rng, len(data))
- for i, input := range data {
- offset, len := rangeOfValuesUsed(input)
- valueRanges[i].offset = offset
- valueRanges[i].len = len
- }
-
- // Gather the children ranges of each input array
- childData := gatherChildrenRanges(data, 0, valueRanges)
- for _, c := range childData {
- defer c.Release()
- }
-
- // Concatenate the values
- values, err := concat(childData, mem)
- if err != nil {
- return err
- }
-
- // Concatenate the offsets
- offsetBuffer, err := concatListViewOffsets(data, offsetType.Bytes(), valueRanges, mem)
- if err != nil {
- return err
- }
-
- // Concatenate the sizes
- sizeBuffers := gatherBuffersFixedWidthType(data, 2, offsetType)
- sizeBuffer := concatBuffers(sizeBuffers, mem)
-
- out.childData = []arrow.ArrayData{values}
- out.buffers[1] = offsetBuffer
- out.buffers[2] = sizeBuffer
-
- // To make sure the sizes don't reference values that are not in the new
- // concatenated values array, we zero the sizes of null list-view values.
- if offsetType.ID() == arrow.INT32 {
- zeroNullListViewSizes[int32](out)
- } else {
- zeroNullListViewSizes[int64](out)
- }
-
- return nil
-}
-
-// concat is the implementation for actually performing the concatenation of the arrow.ArrayData
-// objects that we can call internally for nested types.
-func concat(data []arrow.ArrayData, mem memory.Allocator) (arr arrow.ArrayData, err error) {
- out := &Data{refCount: 1, dtype: data[0].DataType(), nulls: 0}
- defer func() {
- if pErr := recover(); pErr != nil {
- switch e := pErr.(type) {
- case error:
- err = fmt.Errorf("arrow/concat: %w", e)
- default:
- err = fmt.Errorf("arrow/concat: %v", pErr)
- }
- }
- if err != nil {
- out.Release()
- }
- }()
- for _, d := range data {
- out.length += d.Len()
- if out.nulls == UnknownNullCount || d.NullN() == UnknownNullCount {
- out.nulls = UnknownNullCount
- continue
- }
- out.nulls += d.NullN()
- }
-
- out.buffers = make([]*memory.Buffer, len(data[0].Buffers()))
- if out.nulls != 0 && out.dtype.ID() != arrow.NULL {
- bm, err := concatBitmaps(gatherBitmaps(data, 0), mem)
- if err != nil {
- return nil, err
- }
- out.buffers[0] = bm
- }
-
- dt := out.dtype
- if dt.ID() == arrow.EXTENSION {
- dt = dt.(arrow.ExtensionType).StorageType()
- }
-
- switch dt := dt.(type) {
- case *arrow.NullType:
- case *arrow.BooleanType:
- bm, err := concatBitmaps(gatherBitmaps(data, 1), mem)
- if err != nil {
- return nil, err
- }
- out.buffers[1] = bm
- case *arrow.DictionaryType:
- idxType := dt.IndexType.(arrow.FixedWidthDataType)
- // two cases: all dictionaries are the same or we need to unify them
- dictsSame := true
- dict0 := MakeFromData(data[0].Dictionary())
- defer dict0.Release()
- for _, d := range data {
- dict := MakeFromData(d.Dictionary())
- if !Equal(dict0, dict) {
- dict.Release()
- dictsSame = false
- break
- }
- dict.Release()
- }
-
- indexBuffers := gatherBuffersFixedWidthType(data, 1, idxType)
- if dictsSame {
- out.dictionary = dict0.Data().(*Data)
- out.dictionary.Retain()
- out.buffers[1] = concatBuffers(indexBuffers, mem)
- break
- }
-
- indexLookup, unifiedDict, err := unifyDictionaries(mem, data, dt)
- if err != nil {
- return nil, err
- }
- defer unifiedDict.Release()
- out.dictionary = unifiedDict.Data().(*Data)
- out.dictionary.Retain()
-
- out.buffers[1], err = concatDictIndices(mem, data, idxType, indexLookup)
- if err != nil {
- return nil, err
- }
- case arrow.FixedWidthDataType:
- out.buffers[1] = concatBuffers(gatherBuffersFixedWidthType(data, 1, dt), mem)
- case arrow.BinaryViewDataType:
- out.buffers = out.buffers[:2]
- for _, d := range data {
- for _, buf := range d.Buffers()[2:] {
- buf.Retain()
- out.buffers = append(out.buffers, buf)
- }
- }
-
- out.buffers[1] = concatBuffers(gatherFixedBuffers(data, 1, arrow.ViewHeaderSizeBytes), mem)
-
- var (
- s = arrow.ViewHeaderTraits.CastFromBytes(out.buffers[1].Bytes())
- i = data[0].Len()
- precedingBufsCount int
- )
-
- for idx := 1; idx < len(data); idx++ {
- precedingBufsCount += len(data[idx-1].Buffers()) - 2
-
- for end := i + data[idx].Len(); i < end; i++ {
- if s[i].IsInline() {
- continue
- }
-
- bufIndex := s[i].BufferIndex() + int32(precedingBufsCount)
- s[i].SetIndexOffset(bufIndex, s[i].BufferOffset())
- }
- }
- case arrow.BinaryDataType:
- offsetWidth := dt.Layout().Buffers[1].ByteWidth
- offsetBuffer, valueRanges, err := concatOffsets(gatherFixedBuffers(data, 1, offsetWidth), offsetWidth, mem)
- if err != nil {
- return nil, err
- }
- out.buffers[1] = offsetBuffer
- out.buffers[2] = concatBuffers(gatherBufferRanges(data, 2, valueRanges), mem)
- case *arrow.ListType:
- offsetWidth := dt.Layout().Buffers[1].ByteWidth
- offsetBuffer, valueRanges, err := concatOffsets(gatherFixedBuffers(data, 1, offsetWidth), offsetWidth, mem)
- if err != nil {
- return nil, err
- }
- childData := gatherChildrenRanges(data, 0, valueRanges)
- for _, c := range childData {
- defer c.Release()
- }
-
- out.buffers[1] = offsetBuffer
- out.childData = make([]arrow.ArrayData, 1)
- out.childData[0], err = concat(childData, mem)
- if err != nil {
- return nil, err
- }
- case *arrow.LargeListType:
- offsetWidth := dt.Layout().Buffers[1].ByteWidth
- offsetBuffer, valueRanges, err := concatOffsets(gatherFixedBuffers(data, 1, offsetWidth), offsetWidth, mem)
- if err != nil {
- return nil, err
- }
- childData := gatherChildrenRanges(data, 0, valueRanges)
- for _, c := range childData {
- defer c.Release()
- }
-
- out.buffers[1] = offsetBuffer
- out.childData = make([]arrow.ArrayData, 1)
- out.childData[0], err = concat(childData, mem)
- if err != nil {
- return nil, err
- }
- case *arrow.ListViewType:
- offsetType := arrow.PrimitiveTypes.Int32.(arrow.FixedWidthDataType)
- err := concatListView(data, offsetType, out, mem)
- if err != nil {
- return nil, err
- }
- case *arrow.LargeListViewType:
- offsetType := arrow.PrimitiveTypes.Int64.(arrow.FixedWidthDataType)
- err := concatListView(data, offsetType, out, mem)
- if err != nil {
- return nil, err
- }
- case *arrow.FixedSizeListType:
- childData := gatherChildrenMultiplier(data, 0, int(dt.Len()))
- for _, c := range childData {
- defer c.Release()
- }
-
- children, err := concat(childData, mem)
- if err != nil {
- return nil, err
- }
- out.childData = []arrow.ArrayData{children}
- case *arrow.StructType:
- out.childData = make([]arrow.ArrayData, dt.NumFields())
- for i := range dt.Fields() {
- children := gatherChildren(data, i)
- for _, c := range children {
- defer c.Release()
- }
-
- childData, err := concat(children, mem)
- if err != nil {
- return nil, err
- }
- out.childData[i] = childData
- }
- case *arrow.MapType:
- offsetWidth := dt.Layout().Buffers[1].ByteWidth
- offsetBuffer, valueRanges, err := concatOffsets(gatherFixedBuffers(data, 1, offsetWidth), offsetWidth, mem)
- if err != nil {
- return nil, err
- }
- childData := gatherChildrenRanges(data, 0, valueRanges)
- for _, c := range childData {
- defer c.Release()
- }
-
- out.buffers[1] = offsetBuffer
- out.childData = make([]arrow.ArrayData, 1)
- out.childData[0], err = concat(childData, mem)
- if err != nil {
- return nil, err
- }
- case *arrow.RunEndEncodedType:
- physicalLength, overflow := int(0), false
- // we can't use gatherChildren because the Offset and Len of
- // data doesn't correspond to the physical length or offset
- runs := make([]arrow.ArrayData, len(data))
- values := make([]arrow.ArrayData, len(data))
- for i, d := range data {
- plen := encoded.GetPhysicalLength(d)
- off := encoded.FindPhysicalOffset(d)
-
- runs[i] = NewSliceData(d.Children()[0], int64(off), int64(off+plen))
- defer runs[i].Release()
- values[i] = NewSliceData(d.Children()[1], int64(off), int64(off+plen))
- defer values[i].Release()
-
- physicalLength, overflow = addOvf(physicalLength, plen)
- if overflow {
- return nil, fmt.Errorf("%w: run end encoded array length must fit into a 32-bit signed integer",
- arrow.ErrInvalid)
- }
- }
-
- runEndsByteWidth := runs[0].DataType().(arrow.FixedWidthDataType).Bytes()
- runEndsBuffers := gatherFixedBuffers(runs, 1, runEndsByteWidth)
- outRunEndsLen := physicalLength * runEndsByteWidth
- outRunEndsBuf := memory.NewResizableBuffer(mem)
- outRunEndsBuf.Resize(outRunEndsLen)
- defer outRunEndsBuf.Release()
-
- if err := updateRunEnds(runEndsByteWidth, data, runEndsBuffers, outRunEndsBuf); err != nil {
- return nil, err
- }
-
- out.childData = make([]arrow.ArrayData, 2)
- out.childData[0] = NewData(data[0].Children()[0].DataType(), int(physicalLength),
- []*memory.Buffer{nil, outRunEndsBuf}, nil, 0, 0)
-
- var err error
- out.childData[1], err = concat(values, mem)
- if err != nil {
- out.childData[0].Release()
- return nil, err
- }
- default:
- return nil, fmt.Errorf("concatenate not implemented for type %s", dt)
- }
-
- return out, nil
-}
-
-// check overflow in the addition, taken from bits.Add but adapted for signed integers
-// rather than unsigned integers. bits.UintSize will be either 32 or 64 based on
-// whether our architecture is 32 bit or 64. The operation is the same for both cases,
-// the only difference is how much we need to shift by 30 for 32 bit and 62 for 64 bit.
-// Thus, bits.UintSize - 2 is how much we shift right by to check if we had an overflow
-// in the signed addition.
-//
-// First return is the result of the sum, the second return is true if there was an overflow
-func addOvf(x, y int) (int, bool) {
- sum := x + y
- return sum, ((x&y)|((x|y)&^sum))>>(bits.UintSize-2) == 1
-}
-
-// concatenate bitmaps together and return a buffer with the combined bitmaps
-func concatBitmaps(bitmaps []bitmap, mem memory.Allocator) (*memory.Buffer, error) {
- var (
- outlen int
- overflow bool
- )
-
- for _, bm := range bitmaps {
- if outlen, overflow = addOvf(outlen, bm.rng.len); overflow {
- return nil, errors.New("length overflow when concatenating arrays")
- }
- }
-
- out := memory.NewResizableBuffer(mem)
- out.Resize(int(bitutil.BytesForBits(int64(outlen))))
- dst := out.Bytes()
-
- offset := 0
- for _, bm := range bitmaps {
- if bm.data == nil { // if the bitmap is nil, that implies that the value is true for all elements
- bitutil.SetBitsTo(out.Bytes(), int64(offset), int64(bm.rng.len), true)
- } else {
- bitutil.CopyBitmap(bm.data, bm.rng.offset, bm.rng.len, dst, offset)
- }
- offset += bm.rng.len
- }
- return out, nil
-}
-
-func updateRunEnds(byteWidth int, inputData []arrow.ArrayData, inputBuffers []*memory.Buffer, outputBuffer *memory.Buffer) error {
- switch byteWidth {
- case 2:
- out := arrow.Int16Traits.CastFromBytes(outputBuffer.Bytes())
- return updateRunsInt16(inputData, inputBuffers, out)
- case 4:
- out := arrow.Int32Traits.CastFromBytes(outputBuffer.Bytes())
- return updateRunsInt32(inputData, inputBuffers, out)
- case 8:
- out := arrow.Int64Traits.CastFromBytes(outputBuffer.Bytes())
- return updateRunsInt64(inputData, inputBuffers, out)
- }
- return fmt.Errorf("%w: invalid dataType for RLE runEnds", arrow.ErrInvalid)
-}
-
-func updateRunsInt16(inputData []arrow.ArrayData, inputBuffers []*memory.Buffer, output []int16) error {
- // for now we will not attempt to optimize by checking if we
- // can fold the end and beginning of each array we're concatenating
- // into a single run
- pos := 0
- for i, buf := range inputBuffers {
- if buf.Len() == 0 {
- continue
- }
- src := arrow.Int16Traits.CastFromBytes(buf.Bytes())
- if pos == 0 {
- pos += copy(output, src)
- continue
- }
-
- lastEnd := output[pos-1]
- // we can check the last runEnd in the src and add it to the
- // last value that we're adjusting them all by to see if we
- // are going to overflow
- if int64(lastEnd)+int64(int(src[len(src)-1])-inputData[i].Offset()) > math.MaxInt16 {
- return fmt.Errorf("%w: overflow in run-length-encoded run ends concat", arrow.ErrInvalid)
- }
-
- // adjust all of the run ends by first normalizing them (e - data[i].offset)
- // then adding the previous value we ended on. Since the offset
- // is a logical length offset it should be accurate to just subtract
- // it from each value.
- for j, e := range src {
- output[pos+j] = lastEnd + int16(int(e)-inputData[i].Offset())
- }
- pos += len(src)
- }
- return nil
-}
-
-func updateRunsInt32(inputData []arrow.ArrayData, inputBuffers []*memory.Buffer, output []int32) error {
- // for now we will not attempt to optimize by checking if we
- // can fold the end and beginning of each array we're concatenating
- // into a single run
- pos := 0
- for i, buf := range inputBuffers {
- if buf.Len() == 0 {
- continue
- }
- src := arrow.Int32Traits.CastFromBytes(buf.Bytes())
- if pos == 0 {
- pos += copy(output, src)
- continue
- }
-
- lastEnd := output[pos-1]
- // we can check the last runEnd in the src and add it to the
- // last value that we're adjusting them all by to see if we
- // are going to overflow
- if int64(lastEnd)+int64(int(src[len(src)-1])-inputData[i].Offset()) > math.MaxInt32 {
- return fmt.Errorf("%w: overflow in run-length-encoded run ends concat", arrow.ErrInvalid)
- }
-
- // adjust all of the run ends by first normalizing them (e - data[i].offset)
- // then adding the previous value we ended on. Since the offset
- // is a logical length offset it should be accurate to just subtract
- // it from each value.
- for j, e := range src {
- output[pos+j] = lastEnd + int32(int(e)-inputData[i].Offset())
- }
- pos += len(src)
- }
- return nil
-}
-
-func updateRunsInt64(inputData []arrow.ArrayData, inputBuffers []*memory.Buffer, output []int64) error {
- // for now we will not attempt to optimize by checking if we
- // can fold the end and beginning of each array we're concatenating
- // into a single run
- pos := 0
- for i, buf := range inputBuffers {
- if buf.Len() == 0 {
- continue
- }
- src := arrow.Int64Traits.CastFromBytes(buf.Bytes())
- if pos == 0 {
- pos += copy(output, src)
- continue
- }
-
- lastEnd := output[pos-1]
- // we can check the last runEnd in the src and add it to the
- // last value that we're adjusting them all by to see if we
- // are going to overflow
- if uint64(lastEnd)+uint64(int(src[len(src)-1])-inputData[i].Offset()) > math.MaxInt64 {
- return fmt.Errorf("%w: overflow in run-length-encoded run ends concat", arrow.ErrInvalid)
- }
-
- // adjust all of the run ends by first normalizing them (e - data[i].offset)
- // then adding the previous value we ended on. Since the offset
- // is a logical length offset it should be accurate to just subtract
- // it from each value.
- for j, e := range src {
- output[pos+j] = lastEnd + e - int64(inputData[i].Offset())
- }
- pos += len(src)
- }
- return nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/data.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/data.go
deleted file mode 100644
index ddd9cf0c8..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/data.go
+++ /dev/null
@@ -1,275 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "hash/maphash"
- "math/bits"
- "sync/atomic"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// Data represents the memory and metadata of an Arrow array.
-type Data struct {
- refCount int64
- dtype arrow.DataType
- nulls int
- offset int
- length int
-
- // for dictionary arrays: buffers will be the null validity bitmap and the indexes that reference
- // values in the dictionary member. childData would be empty in a dictionary array
- buffers []*memory.Buffer // TODO(sgc): should this be an interface?
- childData []arrow.ArrayData // TODO(sgc): managed by ListArray, StructArray and UnionArray types
- dictionary *Data // only populated for dictionary arrays
-}
-
-// NewData creates a new Data.
-func NewData(dtype arrow.DataType, length int, buffers []*memory.Buffer, childData []arrow.ArrayData, nulls, offset int) *Data {
- for _, b := range buffers {
- if b != nil {
- b.Retain()
- }
- }
-
- for _, child := range childData {
- if child != nil {
- child.Retain()
- }
- }
-
- return &Data{
- refCount: 1,
- dtype: dtype,
- nulls: nulls,
- length: length,
- offset: offset,
- buffers: buffers,
- childData: childData,
- }
-}
-
-// NewDataWithDictionary creates a new data object, but also sets the provided dictionary into the data if it's not nil
-func NewDataWithDictionary(dtype arrow.DataType, length int, buffers []*memory.Buffer, nulls, offset int, dict *Data) *Data {
- data := NewData(dtype, length, buffers, nil, nulls, offset)
- if dict != nil {
- dict.Retain()
- }
- data.dictionary = dict
- return data
-}
-
-func (d *Data) Copy() *Data {
- // don't pass the slices directly, otherwise it retains the connection
- // we need to make new slices and populate them with the same pointers
- bufs := make([]*memory.Buffer, len(d.buffers))
- copy(bufs, d.buffers)
- children := make([]arrow.ArrayData, len(d.childData))
- copy(children, d.childData)
-
- data := NewData(d.dtype, d.length, bufs, children, d.nulls, d.offset)
- data.SetDictionary(d.dictionary)
- return data
-}
-
-// Reset sets the Data for re-use.
-func (d *Data) Reset(dtype arrow.DataType, length int, buffers []*memory.Buffer, childData []arrow.ArrayData, nulls, offset int) {
- // Retain new buffers before releasing existing buffers in-case they're the same ones to prevent accidental premature
- // release.
- for _, b := range buffers {
- if b != nil {
- b.Retain()
- }
- }
- for _, b := range d.buffers {
- if b != nil {
- b.Release()
- }
- }
- d.buffers = buffers
-
- // Retain new children data before releasing existing children data in-case they're the same ones to prevent accidental
- // premature release.
- for _, d := range childData {
- if d != nil {
- d.Retain()
- }
- }
- for _, d := range d.childData {
- if d != nil {
- d.Release()
- }
- }
- d.childData = childData
-
- d.dtype = dtype
- d.length = length
- d.nulls = nulls
- d.offset = offset
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (d *Data) Retain() {
- atomic.AddInt64(&d.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (d *Data) Release() {
- debug.Assert(atomic.LoadInt64(&d.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&d.refCount, -1) == 0 {
- for _, b := range d.buffers {
- if b != nil {
- b.Release()
- }
- }
-
- for _, b := range d.childData {
- b.Release()
- }
-
- if d.dictionary != nil {
- d.dictionary.Release()
- }
- d.dictionary, d.buffers, d.childData = nil, nil, nil
- }
-}
-
-// DataType returns the DataType of the data.
-func (d *Data) DataType() arrow.DataType { return d.dtype }
-
-func (d *Data) SetNullN(n int) { d.nulls = n }
-
-// NullN returns the number of nulls.
-func (d *Data) NullN() int { return d.nulls }
-
-// Len returns the length.
-func (d *Data) Len() int { return d.length }
-
-// Offset returns the offset.
-func (d *Data) Offset() int { return d.offset }
-
-// Buffers returns the buffers.
-func (d *Data) Buffers() []*memory.Buffer { return d.buffers }
-
-func (d *Data) Children() []arrow.ArrayData { return d.childData }
-
-// Dictionary returns the ArrayData object for the dictionary member, or nil
-func (d *Data) Dictionary() arrow.ArrayData { return d.dictionary }
-
-// SetDictionary allows replacing the dictionary for this particular Data object
-func (d *Data) SetDictionary(dict arrow.ArrayData) {
- if d.dictionary != nil {
- d.dictionary.Release()
- d.dictionary = nil
- }
- if dict.(*Data) != nil {
- dict.Retain()
- d.dictionary = dict.(*Data)
- }
-}
-
-// SizeInBytes returns the size of the Data and any children and/or dictionary in bytes by
-// recursively examining the nested structures of children and/or dictionary.
-// The value returned is an upper-bound since offset is not taken into account.
-func (d *Data) SizeInBytes() uint64 {
- var size uint64
-
- if d == nil {
- return 0
- }
-
- for _, b := range d.Buffers() {
- size += uint64(b.Len())
- }
- for _, c := range d.Children() {
- size += c.SizeInBytes()
- }
- if d.dictionary != nil {
- size += d.dictionary.SizeInBytes()
- }
-
- return size
-}
-
-// NewSliceData returns a new slice that shares backing data with the input.
-// The returned Data slice starts at i and extends j-i elements, such as:
-//
-// slice := data[i:j]
-//
-// The returned value must be Release'd after use.
-//
-// NewSliceData panics if the slice is outside the valid range of the input Data.
-// NewSliceData panics if j < i.
-func NewSliceData(data arrow.ArrayData, i, j int64) arrow.ArrayData {
- if j > int64(data.Len()) || i > j || data.Offset()+int(i) > data.Offset()+data.Len() {
- panic("arrow/array: index out of range")
- }
-
- for _, b := range data.Buffers() {
- if b != nil {
- b.Retain()
- }
- }
-
- for _, child := range data.Children() {
- if child != nil {
- child.Retain()
- }
- }
-
- if data.(*Data).dictionary != nil {
- data.(*Data).dictionary.Retain()
- }
-
- o := &Data{
- refCount: 1,
- dtype: data.DataType(),
- nulls: UnknownNullCount,
- length: int(j - i),
- offset: data.Offset() + int(i),
- buffers: data.Buffers(),
- childData: data.Children(),
- dictionary: data.(*Data).dictionary,
- }
-
- if data.NullN() == 0 {
- o.nulls = 0
- }
-
- return o
-}
-
-func Hash(h *maphash.Hash, data arrow.ArrayData) {
- a := data.(*Data)
-
- h.Write((*[bits.UintSize / 8]byte)(unsafe.Pointer(&a.length))[:])
- h.Write((*[bits.UintSize / 8]byte)(unsafe.Pointer(&a.length))[:])
- if len(a.buffers) > 0 && a.buffers[0] != nil {
- h.Write(a.buffers[0].Bytes())
- }
- for _, c := range a.childData {
- Hash(h, c)
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal128.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal128.go
deleted file mode 100644
index 16a492db0..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal128.go
+++ /dev/null
@@ -1,365 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "math"
- "math/big"
- "reflect"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/decimal128"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A type which represents an immutable sequence of 128-bit decimal values.
-type Decimal128 struct {
- array
-
- values []decimal128.Num
-}
-
-func NewDecimal128Data(data arrow.ArrayData) *Decimal128 {
- a := &Decimal128{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Decimal128) Value(i int) decimal128.Num { return a.values[i] }
-
-func (a *Decimal128) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.GetOneForMarshal(i).(string)
-}
-
-func (a *Decimal128) Values() []decimal128.Num { return a.values }
-
-func (a *Decimal128) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Decimal128) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Decimal128Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Decimal128) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- typ := a.DataType().(*arrow.Decimal128Type)
- f := (&big.Float{}).SetInt(a.Value(i).BigInt())
- f.Quo(f, big.NewFloat(math.Pow10(int(typ.Scale))))
- return f.Text('g', int(typ.Precision))
-}
-
-// ["1.23", ]
-func (a *Decimal128) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualDecimal128(left, right *Decimal128) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type Decimal128Builder struct {
- builder
-
- dtype *arrow.Decimal128Type
- data *memory.Buffer
- rawData []decimal128.Num
-}
-
-func NewDecimal128Builder(mem memory.Allocator, dtype *arrow.Decimal128Type) *Decimal128Builder {
- return &Decimal128Builder{
- builder: builder{refCount: 1, mem: mem},
- dtype: dtype,
- }
-}
-
-func (b *Decimal128Builder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Decimal128Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Decimal128Builder) Append(v decimal128.Num) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Decimal128Builder) UnsafeAppend(v decimal128.Num) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Decimal128Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Decimal128Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Decimal128Builder) AppendEmptyValue() {
- b.Append(decimal128.Num{})
-}
-
-func (b *Decimal128Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Decimal128Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Decimal128Builder) AppendValues(v []decimal128.Num, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- if len(v) > 0 {
- arrow.Decimal128Traits.Copy(b.rawData[b.length:], v)
- }
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Decimal128Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Decimal128Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Decimal128Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Decimal128Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Decimal128Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Decimal128Traits.BytesRequired(n))
- b.rawData = arrow.Decimal128Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a Decimal128 array from the memory buffers used by the builder and resets the Decimal128Builder
-// so it can be used to build a new array.
-func (b *Decimal128Builder) NewArray() arrow.Array {
- return b.NewDecimal128Array()
-}
-
-// NewDecimal128Array creates a Decimal128 array from the memory buffers used by the builder and resets the Decimal128Builder
-// so it can be used to build a new array.
-func (b *Decimal128Builder) NewDecimal128Array() (a *Decimal128) {
- data := b.newData()
- a = NewDecimal128Data(data)
- data.Release()
- return
-}
-
-func (b *Decimal128Builder) newData() (data *Data) {
- bytesRequired := arrow.Decimal128Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Decimal128Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- val, err := decimal128.FromString(s, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- return nil
-}
-
-func (b *Decimal128Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case float64:
- val, err := decimal128.FromFloat64(v, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(val)
- case string:
- val, err := decimal128.FromString(v, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(val)
- case json.Number:
- val, err := decimal128.FromString(v.String(), b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(val)
- case nil:
- b.AppendNull()
- return nil
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(decimal128.Num{}),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Decimal128Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON will add the unmarshalled values to this builder.
-//
-// If the values are strings, they will get parsed with big.ParseFloat using
-// a rounding mode of big.ToNearestAway currently.
-func (b *Decimal128Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("decimal128 builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Decimal128)(nil)
- _ Builder = (*Decimal128Builder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal256.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal256.go
deleted file mode 100644
index 8f72e414d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/decimal256.go
+++ /dev/null
@@ -1,364 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "math"
- "math/big"
- "reflect"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/decimal256"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Decimal256 is a type that represents an immutable sequence of 256-bit decimal values.
-type Decimal256 struct {
- array
-
- values []decimal256.Num
-}
-
-func NewDecimal256Data(data arrow.ArrayData) *Decimal256 {
- a := &Decimal256{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Decimal256) Value(i int) decimal256.Num { return a.values[i] }
-
-func (a *Decimal256) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.GetOneForMarshal(i).(string)
-}
-
-func (a *Decimal256) Values() []decimal256.Num { return a.values }
-
-func (a *Decimal256) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Decimal256) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Decimal256Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Decimal256) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- typ := a.DataType().(*arrow.Decimal256Type)
- f := (&big.Float{}).SetInt(a.Value(i).BigInt())
- f.Quo(f, big.NewFloat(math.Pow10(int(typ.Scale))))
- return f.Text('g', int(typ.Precision))
-}
-
-func (a *Decimal256) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualDecimal256(left, right *Decimal256) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type Decimal256Builder struct {
- builder
-
- dtype *arrow.Decimal256Type
- data *memory.Buffer
- rawData []decimal256.Num
-}
-
-func NewDecimal256Builder(mem memory.Allocator, dtype *arrow.Decimal256Type) *Decimal256Builder {
- return &Decimal256Builder{
- builder: builder{refCount: 1, mem: mem},
- dtype: dtype,
- }
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Decimal256Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Decimal256Builder) Append(v decimal256.Num) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Decimal256Builder) UnsafeAppend(v decimal256.Num) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Decimal256Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Decimal256Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Decimal256Builder) AppendEmptyValue() {
- b.Append(decimal256.Num{})
-}
-
-func (b *Decimal256Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Decimal256Builder) Type() arrow.DataType { return b.dtype }
-
-func (b *Decimal256Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Decimal256Builder) AppendValues(v []decimal256.Num, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("arrow/array: len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- if len(v) > 0 {
- arrow.Decimal256Traits.Copy(b.rawData[b.length:], v)
- }
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Decimal256Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Decimal256Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Decimal256Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Decimal256Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Decimal256Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Decimal256Traits.BytesRequired(n))
- b.rawData = arrow.Decimal256Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a Decimal256 array from the memory buffers used by the builder and resets the Decimal256Builder
-// so it can be used to build a new array.
-func (b *Decimal256Builder) NewArray() arrow.Array {
- return b.NewDecimal256Array()
-}
-
-// NewDecimal256Array creates a Decimal256 array from the memory buffers used by the builder and resets the Decimal256Builder
-// so it can be used to build a new array.
-func (b *Decimal256Builder) NewDecimal256Array() (a *Decimal256) {
- data := b.newData()
- a = NewDecimal256Data(data)
- data.Release()
- return
-}
-
-func (b *Decimal256Builder) newData() (data *Data) {
- bytesRequired := arrow.Decimal256Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Decimal256Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- val, err := decimal256.FromString(s, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- return nil
-}
-
-func (b *Decimal256Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case float64:
- val, err := decimal256.FromFloat64(v, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(val)
- case string:
- out, err := decimal256.FromString(v, b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(out)
- case json.Number:
- out, err := decimal256.FromString(v.String(), b.dtype.Precision, b.dtype.Scale)
- if err != nil {
- return err
- }
- b.Append(out)
- case nil:
- b.AppendNull()
- return nil
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(decimal256.Num{}),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Decimal256Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON will add the unmarshalled values to this builder.
-//
-// If the values are strings, they will get parsed with big.ParseFloat using
-// a rounding mode of big.ToNearestAway currently.
-func (b *Decimal256Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("arrow/array: decimal256 builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Decimal256)(nil)
- _ Builder = (*Decimal256Builder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/dictionary.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/dictionary.go
deleted file mode 100644
index 125c02391..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/dictionary.go
+++ /dev/null
@@ -1,1953 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "errors"
- "fmt"
- "math"
- "math/bits"
- "sync/atomic"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/decimal128"
- "github.com/apache/arrow/go/v15/arrow/decimal256"
- "github.com/apache/arrow/go/v15/arrow/float16"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/hashing"
- "github.com/apache/arrow/go/v15/internal/json"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-// Dictionary represents the type for dictionary-encoded data with a data
-// dependent dictionary.
-//
-// A dictionary array contains an array of non-negative integers (the "dictionary"
-// indices") along with a data type containing a "dictionary" corresponding to
-// the distinct values represented in the data.
-//
-// For example, the array:
-//
-// ["foo", "bar", "foo", "bar", "foo", "bar"]
-//
-// with dictionary ["bar", "foo"], would have the representation of:
-//
-// indices: [1, 0, 1, 0, 1, 0]
-// dictionary: ["bar", "foo"]
-//
-// The indices in principle may be any integer type.
-type Dictionary struct {
- array
-
- indices arrow.Array
- dict arrow.Array
-}
-
-// NewDictionaryArray constructs a dictionary array with the provided indices
-// and dictionary using the given type.
-func NewDictionaryArray(typ arrow.DataType, indices, dict arrow.Array) *Dictionary {
- a := &Dictionary{}
- a.array.refCount = 1
- dictdata := NewData(typ, indices.Len(), indices.Data().Buffers(), indices.Data().Children(), indices.NullN(), indices.Data().Offset())
- dictdata.dictionary = dict.Data().(*Data)
- dict.Data().Retain()
-
- defer dictdata.Release()
- a.setData(dictdata)
- return a
-}
-
-// checkIndexBounds returns an error if any value in the provided integer
-// arraydata is >= the passed upperlimit or < 0. otherwise nil
-func checkIndexBounds(indices *Data, upperlimit uint64) error {
- if indices.length == 0 {
- return nil
- }
-
- var maxval uint64
- switch indices.dtype.ID() {
- case arrow.UINT8:
- maxval = math.MaxUint8
- case arrow.UINT16:
- maxval = math.MaxUint16
- case arrow.UINT32:
- maxval = math.MaxUint32
- case arrow.UINT64:
- maxval = math.MaxUint64
- }
- // for unsigned integers, if the values array is larger than the maximum
- // index value (especially for UINT8/UINT16), then there's no need to
- // boundscheck. for signed integers we still need to bounds check
- // because a value could be < 0.
- isSigned := maxval == 0
- if !isSigned && upperlimit > maxval {
- return nil
- }
-
- start := indices.offset
- end := indices.offset + indices.length
-
- // TODO(ARROW-15950): lift BitSetRunReader from parquet to utils
- // and use it here for performance improvement.
-
- switch indices.dtype.ID() {
- case arrow.INT8:
- data := arrow.Int8Traits.CastFromBytes(indices.buffers[1].Bytes())
- min, max := utils.GetMinMaxInt8(data[start:end])
- if min < 0 || max >= int8(upperlimit) {
- return fmt.Errorf("contains out of bounds index: min: %d, max: %d", min, max)
- }
- case arrow.UINT8:
- data := arrow.Uint8Traits.CastFromBytes(indices.buffers[1].Bytes())
- _, max := utils.GetMinMaxUint8(data[start:end])
- if max >= uint8(upperlimit) {
- return fmt.Errorf("contains out of bounds index: max: %d", max)
- }
- case arrow.INT16:
- data := arrow.Int16Traits.CastFromBytes(indices.buffers[1].Bytes())
- min, max := utils.GetMinMaxInt16(data[start:end])
- if min < 0 || max >= int16(upperlimit) {
- return fmt.Errorf("contains out of bounds index: min: %d, max: %d", min, max)
- }
- case arrow.UINT16:
- data := arrow.Uint16Traits.CastFromBytes(indices.buffers[1].Bytes())
- _, max := utils.GetMinMaxUint16(data[start:end])
- if max >= uint16(upperlimit) {
- return fmt.Errorf("contains out of bounds index: max: %d", max)
- }
- case arrow.INT32:
- data := arrow.Int32Traits.CastFromBytes(indices.buffers[1].Bytes())
- min, max := utils.GetMinMaxInt32(data[start:end])
- if min < 0 || max >= int32(upperlimit) {
- return fmt.Errorf("contains out of bounds index: min: %d, max: %d", min, max)
- }
- case arrow.UINT32:
- data := arrow.Uint32Traits.CastFromBytes(indices.buffers[1].Bytes())
- _, max := utils.GetMinMaxUint32(data[start:end])
- if max >= uint32(upperlimit) {
- return fmt.Errorf("contains out of bounds index: max: %d", max)
- }
- case arrow.INT64:
- data := arrow.Int64Traits.CastFromBytes(indices.buffers[1].Bytes())
- min, max := utils.GetMinMaxInt64(data[start:end])
- if min < 0 || max >= int64(upperlimit) {
- return fmt.Errorf("contains out of bounds index: min: %d, max: %d", min, max)
- }
- case arrow.UINT64:
- data := arrow.Uint64Traits.CastFromBytes(indices.buffers[1].Bytes())
- _, max := utils.GetMinMaxUint64(data[indices.offset : indices.offset+indices.length])
- if max >= upperlimit {
- return fmt.Errorf("contains out of bounds value: max: %d", max)
- }
- default:
- return fmt.Errorf("invalid type for bounds checking: %T", indices.dtype)
- }
-
- return nil
-}
-
-// NewValidatedDictionaryArray constructs a dictionary array from the provided indices
-// and dictionary arrays, while also performing validation checks to ensure correctness
-// such as bounds checking at are usually skipped for performance.
-func NewValidatedDictionaryArray(typ *arrow.DictionaryType, indices, dict arrow.Array) (*Dictionary, error) {
- if indices.DataType().ID() != typ.IndexType.ID() {
- return nil, fmt.Errorf("dictionary type index (%T) does not match indices array type (%T)", typ.IndexType, indices.DataType())
- }
-
- if !arrow.TypeEqual(typ.ValueType, dict.DataType()) {
- return nil, fmt.Errorf("dictionary value type (%T) does not match dict array type (%T)", typ.ValueType, dict.DataType())
- }
-
- if err := checkIndexBounds(indices.Data().(*Data), uint64(dict.Len())); err != nil {
- return nil, err
- }
-
- return NewDictionaryArray(typ, indices, dict), nil
-}
-
-// NewDictionaryData creates a strongly typed Dictionary array from
-// an ArrayData object with a datatype of arrow.Dictionary and a dictionary
-func NewDictionaryData(data arrow.ArrayData) *Dictionary {
- a := &Dictionary{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (d *Dictionary) Retain() {
- atomic.AddInt64(&d.refCount, 1)
-}
-
-func (d *Dictionary) Release() {
- debug.Assert(atomic.LoadInt64(&d.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&d.refCount, -1) == 0 {
- d.data.Release()
- d.data, d.nullBitmapBytes = nil, nil
- d.indices.Release()
- d.indices = nil
- if d.dict != nil {
- d.dict.Release()
- d.dict = nil
- }
- }
-}
-
-func (d *Dictionary) setData(data *Data) {
- d.array.setData(data)
-
- dictType := data.dtype.(*arrow.DictionaryType)
- if data.dictionary == nil {
- if data.length > 0 {
- panic("arrow/array: no dictionary set in Data for Dictionary array")
- }
- } else {
- debug.Assert(arrow.TypeEqual(dictType.ValueType, data.dictionary.DataType()), "mismatched dictionary value types")
- }
-
- indexData := NewData(dictType.IndexType, data.length, data.buffers, data.childData, data.nulls, data.offset)
- defer indexData.Release()
- d.indices = MakeFromData(indexData)
-}
-
-// Dictionary returns the values array that makes up the dictionary for this
-// array.
-func (d *Dictionary) Dictionary() arrow.Array {
- if d.dict == nil {
- d.dict = MakeFromData(d.data.dictionary)
- }
- return d.dict
-}
-
-// Indices returns the underlying array of indices as it's own array
-func (d *Dictionary) Indices() arrow.Array {
- return d.indices
-}
-
-// CanCompareIndices returns true if the dictionary arrays can be compared
-// without having to unify the dictionaries themselves first.
-// This means that the index types are equal too.
-func (d *Dictionary) CanCompareIndices(other *Dictionary) bool {
- if !arrow.TypeEqual(d.indices.DataType(), other.indices.DataType()) {
- return false
- }
-
- minlen := int64(min(d.data.dictionary.length, other.data.dictionary.length))
- return SliceEqual(d.Dictionary(), 0, minlen, other.Dictionary(), 0, minlen)
-}
-
-func (d *Dictionary) ValueStr(i int) string {
- if d.IsNull(i) {
- return NullValueStr
- }
- return d.Dictionary().ValueStr(d.GetValueIndex(i))
-}
-
-func (d *Dictionary) String() string {
- return fmt.Sprintf("{ dictionary: %v\n indices: %v }", d.Dictionary(), d.Indices())
-}
-
-// GetValueIndex returns the dictionary index for the value at index i of the array.
-// The actual value can be retrieved by using d.Dictionary().(valuetype).Value(d.GetValueIndex(i))
-func (d *Dictionary) GetValueIndex(i int) int {
- indiceData := d.data.buffers[1].Bytes()
- // we know the value is non-negative per the spec, so
- // we can use the unsigned value regardless.
- switch d.indices.DataType().ID() {
- case arrow.UINT8, arrow.INT8:
- return int(uint8(indiceData[d.data.offset+i]))
- case arrow.UINT16, arrow.INT16:
- return int(arrow.Uint16Traits.CastFromBytes(indiceData)[d.data.offset+i])
- case arrow.UINT32, arrow.INT32:
- idx := arrow.Uint32Traits.CastFromBytes(indiceData)[d.data.offset+i]
- debug.Assert(bits.UintSize == 64 || idx <= math.MaxInt32, "arrow/dictionary: truncation of index value")
- return int(idx)
- case arrow.UINT64, arrow.INT64:
- idx := arrow.Uint64Traits.CastFromBytes(indiceData)[d.data.offset+i]
- debug.Assert((bits.UintSize == 32 && idx <= math.MaxInt32) || (bits.UintSize == 64 && idx <= math.MaxInt64), "arrow/dictionary: truncation of index value")
- return int(idx)
- }
- debug.Assert(false, "unreachable dictionary index")
- return -1
-}
-
-func (d *Dictionary) GetOneForMarshal(i int) interface{} {
- if d.IsNull(i) {
- return nil
- }
- vidx := d.GetValueIndex(i)
- return d.Dictionary().GetOneForMarshal(vidx)
-}
-
-func (d *Dictionary) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, d.Len())
- for i := 0; i < d.Len(); i++ {
- vals[i] = d.GetOneForMarshal(i)
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualDict(l, r *Dictionary) bool {
- return Equal(l.Dictionary(), r.Dictionary()) && Equal(l.indices, r.indices)
-}
-
-func arrayApproxEqualDict(l, r *Dictionary, opt equalOption) bool {
- return arrayApproxEqual(l.Dictionary(), r.Dictionary(), opt) && arrayApproxEqual(l.indices, r.indices, opt)
-}
-
-// helper for building the properly typed indices of the dictionary builder
-type IndexBuilder struct {
- Builder
- Append func(int)
-}
-
-func createIndexBuilder(mem memory.Allocator, dt arrow.FixedWidthDataType) (ret IndexBuilder, err error) {
- ret = IndexBuilder{Builder: NewBuilder(mem, dt)}
- switch dt.ID() {
- case arrow.INT8:
- ret.Append = func(idx int) {
- ret.Builder.(*Int8Builder).Append(int8(idx))
- }
- case arrow.UINT8:
- ret.Append = func(idx int) {
- ret.Builder.(*Uint8Builder).Append(uint8(idx))
- }
- case arrow.INT16:
- ret.Append = func(idx int) {
- ret.Builder.(*Int16Builder).Append(int16(idx))
- }
- case arrow.UINT16:
- ret.Append = func(idx int) {
- ret.Builder.(*Uint16Builder).Append(uint16(idx))
- }
- case arrow.INT32:
- ret.Append = func(idx int) {
- ret.Builder.(*Int32Builder).Append(int32(idx))
- }
- case arrow.UINT32:
- ret.Append = func(idx int) {
- ret.Builder.(*Uint32Builder).Append(uint32(idx))
- }
- case arrow.INT64:
- ret.Append = func(idx int) {
- ret.Builder.(*Int64Builder).Append(int64(idx))
- }
- case arrow.UINT64:
- ret.Append = func(idx int) {
- ret.Builder.(*Uint64Builder).Append(uint64(idx))
- }
- default:
- debug.Assert(false, "dictionary index type must be integral")
- err = fmt.Errorf("dictionary index type must be integral, not %s", dt)
- }
-
- return
-}
-
-// helper function to construct an appropriately typed memo table based on
-// the value type for the dictionary
-func createMemoTable(mem memory.Allocator, dt arrow.DataType) (ret hashing.MemoTable, err error) {
- switch dt.ID() {
- case arrow.INT8:
- ret = hashing.NewInt8MemoTable(0)
- case arrow.UINT8:
- ret = hashing.NewUint8MemoTable(0)
- case arrow.INT16:
- ret = hashing.NewInt16MemoTable(0)
- case arrow.UINT16:
- ret = hashing.NewUint16MemoTable(0)
- case arrow.INT32:
- ret = hashing.NewInt32MemoTable(0)
- case arrow.UINT32:
- ret = hashing.NewUint32MemoTable(0)
- case arrow.INT64:
- ret = hashing.NewInt64MemoTable(0)
- case arrow.UINT64:
- ret = hashing.NewUint64MemoTable(0)
- case arrow.DURATION, arrow.TIMESTAMP, arrow.DATE64, arrow.TIME64:
- ret = hashing.NewInt64MemoTable(0)
- case arrow.TIME32, arrow.DATE32, arrow.INTERVAL_MONTHS:
- ret = hashing.NewInt32MemoTable(0)
- case arrow.FLOAT16:
- ret = hashing.NewUint16MemoTable(0)
- case arrow.FLOAT32:
- ret = hashing.NewFloat32MemoTable(0)
- case arrow.FLOAT64:
- ret = hashing.NewFloat64MemoTable(0)
- case arrow.BINARY, arrow.FIXED_SIZE_BINARY, arrow.DECIMAL128, arrow.DECIMAL256, arrow.INTERVAL_DAY_TIME, arrow.INTERVAL_MONTH_DAY_NANO:
- ret = hashing.NewBinaryMemoTable(0, 0, NewBinaryBuilder(mem, arrow.BinaryTypes.Binary))
- case arrow.STRING:
- ret = hashing.NewBinaryMemoTable(0, 0, NewBinaryBuilder(mem, arrow.BinaryTypes.String))
- case arrow.NULL:
- default:
- err = fmt.Errorf("unimplemented dictionary value type, %s", dt)
- }
-
- return
-}
-
-type DictionaryBuilder interface {
- Builder
-
- NewDictionaryArray() *Dictionary
- NewDelta() (indices, delta arrow.Array, err error)
- AppendArray(arrow.Array) error
- AppendIndices([]int, []bool)
- ResetFull()
-}
-
-type dictionaryBuilder struct {
- builder
-
- dt *arrow.DictionaryType
- deltaOffset int
- memoTable hashing.MemoTable
- idxBuilder IndexBuilder
-}
-
-// NewDictionaryBuilderWithDict initializes a dictionary builder and inserts the values from `init` as the first
-// values in the dictionary, but does not insert them as values into the array.
-func NewDictionaryBuilderWithDict(mem memory.Allocator, dt *arrow.DictionaryType, init arrow.Array) DictionaryBuilder {
- if init != nil && !arrow.TypeEqual(dt.ValueType, init.DataType()) {
- panic(fmt.Errorf("arrow/array: cannot initialize dictionary type %T with array of type %T", dt.ValueType, init.DataType()))
- }
-
- idxbldr, err := createIndexBuilder(mem, dt.IndexType.(arrow.FixedWidthDataType))
- if err != nil {
- panic(fmt.Errorf("arrow/array: unsupported builder for index type of %T", dt))
- }
-
- memo, err := createMemoTable(mem, dt.ValueType)
- if err != nil {
- panic(fmt.Errorf("arrow/array: unsupported builder for value type of %T", dt))
- }
-
- bldr := dictionaryBuilder{
- builder: builder{refCount: 1, mem: mem},
- idxBuilder: idxbldr,
- memoTable: memo,
- dt: dt,
- }
-
- switch dt.ValueType.ID() {
- case arrow.NULL:
- ret := &NullDictionaryBuilder{bldr}
- debug.Assert(init == nil, "arrow/array: doesn't make sense to init a null dictionary")
- return ret
- case arrow.UINT8:
- ret := &Uint8DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Uint8)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INT8:
- ret := &Int8DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Int8)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.UINT16:
- ret := &Uint16DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Uint16)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INT16:
- ret := &Int16DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Int16)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.UINT32:
- ret := &Uint32DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Uint32)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INT32:
- ret := &Int32DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Int32)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.UINT64:
- ret := &Uint64DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Uint64)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INT64:
- ret := &Int64DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Int64)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.FLOAT16:
- ret := &Float16DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Float16)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.FLOAT32:
- ret := &Float32DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Float32)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.FLOAT64:
- ret := &Float64DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Float64)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.STRING:
- ret := &BinaryDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertStringDictValues(init.(*String)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.BINARY:
- ret := &BinaryDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Binary)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.FIXED_SIZE_BINARY:
- ret := &FixedSizeBinaryDictionaryBuilder{
- bldr, dt.ValueType.(*arrow.FixedSizeBinaryType).ByteWidth,
- }
- if init != nil {
- if err = ret.InsertDictValues(init.(*FixedSizeBinary)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.DATE32:
- ret := &Date32DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Date32)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.DATE64:
- ret := &Date64DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Date64)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.TIMESTAMP:
- ret := &TimestampDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Timestamp)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.TIME32:
- ret := &Time32DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Time32)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.TIME64:
- ret := &Time64DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Time64)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INTERVAL_MONTHS:
- ret := &MonthIntervalDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*MonthInterval)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.INTERVAL_DAY_TIME:
- ret := &DayTimeDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*DayTimeInterval)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.DECIMAL128:
- ret := &Decimal128DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Decimal128)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.DECIMAL256:
- ret := &Decimal256DictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Decimal256)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.LIST:
- case arrow.STRUCT:
- case arrow.SPARSE_UNION:
- case arrow.DENSE_UNION:
- case arrow.DICTIONARY:
- case arrow.MAP:
- case arrow.EXTENSION:
- case arrow.FIXED_SIZE_LIST:
- case arrow.DURATION:
- ret := &DurationDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*Duration)); err != nil {
- panic(err)
- }
- }
- return ret
- case arrow.LARGE_STRING:
- case arrow.LARGE_BINARY:
- case arrow.LARGE_LIST:
- case arrow.INTERVAL_MONTH_DAY_NANO:
- ret := &MonthDayNanoDictionaryBuilder{bldr}
- if init != nil {
- if err = ret.InsertDictValues(init.(*MonthDayNanoInterval)); err != nil {
- panic(err)
- }
- }
- return ret
- }
-
- panic("arrow/array: unimplemented dictionary key type")
-}
-
-func NewDictionaryBuilder(mem memory.Allocator, dt *arrow.DictionaryType) DictionaryBuilder {
- return NewDictionaryBuilderWithDict(mem, dt, nil)
-}
-
-func (b *dictionaryBuilder) Type() arrow.DataType { return b.dt }
-
-func (b *dictionaryBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- b.idxBuilder.Release()
- b.idxBuilder.Builder = nil
- if binmemo, ok := b.memoTable.(*hashing.BinaryMemoTable); ok {
- binmemo.Release()
- }
- b.memoTable = nil
- }
-}
-
-func (b *dictionaryBuilder) AppendNull() {
- b.length += 1
- b.nulls += 1
- b.idxBuilder.AppendNull()
-}
-
-func (b *dictionaryBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *dictionaryBuilder) AppendEmptyValue() {
- b.length += 1
- b.idxBuilder.AppendEmptyValue()
-}
-
-func (b *dictionaryBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *dictionaryBuilder) Reserve(n int) {
- b.idxBuilder.Reserve(n)
-}
-
-func (b *dictionaryBuilder) Resize(n int) {
- b.idxBuilder.Resize(n)
- b.length = b.idxBuilder.Len()
-}
-
-func (b *dictionaryBuilder) ResetFull() {
- b.builder.reset()
- b.idxBuilder.NewArray().Release()
- b.memoTable.Reset()
-}
-
-func (b *dictionaryBuilder) Cap() int { return b.idxBuilder.Cap() }
-
-func (b *dictionaryBuilder) IsNull(i int) bool { return b.idxBuilder.IsNull(i) }
-
-func (b *dictionaryBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("dictionary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-func (b *dictionaryBuilder) Unmarshal(dec *json.Decoder) error {
- bldr := NewBuilder(b.mem, b.dt.ValueType)
- defer bldr.Release()
-
- if err := bldr.Unmarshal(dec); err != nil {
- return err
- }
-
- arr := bldr.NewArray()
- defer arr.Release()
- return b.AppendArray(arr)
-}
-
-func (b *dictionaryBuilder) AppendValueFromString(s string) error {
- bldr := NewBuilder(b.mem, b.dt.ValueType)
- defer bldr.Release()
-
- if err := bldr.AppendValueFromString(s); err != nil {
- return err
- }
-
- arr := bldr.NewArray()
- defer arr.Release()
- return b.AppendArray(arr)
-}
-
-func (b *dictionaryBuilder) UnmarshalOne(dec *json.Decoder) error {
- bldr := NewBuilder(b.mem, b.dt.ValueType)
- defer bldr.Release()
-
- if err := bldr.UnmarshalOne(dec); err != nil {
- return err
- }
-
- arr := bldr.NewArray()
- defer arr.Release()
- return b.AppendArray(arr)
-}
-
-func (b *dictionaryBuilder) NewArray() arrow.Array {
- return b.NewDictionaryArray()
-}
-
-func (b *dictionaryBuilder) newData() *Data {
- indices, dict, err := b.newWithDictOffset(0)
- if err != nil {
- panic(err)
- }
-
- indices.dtype = b.dt
- indices.dictionary = dict
- return indices
-}
-
-func (b *dictionaryBuilder) NewDictionaryArray() *Dictionary {
- a := &Dictionary{}
- a.refCount = 1
-
- indices := b.newData()
- a.setData(indices)
- indices.Release()
- return a
-}
-
-func (b *dictionaryBuilder) newWithDictOffset(offset int) (indices, dict *Data, err error) {
- idxarr := b.idxBuilder.NewArray()
- defer idxarr.Release()
-
- indices = idxarr.Data().(*Data)
-
- b.deltaOffset = b.memoTable.Size()
- dict, err = GetDictArrayData(b.mem, b.dt.ValueType, b.memoTable, offset)
- b.reset()
- indices.Retain()
- return
-}
-
-// NewDelta returns the dictionary indices and a delta dictionary since the
-// last time NewArray or NewDictionaryArray were called, and resets the state
-// of the builder (except for the dictionary / memotable)
-func (b *dictionaryBuilder) NewDelta() (indices, delta arrow.Array, err error) {
- indicesData, deltaData, err := b.newWithDictOffset(b.deltaOffset)
- if err != nil {
- return nil, nil, err
- }
-
- defer indicesData.Release()
- defer deltaData.Release()
- indices, delta = MakeFromData(indicesData), MakeFromData(deltaData)
- return
-}
-
-func (b *dictionaryBuilder) insertDictValue(val interface{}) error {
- _, _, err := b.memoTable.GetOrInsert(val)
- return err
-}
-
-func (b *dictionaryBuilder) insertDictBytes(val []byte) error {
- _, _, err := b.memoTable.GetOrInsertBytes(val)
- return err
-}
-
-func (b *dictionaryBuilder) appendValue(val interface{}) error {
- idx, _, err := b.memoTable.GetOrInsert(val)
- b.idxBuilder.Append(idx)
- b.length += 1
- return err
-}
-
-func (b *dictionaryBuilder) appendBytes(val []byte) error {
- idx, _, err := b.memoTable.GetOrInsertBytes(val)
- b.idxBuilder.Append(idx)
- b.length += 1
- return err
-}
-
-func getvalFn(arr arrow.Array) func(i int) interface{} {
- switch typedarr := arr.(type) {
- case *Int8:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Uint8:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Int16:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Uint16:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Int32:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Uint32:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Int64:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Uint64:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Float16:
- return func(i int) interface{} { return typedarr.Value(i).Uint16() }
- case *Float32:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Float64:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Duration:
- return func(i int) interface{} { return int64(typedarr.Value(i)) }
- case *Timestamp:
- return func(i int) interface{} { return int64(typedarr.Value(i)) }
- case *Date64:
- return func(i int) interface{} { return int64(typedarr.Value(i)) }
- case *Time64:
- return func(i int) interface{} { return int64(typedarr.Value(i)) }
- case *Time32:
- return func(i int) interface{} { return int32(typedarr.Value(i)) }
- case *Date32:
- return func(i int) interface{} { return int32(typedarr.Value(i)) }
- case *MonthInterval:
- return func(i int) interface{} { return int32(typedarr.Value(i)) }
- case *Binary:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *FixedSizeBinary:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *String:
- return func(i int) interface{} { return typedarr.Value(i) }
- case *Decimal128:
- return func(i int) interface{} {
- val := typedarr.Value(i)
- return (*(*[arrow.Decimal128SizeBytes]byte)(unsafe.Pointer(&val)))[:]
- }
- case *Decimal256:
- return func(i int) interface{} {
- val := typedarr.Value(i)
- return (*(*[arrow.Decimal256SizeBytes]byte)(unsafe.Pointer(&val)))[:]
- }
- case *DayTimeInterval:
- return func(i int) interface{} {
- val := typedarr.Value(i)
- return (*(*[arrow.DayTimeIntervalSizeBytes]byte)(unsafe.Pointer(&val)))[:]
- }
- case *MonthDayNanoInterval:
- return func(i int) interface{} {
- val := typedarr.Value(i)
- return (*(*[arrow.MonthDayNanoIntervalSizeBytes]byte)(unsafe.Pointer(&val)))[:]
- }
- }
-
- panic("arrow/array: invalid dictionary value type")
-}
-
-func (b *dictionaryBuilder) AppendArray(arr arrow.Array) error {
- debug.Assert(arrow.TypeEqual(b.dt.ValueType, arr.DataType()), "wrong value type of array to append to dict")
-
- valfn := getvalFn(arr)
- for i := 0; i < arr.Len(); i++ {
- if arr.IsNull(i) {
- b.AppendNull()
- } else {
- if err := b.appendValue(valfn(i)); err != nil {
- return err
- }
- }
- }
- return nil
-}
-
-func (b *dictionaryBuilder) IndexBuilder() IndexBuilder {
- return b.idxBuilder
-}
-
-func (b *dictionaryBuilder) AppendIndices(indices []int, valid []bool) {
- b.length += len(indices)
- switch idxbldr := b.idxBuilder.Builder.(type) {
- case *Int8Builder:
- vals := make([]int8, len(indices))
- for i, v := range indices {
- vals[i] = int8(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Int16Builder:
- vals := make([]int16, len(indices))
- for i, v := range indices {
- vals[i] = int16(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Int32Builder:
- vals := make([]int32, len(indices))
- for i, v := range indices {
- vals[i] = int32(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Int64Builder:
- vals := make([]int64, len(indices))
- for i, v := range indices {
- vals[i] = int64(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Uint8Builder:
- vals := make([]uint8, len(indices))
- for i, v := range indices {
- vals[i] = uint8(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Uint16Builder:
- vals := make([]uint16, len(indices))
- for i, v := range indices {
- vals[i] = uint16(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Uint32Builder:
- vals := make([]uint32, len(indices))
- for i, v := range indices {
- vals[i] = uint32(v)
- }
- idxbldr.AppendValues(vals, valid)
- case *Uint64Builder:
- vals := make([]uint64, len(indices))
- for i, v := range indices {
- vals[i] = uint64(v)
- }
- idxbldr.AppendValues(vals, valid)
- }
-}
-
-type NullDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *NullDictionaryBuilder) NewArray() arrow.Array {
- return b.NewDictionaryArray()
-}
-
-func (b *NullDictionaryBuilder) NewDictionaryArray() *Dictionary {
- idxarr := b.idxBuilder.NewArray()
- defer idxarr.Release()
-
- out := idxarr.Data().(*Data)
- dictarr := NewNull(0)
- defer dictarr.Release()
-
- dictarr.data.Retain()
- out.dtype = b.dt
- out.dictionary = dictarr.data
-
- return NewDictionaryData(out)
-}
-
-func (b *NullDictionaryBuilder) AppendArray(arr arrow.Array) error {
- if arr.DataType().ID() != arrow.NULL {
- return fmt.Errorf("cannot append non-null array to null dictionary")
- }
-
- for i := 0; i < arr.(*Null).Len(); i++ {
- b.AppendNull()
- }
- return nil
-}
-
-type Int8DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Int8DictionaryBuilder) Append(v int8) error { return b.appendValue(v) }
-func (b *Int8DictionaryBuilder) InsertDictValues(arr *Int8) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Uint8DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Uint8DictionaryBuilder) Append(v uint8) error { return b.appendValue(v) }
-func (b *Uint8DictionaryBuilder) InsertDictValues(arr *Uint8) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Int16DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Int16DictionaryBuilder) Append(v int16) error { return b.appendValue(v) }
-func (b *Int16DictionaryBuilder) InsertDictValues(arr *Int16) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Uint16DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Uint16DictionaryBuilder) Append(v uint16) error { return b.appendValue(v) }
-func (b *Uint16DictionaryBuilder) InsertDictValues(arr *Uint16) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Int32DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Int32DictionaryBuilder) Append(v int32) error { return b.appendValue(v) }
-func (b *Int32DictionaryBuilder) InsertDictValues(arr *Int32) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Uint32DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Uint32DictionaryBuilder) Append(v uint32) error { return b.appendValue(v) }
-func (b *Uint32DictionaryBuilder) InsertDictValues(arr *Uint32) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Int64DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Int64DictionaryBuilder) Append(v int64) error { return b.appendValue(v) }
-func (b *Int64DictionaryBuilder) InsertDictValues(arr *Int64) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Uint64DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Uint64DictionaryBuilder) Append(v uint64) error { return b.appendValue(v) }
-func (b *Uint64DictionaryBuilder) InsertDictValues(arr *Uint64) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type DurationDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *DurationDictionaryBuilder) Append(v arrow.Duration) error { return b.appendValue(int64(v)) }
-func (b *DurationDictionaryBuilder) InsertDictValues(arr *Duration) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int64(v)); err != nil {
- break
- }
- }
- return
-}
-
-type TimestampDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *TimestampDictionaryBuilder) Append(v arrow.Timestamp) error { return b.appendValue(int64(v)) }
-func (b *TimestampDictionaryBuilder) InsertDictValues(arr *Timestamp) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int64(v)); err != nil {
- break
- }
- }
- return
-}
-
-type Time32DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Time32DictionaryBuilder) Append(v arrow.Time32) error { return b.appendValue(int32(v)) }
-func (b *Time32DictionaryBuilder) InsertDictValues(arr *Time32) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int32(v)); err != nil {
- break
- }
- }
- return
-}
-
-type Time64DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Time64DictionaryBuilder) Append(v arrow.Time64) error { return b.appendValue(int64(v)) }
-func (b *Time64DictionaryBuilder) InsertDictValues(arr *Time64) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int64(v)); err != nil {
- break
- }
- }
- return
-}
-
-type Date32DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Date32DictionaryBuilder) Append(v arrow.Date32) error { return b.appendValue(int32(v)) }
-func (b *Date32DictionaryBuilder) InsertDictValues(arr *Date32) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int32(v)); err != nil {
- break
- }
- }
- return
-}
-
-type Date64DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Date64DictionaryBuilder) Append(v arrow.Date64) error { return b.appendValue(int64(v)) }
-func (b *Date64DictionaryBuilder) InsertDictValues(arr *Date64) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int64(v)); err != nil {
- break
- }
- }
- return
-}
-
-type MonthIntervalDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *MonthIntervalDictionaryBuilder) Append(v arrow.MonthInterval) error {
- return b.appendValue(int32(v))
-}
-func (b *MonthIntervalDictionaryBuilder) InsertDictValues(arr *MonthInterval) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(int32(v)); err != nil {
- break
- }
- }
- return
-}
-
-type Float16DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Float16DictionaryBuilder) Append(v float16.Num) error { return b.appendValue(v.Uint16()) }
-func (b *Float16DictionaryBuilder) InsertDictValues(arr *Float16) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v.Uint16()); err != nil {
- break
- }
- }
- return
-}
-
-type Float32DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Float32DictionaryBuilder) Append(v float32) error { return b.appendValue(v) }
-func (b *Float32DictionaryBuilder) InsertDictValues(arr *Float32) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type Float64DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Float64DictionaryBuilder) Append(v float64) error { return b.appendValue(v) }
-func (b *Float64DictionaryBuilder) InsertDictValues(arr *Float64) (err error) {
- for _, v := range arr.values {
- if err = b.insertDictValue(v); err != nil {
- break
- }
- }
- return
-}
-
-type BinaryDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *BinaryDictionaryBuilder) Append(v []byte) error {
- if v == nil {
- b.AppendNull()
- return nil
- }
-
- return b.appendBytes(v)
-}
-
-func (b *BinaryDictionaryBuilder) AppendString(v string) error { return b.appendBytes([]byte(v)) }
-func (b *BinaryDictionaryBuilder) InsertDictValues(arr *Binary) (err error) {
- if !arrow.TypeEqual(arr.DataType(), b.dt.ValueType) {
- return fmt.Errorf("dictionary insert type mismatch: cannot insert values of type %T to dictionary type %T", arr.DataType(), b.dt.ValueType)
- }
-
- for i := 0; i < arr.Len(); i++ {
- if err = b.insertDictBytes(arr.Value(i)); err != nil {
- break
- }
- }
- return
-}
-func (b *BinaryDictionaryBuilder) InsertStringDictValues(arr *String) (err error) {
- if !arrow.TypeEqual(arr.DataType(), b.dt.ValueType) {
- return fmt.Errorf("dictionary insert type mismatch: cannot insert values of type %T to dictionary type %T", arr.DataType(), b.dt.ValueType)
- }
-
- for i := 0; i < arr.Len(); i++ {
- if err = b.insertDictValue(arr.Value(i)); err != nil {
- break
- }
- }
- return
-}
-
-func (b *BinaryDictionaryBuilder) GetValueIndex(i int) int {
- switch b := b.idxBuilder.Builder.(type) {
- case *Uint8Builder:
- return int(b.Value(i))
- case *Int8Builder:
- return int(b.Value(i))
- case *Uint16Builder:
- return int(b.Value(i))
- case *Int16Builder:
- return int(b.Value(i))
- case *Uint32Builder:
- return int(b.Value(i))
- case *Int32Builder:
- return int(b.Value(i))
- case *Uint64Builder:
- return int(b.Value(i))
- case *Int64Builder:
- return int(b.Value(i))
- default:
- return -1
- }
-}
-
-func (b *BinaryDictionaryBuilder) Value(i int) []byte {
- switch mt := b.memoTable.(type) {
- case *hashing.BinaryMemoTable:
- return mt.Value(i)
- }
- return nil
-}
-
-func (b *BinaryDictionaryBuilder) ValueStr(i int) string {
- return string(b.Value(i))
-}
-
-type FixedSizeBinaryDictionaryBuilder struct {
- dictionaryBuilder
- byteWidth int
-}
-
-func (b *FixedSizeBinaryDictionaryBuilder) Append(v []byte) error {
- return b.appendValue(v[:b.byteWidth])
-}
-func (b *FixedSizeBinaryDictionaryBuilder) InsertDictValues(arr *FixedSizeBinary) (err error) {
- var (
- beg = arr.array.data.offset * b.byteWidth
- end = (arr.array.data.offset + arr.data.length) * b.byteWidth
- )
- data := arr.valueBytes[beg:end]
- for len(data) > 0 {
- if err = b.insertDictValue(data[:b.byteWidth]); err != nil {
- break
- }
- data = data[b.byteWidth:]
- }
- return
-}
-
-type Decimal128DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Decimal128DictionaryBuilder) Append(v decimal128.Num) error {
- return b.appendValue((*(*[arrow.Decimal128SizeBytes]byte)(unsafe.Pointer(&v)))[:])
-}
-func (b *Decimal128DictionaryBuilder) InsertDictValues(arr *Decimal128) (err error) {
- data := arrow.Decimal128Traits.CastToBytes(arr.values)
- for len(data) > 0 {
- if err = b.insertDictValue(data[:arrow.Decimal128SizeBytes]); err != nil {
- break
- }
- data = data[arrow.Decimal128SizeBytes:]
- }
- return
-}
-
-type Decimal256DictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *Decimal256DictionaryBuilder) Append(v decimal256.Num) error {
- return b.appendValue((*(*[arrow.Decimal256SizeBytes]byte)(unsafe.Pointer(&v)))[:])
-}
-func (b *Decimal256DictionaryBuilder) InsertDictValues(arr *Decimal256) (err error) {
- data := arrow.Decimal256Traits.CastToBytes(arr.values)
- for len(data) > 0 {
- if err = b.insertDictValue(data[:arrow.Decimal256SizeBytes]); err != nil {
- break
- }
- data = data[arrow.Decimal256SizeBytes:]
- }
- return
-}
-
-type MonthDayNanoDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *MonthDayNanoDictionaryBuilder) Append(v arrow.MonthDayNanoInterval) error {
- return b.appendValue((*(*[arrow.MonthDayNanoIntervalSizeBytes]byte)(unsafe.Pointer(&v)))[:])
-}
-func (b *MonthDayNanoDictionaryBuilder) InsertDictValues(arr *MonthDayNanoInterval) (err error) {
- data := arrow.MonthDayNanoIntervalTraits.CastToBytes(arr.values)
- for len(data) > 0 {
- if err = b.insertDictValue(data[:arrow.MonthDayNanoIntervalSizeBytes]); err != nil {
- break
- }
- data = data[arrow.MonthDayNanoIntervalSizeBytes:]
- }
- return
-}
-
-type DayTimeDictionaryBuilder struct {
- dictionaryBuilder
-}
-
-func (b *DayTimeDictionaryBuilder) Append(v arrow.DayTimeInterval) error {
- return b.appendValue((*(*[arrow.DayTimeIntervalSizeBytes]byte)(unsafe.Pointer(&v)))[:])
-}
-func (b *DayTimeDictionaryBuilder) InsertDictValues(arr *DayTimeInterval) (err error) {
- data := arrow.DayTimeIntervalTraits.CastToBytes(arr.values)
- for len(data) > 0 {
- if err = b.insertDictValue(data[:arrow.DayTimeIntervalSizeBytes]); err != nil {
- break
- }
- data = data[arrow.DayTimeIntervalSizeBytes:]
- }
- return
-}
-
-func IsTrivialTransposition(transposeMap []int32) bool {
- for i, t := range transposeMap {
- if t != int32(i) {
- return false
- }
- }
- return true
-}
-
-func TransposeDictIndices(mem memory.Allocator, data arrow.ArrayData, inType, outType arrow.DataType, dict arrow.ArrayData, transposeMap []int32) (arrow.ArrayData, error) {
- // inType may be different from data->dtype if data is ExtensionType
- if inType.ID() != arrow.DICTIONARY || outType.ID() != arrow.DICTIONARY {
- return nil, errors.New("arrow/array: expected dictionary type")
- }
-
- var (
- inDictType = inType.(*arrow.DictionaryType)
- outDictType = outType.(*arrow.DictionaryType)
- inIndexType = inDictType.IndexType
- outIndexType = outDictType.IndexType.(arrow.FixedWidthDataType)
- )
-
- if inIndexType.ID() == outIndexType.ID() && IsTrivialTransposition(transposeMap) {
- // index type and values will be identical, we can reuse the existing buffers
- return NewDataWithDictionary(outType, data.Len(), []*memory.Buffer{data.Buffers()[0], data.Buffers()[1]},
- data.NullN(), data.Offset(), dict.(*Data)), nil
- }
-
- // default path: compute the transposed indices as a new buffer
- outBuf := memory.NewResizableBuffer(mem)
- outBuf.Resize(data.Len() * int(bitutil.BytesForBits(int64(outIndexType.BitWidth()))))
- defer outBuf.Release()
-
- // shift null buffer if original offset is non-zero
- var nullBitmap *memory.Buffer
- if data.Offset() != 0 && data.NullN() != 0 {
- nullBitmap = memory.NewResizableBuffer(mem)
- nullBitmap.Resize(int(bitutil.BytesForBits(int64(data.Len()))))
- bitutil.CopyBitmap(data.Buffers()[0].Bytes(), data.Offset(), data.Len(), nullBitmap.Bytes(), 0)
- defer nullBitmap.Release()
- } else {
- nullBitmap = data.Buffers()[0]
- }
-
- outData := NewDataWithDictionary(outType, data.Len(),
- []*memory.Buffer{nullBitmap, outBuf}, data.NullN(), 0, dict.(*Data))
- err := utils.TransposeIntsBuffers(inIndexType, outIndexType,
- data.Buffers()[1].Bytes(), outBuf.Bytes(), data.Offset(), outData.offset, data.Len(), transposeMap)
- return outData, err
-}
-
-// DictionaryUnifier defines the interface used for unifying, and optionally producing
-// transposition maps for, multiple dictionary arrays incrementally.
-type DictionaryUnifier interface {
- // Unify adds the provided array of dictionary values to be unified.
- Unify(arrow.Array) error
- // UnifyAndTranspose adds the provided array of dictionary values,
- // just like Unify but returns an allocated buffer containing a mapping
- // to transpose dictionary indices.
- UnifyAndTranspose(dict arrow.Array) (transposed *memory.Buffer, err error)
- // GetResult returns the dictionary type (choosing the smallest index type
- // that can represent all the values) and the new unified dictionary.
- //
- // Calling GetResult clears the existing dictionary from the unifier so it
- // can be reused by calling Unify/UnifyAndTranspose again with new arrays.
- GetResult() (outType arrow.DataType, outDict arrow.Array, err error)
- // GetResultWithIndexType is like GetResult, but allows specifying the type
- // of the dictionary indexes rather than letting the unifier pick. If the
- // passed in index type isn't large enough to represent all of the dictionary
- // values, an error will be returned instead. The new unified dictionary
- // is returned.
- GetResultWithIndexType(indexType arrow.DataType) (arrow.Array, error)
- // Release should be called to clean up any allocated scratch memo-table used
- // for building the unified dictionary.
- Release()
-}
-
-type unifier struct {
- mem memory.Allocator
- valueType arrow.DataType
- memoTable hashing.MemoTable
-}
-
-// NewDictionaryUnifier constructs and returns a new dictionary unifier for dictionaries
-// of valueType, using the provided allocator for allocating the unified dictionary
-// and the memotable used for building it.
-//
-// This will only work for non-nested types currently. a nested valueType or dictionary type
-// will result in an error.
-func NewDictionaryUnifier(alloc memory.Allocator, valueType arrow.DataType) (DictionaryUnifier, error) {
- memoTable, err := createMemoTable(alloc, valueType)
- if err != nil {
- return nil, err
- }
- return &unifier{
- mem: alloc,
- valueType: valueType,
- memoTable: memoTable,
- }, nil
-}
-
-func (u *unifier) Release() {
- if bin, ok := u.memoTable.(*hashing.BinaryMemoTable); ok {
- bin.Release()
- }
-}
-
-func (u *unifier) Unify(dict arrow.Array) (err error) {
- if !arrow.TypeEqual(u.valueType, dict.DataType()) {
- return fmt.Errorf("dictionary type different from unifier: %s, expected: %s", dict.DataType(), u.valueType)
- }
-
- valFn := getvalFn(dict)
- for i := 0; i < dict.Len(); i++ {
- if dict.IsNull(i) {
- u.memoTable.GetOrInsertNull()
- continue
- }
-
- if _, _, err = u.memoTable.GetOrInsert(valFn(i)); err != nil {
- return err
- }
- }
- return
-}
-
-func (u *unifier) UnifyAndTranspose(dict arrow.Array) (transposed *memory.Buffer, err error) {
- if !arrow.TypeEqual(u.valueType, dict.DataType()) {
- return nil, fmt.Errorf("dictionary type different from unifier: %s, expected: %s", dict.DataType(), u.valueType)
- }
-
- transposed = memory.NewResizableBuffer(u.mem)
- transposed.Resize(arrow.Int32Traits.BytesRequired(dict.Len()))
-
- newIdxes := arrow.Int32Traits.CastFromBytes(transposed.Bytes())
- valFn := getvalFn(dict)
- for i := 0; i < dict.Len(); i++ {
- if dict.IsNull(i) {
- idx, _ := u.memoTable.GetOrInsertNull()
- newIdxes[i] = int32(idx)
- continue
- }
-
- idx, _, err := u.memoTable.GetOrInsert(valFn(i))
- if err != nil {
- transposed.Release()
- return nil, err
- }
- newIdxes[i] = int32(idx)
- }
- return
-}
-
-func (u *unifier) GetResult() (outType arrow.DataType, outDict arrow.Array, err error) {
- dictLen := u.memoTable.Size()
- var indexType arrow.DataType
- switch {
- case dictLen <= math.MaxInt8:
- indexType = arrow.PrimitiveTypes.Int8
- case dictLen <= math.MaxInt16:
- indexType = arrow.PrimitiveTypes.Int16
- case dictLen <= math.MaxInt32:
- indexType = arrow.PrimitiveTypes.Int32
- default:
- indexType = arrow.PrimitiveTypes.Int64
- }
- outType = &arrow.DictionaryType{IndexType: indexType, ValueType: u.valueType}
-
- dictData, err := GetDictArrayData(u.mem, u.valueType, u.memoTable, 0)
- if err != nil {
- return nil, nil, err
- }
-
- u.memoTable.Reset()
-
- defer dictData.Release()
- outDict = MakeFromData(dictData)
- return
-}
-
-func (u *unifier) GetResultWithIndexType(indexType arrow.DataType) (arrow.Array, error) {
- dictLen := u.memoTable.Size()
- var toobig bool
- switch indexType.ID() {
- case arrow.UINT8:
- toobig = dictLen > math.MaxUint8
- case arrow.INT8:
- toobig = dictLen > math.MaxInt8
- case arrow.UINT16:
- toobig = dictLen > math.MaxUint16
- case arrow.INT16:
- toobig = dictLen > math.MaxInt16
- case arrow.UINT32:
- toobig = uint(dictLen) > math.MaxUint32
- case arrow.INT32:
- toobig = dictLen > math.MaxInt32
- case arrow.UINT64:
- toobig = uint64(dictLen) > uint64(math.MaxUint64)
- case arrow.INT64:
- default:
- return nil, fmt.Errorf("arrow/array: invalid dictionary index type: %s, must be integral", indexType)
- }
- if toobig {
- return nil, errors.New("arrow/array: cannot combine dictionaries. unified dictionary requires a larger index type")
- }
-
- dictData, err := GetDictArrayData(u.mem, u.valueType, u.memoTable, 0)
- if err != nil {
- return nil, err
- }
-
- u.memoTable.Reset()
-
- defer dictData.Release()
- return MakeFromData(dictData), nil
-}
-
-type binaryUnifier struct {
- mem memory.Allocator
- memoTable *hashing.BinaryMemoTable
-}
-
-// NewBinaryDictionaryUnifier constructs and returns a new dictionary unifier for dictionaries
-// of binary values, using the provided allocator for allocating the unified dictionary
-// and the memotable used for building it.
-func NewBinaryDictionaryUnifier(alloc memory.Allocator) DictionaryUnifier {
- return &binaryUnifier{
- mem: alloc,
- memoTable: hashing.NewBinaryMemoTable(0, 0, NewBinaryBuilder(alloc, arrow.BinaryTypes.Binary)),
- }
-}
-
-func (u *binaryUnifier) Release() {
- u.memoTable.Release()
-}
-
-func (u *binaryUnifier) Unify(dict arrow.Array) (err error) {
- if !arrow.TypeEqual(arrow.BinaryTypes.Binary, dict.DataType()) {
- return fmt.Errorf("dictionary type different from unifier: %s, expected: %s", dict.DataType(), arrow.BinaryTypes.Binary)
- }
-
- typedDict := dict.(*Binary)
- for i := 0; i < dict.Len(); i++ {
- if dict.IsNull(i) {
- u.memoTable.GetOrInsertNull()
- continue
- }
-
- if _, _, err = u.memoTable.GetOrInsertBytes(typedDict.Value(i)); err != nil {
- return err
- }
- }
- return
-}
-
-func (u *binaryUnifier) UnifyAndTranspose(dict arrow.Array) (transposed *memory.Buffer, err error) {
- if !arrow.TypeEqual(arrow.BinaryTypes.Binary, dict.DataType()) {
- return nil, fmt.Errorf("dictionary type different from unifier: %s, expected: %s", dict.DataType(), arrow.BinaryTypes.Binary)
- }
-
- transposed = memory.NewResizableBuffer(u.mem)
- transposed.Resize(arrow.Int32Traits.BytesRequired(dict.Len()))
-
- newIdxes := arrow.Int32Traits.CastFromBytes(transposed.Bytes())
- typedDict := dict.(*Binary)
- for i := 0; i < dict.Len(); i++ {
- if dict.IsNull(i) {
- idx, _ := u.memoTable.GetOrInsertNull()
- newIdxes[i] = int32(idx)
- continue
- }
-
- idx, _, err := u.memoTable.GetOrInsertBytes(typedDict.Value(i))
- if err != nil {
- transposed.Release()
- return nil, err
- }
- newIdxes[i] = int32(idx)
- }
- return
-}
-
-func (u *binaryUnifier) GetResult() (outType arrow.DataType, outDict arrow.Array, err error) {
- dictLen := u.memoTable.Size()
- var indexType arrow.DataType
- switch {
- case dictLen <= math.MaxInt8:
- indexType = arrow.PrimitiveTypes.Int8
- case dictLen <= math.MaxInt16:
- indexType = arrow.PrimitiveTypes.Int16
- case dictLen <= math.MaxInt32:
- indexType = arrow.PrimitiveTypes.Int32
- default:
- indexType = arrow.PrimitiveTypes.Int64
- }
- outType = &arrow.DictionaryType{IndexType: indexType, ValueType: arrow.BinaryTypes.Binary}
-
- dictData, err := GetDictArrayData(u.mem, arrow.BinaryTypes.Binary, u.memoTable, 0)
- if err != nil {
- return nil, nil, err
- }
-
- u.memoTable.Reset()
-
- defer dictData.Release()
- outDict = MakeFromData(dictData)
- return
-}
-
-func (u *binaryUnifier) GetResultWithIndexType(indexType arrow.DataType) (arrow.Array, error) {
- dictLen := u.memoTable.Size()
- var toobig bool
- switch indexType.ID() {
- case arrow.UINT8:
- toobig = dictLen > math.MaxUint8
- case arrow.INT8:
- toobig = dictLen > math.MaxInt8
- case arrow.UINT16:
- toobig = dictLen > math.MaxUint16
- case arrow.INT16:
- toobig = dictLen > math.MaxInt16
- case arrow.UINT32:
- toobig = uint(dictLen) > math.MaxUint32
- case arrow.INT32:
- toobig = dictLen > math.MaxInt32
- case arrow.UINT64:
- toobig = uint64(dictLen) > uint64(math.MaxUint64)
- case arrow.INT64:
- default:
- return nil, fmt.Errorf("arrow/array: invalid dictionary index type: %s, must be integral", indexType)
- }
- if toobig {
- return nil, errors.New("arrow/array: cannot combine dictionaries. unified dictionary requires a larger index type")
- }
-
- dictData, err := GetDictArrayData(u.mem, arrow.BinaryTypes.Binary, u.memoTable, 0)
- if err != nil {
- return nil, err
- }
-
- u.memoTable.Reset()
-
- defer dictData.Release()
- return MakeFromData(dictData), nil
-}
-
-func unifyRecursive(mem memory.Allocator, typ arrow.DataType, chunks []*Data) (changed bool, err error) {
- debug.Assert(len(chunks) != 0, "must provide non-zero length chunk slice")
- var extType arrow.DataType
-
- if typ.ID() == arrow.EXTENSION {
- extType = typ
- typ = typ.(arrow.ExtensionType).StorageType()
- }
-
- if nestedTyp, ok := typ.(arrow.NestedType); ok {
- children := make([]*Data, len(chunks))
- for i, f := range nestedTyp.Fields() {
- for j, c := range chunks {
- children[j] = c.childData[i].(*Data)
- }
-
- childChanged, err := unifyRecursive(mem, f.Type, children)
- if err != nil {
- return false, err
- }
- if childChanged {
- // only when unification actually occurs
- for j := range chunks {
- chunks[j].childData[i] = children[j]
- }
- changed = true
- }
- }
- }
-
- if typ.ID() == arrow.DICTIONARY {
- dictType := typ.(*arrow.DictionaryType)
- var (
- uni DictionaryUnifier
- newDict arrow.Array
- )
- // unify any nested dictionaries first, but the unifier doesn't support
- // nested dictionaries yet so this would fail.
- uni, err = NewDictionaryUnifier(mem, dictType.ValueType)
- if err != nil {
- return changed, err
- }
- defer uni.Release()
- transposeMaps := make([]*memory.Buffer, len(chunks))
- for i, c := range chunks {
- debug.Assert(c.dictionary != nil, "missing dictionary data for dictionary array")
- arr := MakeFromData(c.dictionary)
- defer arr.Release()
- if transposeMaps[i], err = uni.UnifyAndTranspose(arr); err != nil {
- return
- }
- defer transposeMaps[i].Release()
- }
-
- if newDict, err = uni.GetResultWithIndexType(dictType.IndexType); err != nil {
- return
- }
- defer newDict.Release()
-
- for j := range chunks {
- chnk, err := TransposeDictIndices(mem, chunks[j], typ, typ, newDict.Data(), arrow.Int32Traits.CastFromBytes(transposeMaps[j].Bytes()))
- if err != nil {
- return changed, err
- }
- chunks[j].Release()
- chunks[j] = chnk.(*Data)
- if extType != nil {
- chunks[j].dtype = extType
- }
- }
- changed = true
- }
-
- return
-}
-
-// UnifyChunkedDicts takes a chunked array of dictionary type and will unify
-// the dictionary across all of the chunks with the returned chunked array
-// having all chunks share the same dictionary.
-//
-// The return from this *must* have Release called on it unless an error is returned
-// in which case the *arrow.Chunked will be nil.
-//
-// If there is 1 or fewer chunks, then nothing is modified and this function will just
-// call Retain on the passed in Chunked array (so Release can safely be called on it).
-// The same is true if the type of the array is not a dictionary or if no changes are
-// needed for all of the chunks to be using the same dictionary.
-func UnifyChunkedDicts(alloc memory.Allocator, chnkd *arrow.Chunked) (*arrow.Chunked, error) {
- if len(chnkd.Chunks()) <= 1 {
- chnkd.Retain()
- return chnkd, nil
- }
-
- chunksData := make([]*Data, len(chnkd.Chunks()))
- for i, c := range chnkd.Chunks() {
- c.Data().Retain()
- chunksData[i] = c.Data().(*Data)
- }
- changed, err := unifyRecursive(alloc, chnkd.DataType(), chunksData)
- if err != nil || !changed {
- for _, c := range chunksData {
- c.Release()
- }
- if err == nil {
- chnkd.Retain()
- } else {
- chnkd = nil
- }
- return chnkd, err
- }
-
- chunks := make([]arrow.Array, len(chunksData))
- for i, c := range chunksData {
- chunks[i] = MakeFromData(c)
- defer chunks[i].Release()
- c.Release()
- }
-
- return arrow.NewChunked(chnkd.DataType(), chunks), nil
-}
-
-// UnifyTableDicts performs UnifyChunkedDicts on each column of the table so that
-// any dictionary column will have the dictionaries of its chunks unified.
-//
-// The returned Table should always be Release'd unless a non-nil error was returned,
-// in which case the table returned will be nil.
-func UnifyTableDicts(alloc memory.Allocator, table arrow.Table) (arrow.Table, error) {
- cols := make([]arrow.Column, table.NumCols())
- for i := 0; i < int(table.NumCols()); i++ {
- chnkd, err := UnifyChunkedDicts(alloc, table.Column(i).Data())
- if err != nil {
- return nil, err
- }
- defer chnkd.Release()
- cols[i] = *arrow.NewColumn(table.Schema().Field(i), chnkd)
- defer cols[i].Release()
- }
- return NewTable(table.Schema(), cols, table.NumRows()), nil
-}
-
-var (
- _ arrow.Array = (*Dictionary)(nil)
- _ Builder = (*dictionaryBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/diff.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/diff.go
deleted file mode 100644
index 6bf637253..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/diff.go
+++ /dev/null
@@ -1,315 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
-)
-
-// Edit represents one entry in the edit script to compare two arrays.
-type Edit struct {
- Insert bool
- RunLength int64
-}
-
-// Edits is a slice of Edit structs that represents an edit script to compare two arrays.
-// When applied to the base array, it produces the target array.
-// Each element of "insert" determines whether an element was inserted into (true)
-// or deleted from (false) base. Each insertion or deletion is followed by a run of
-// elements which are unchanged from base to target; the length of this run is stored
-// in RunLength. (Note that the edit script begins and ends with a run of shared
-// elements but both fields of the struct must have the same length. To accommodate this
-// the first element of "insert" should be ignored.)
-//
-// For example for base "hlloo" and target "hello", the edit script would be
-// [
-//
-// {"insert": false, "run_length": 1}, // leading run of length 1 ("h")
-// {"insert": true, "run_length": 3}, // insert("e") then a run of length 3 ("llo")
-// {"insert": false, "run_length": 0} // delete("o") then an empty run
-//
-// ]
-type Edits []Edit
-
-// String returns a simple string representation of the edit script.
-func (e Edits) String() string {
- return fmt.Sprintf("%v", []Edit(e))
-}
-
-// UnifiedDiff returns a string representation of the diff of base and target in Unified Diff format.
-func (e Edits) UnifiedDiff(base, target arrow.Array) string {
- var s strings.Builder
- baseIndex := int64(0)
- targetIndex := int64(0)
- wrotePosition := false
- for i := 0; i < len(e); i++ {
- if i > 0 {
- if !wrotePosition {
- s.WriteString(fmt.Sprintf("@@ -%d, +%d @@\n", baseIndex, targetIndex))
- wrotePosition = true
- }
- if e[i].Insert {
- s.WriteString(fmt.Sprintf("+%v\n", stringAt(target, targetIndex)))
- targetIndex++
- } else {
- s.WriteString(fmt.Sprintf("-%v\n", stringAt(base, baseIndex)))
- baseIndex++
- }
- }
- for j := int64(0); j < e[i].RunLength; j++ {
- baseIndex++
- targetIndex++
- wrotePosition = false
- }
- }
- return s.String()
-}
-
-func stringAt(arr arrow.Array, i int64) string {
- if arr.IsNull(int(i)) {
- return "null"
- }
- dt := arr.DataType()
- switch {
- case arrow.TypeEqual(dt, arrow.PrimitiveTypes.Float32):
- return fmt.Sprintf("%f", arr.(*Float32).Value(int(i)))
- case arrow.TypeEqual(dt, arrow.PrimitiveTypes.Float64):
- return fmt.Sprintf("%f", arr.(*Float64).Value(int(i)))
- case arrow.TypeEqual(dt, arrow.PrimitiveTypes.Date32):
- return arr.(*Date32).Value(int(i)).FormattedString()
- case arrow.TypeEqual(dt, arrow.PrimitiveTypes.Date64):
- return arr.(*Date64).Value(int(i)).FormattedString()
- case arrow.TypeEqual(dt, arrow.FixedWidthTypes.Timestamp_s):
- return arr.(*Timestamp).Value(int(i)).ToTime(arrow.Second).String()
- case arrow.TypeEqual(dt, arrow.FixedWidthTypes.Timestamp_ms):
- return arr.(*Timestamp).Value(int(i)).ToTime(arrow.Millisecond).String()
- case arrow.TypeEqual(dt, arrow.FixedWidthTypes.Timestamp_us):
- return arr.(*Timestamp).Value(int(i)).ToTime(arrow.Microsecond).String()
- case arrow.TypeEqual(dt, arrow.FixedWidthTypes.Timestamp_ns):
- return arr.(*Timestamp).Value(int(i)).ToTime(arrow.Nanosecond).String()
- }
- s := NewSlice(arr, i, i+1)
- defer s.Release()
- st, _ := s.MarshalJSON()
- return strings.Trim(string(st[1:len(st)-1]), "\n")
-}
-
-// Diff compares two arrays, returning an edit script which expresses the difference
-// between them. The edit script can be applied to the base array to produce the target.
-// 'base' is a baseline for comparison.
-// 'target' is an array of identical type to base whose elements differ from base's.
-func Diff(base, target arrow.Array) (edits Edits, err error) {
- if !arrow.TypeEqual(base.DataType(), target.DataType()) {
- return nil, fmt.Errorf("%w: only taking the diff of like-typed arrays is supported", arrow.ErrNotImplemented)
- }
- switch base.DataType().ID() {
- case arrow.EXTENSION:
- return Diff(base.(ExtensionArray).Storage(), target.(ExtensionArray).Storage())
- case arrow.DICTIONARY:
- return nil, fmt.Errorf("%w: diffing arrays of type %s is not implemented", arrow.ErrNotImplemented, base.DataType())
- case arrow.RUN_END_ENCODED:
- return nil, fmt.Errorf("%w: diffing arrays of type %s is not implemented", arrow.ErrNotImplemented, base.DataType())
- }
- d := newQuadraticSpaceMyersDiff(base, target)
- return d.Diff()
-}
-
-// editPoint represents an intermediate state in the comparison of two arrays
-type editPoint struct {
- base int
- target int
-}
-
-type quadraticSpaceMyersDiff struct {
- base arrow.Array
- target arrow.Array
- finishIndex int
- editCount int
- endpointBase []int
- insert []bool
- baseBegin int
- targetBegin int
- baseEnd int
- targetEnd int
-}
-
-func newQuadraticSpaceMyersDiff(base, target arrow.Array) *quadraticSpaceMyersDiff {
- d := &quadraticSpaceMyersDiff{
- base: base,
- target: target,
- finishIndex: -1,
- editCount: 0,
- endpointBase: []int{},
- insert: []bool{},
- baseBegin: 0,
- targetBegin: 0,
- baseEnd: base.Len(),
- targetEnd: target.Len(),
- }
- d.endpointBase = []int{d.extendFrom(editPoint{d.baseBegin, d.targetBegin}).base}
- if d.baseEnd-d.baseBegin == d.targetEnd-d.targetBegin && d.endpointBase[0] == d.baseEnd {
- // trivial case: base == target
- d.finishIndex = 0
- }
- return d
-}
-
-func (d *quadraticSpaceMyersDiff) valuesEqual(baseIndex, targetIndex int) bool {
- baseNull := d.base.IsNull(baseIndex)
- targetNull := d.target.IsNull(targetIndex)
- if baseNull || targetNull {
- return baseNull && targetNull
- }
- return SliceEqual(d.base, int64(baseIndex), int64(baseIndex+1), d.target, int64(targetIndex), int64(targetIndex+1))
-}
-
-// increment the position within base and target (the elements skipped in this way were
-// present in both sequences)
-func (d *quadraticSpaceMyersDiff) extendFrom(p editPoint) editPoint {
- for p.base != d.baseEnd && p.target != d.targetEnd {
- if !d.valuesEqual(p.base, p.target) {
- break
- }
- p.base++
- p.target++
- }
- return p
-}
-
-// increment the position within base (the element pointed to was deleted)
-// then extend maximally
-func (d *quadraticSpaceMyersDiff) deleteOne(p editPoint) editPoint {
- if p.base != d.baseEnd {
- p.base++
- }
- return d.extendFrom(p)
-}
-
-// increment the position within target (the element pointed to was inserted)
-// then extend maximally
-func (d *quadraticSpaceMyersDiff) insertOne(p editPoint) editPoint {
- if p.target != d.targetEnd {
- p.target++
- }
- return d.extendFrom(p)
-}
-
-// beginning of a range for storing per-edit state in endpointBase and insert
-func storageOffset(editCount int) int {
- return editCount * (editCount + 1) / 2
-}
-
-// given edit_count and index, augment endpointBase[index] with the corresponding
-// position in target (which is only implicitly represented in editCount, index)
-func (d *quadraticSpaceMyersDiff) getEditPoint(editCount, index int) editPoint {
- insertionsMinusDeletions := 2*(index-storageOffset(editCount)) - editCount
- maximalBase := d.endpointBase[index]
- maximalTarget := min(d.targetBegin+((maximalBase-d.baseBegin)+insertionsMinusDeletions), d.targetEnd)
- return editPoint{maximalBase, maximalTarget}
-}
-
-func (d *quadraticSpaceMyersDiff) Next() {
- d.editCount++
- if len(d.endpointBase) < storageOffset(d.editCount+1) {
- d.endpointBase = append(d.endpointBase, make([]int, storageOffset(d.editCount+1)-len(d.endpointBase))...)
- }
- if len(d.insert) < storageOffset(d.editCount+1) {
- d.insert = append(d.insert, make([]bool, storageOffset(d.editCount+1)-len(d.insert))...)
- }
- previousOffset := storageOffset(d.editCount - 1)
- currentOffset := storageOffset(d.editCount)
-
- // try deleting from base first
- for i, iOut := 0, 0; i < d.editCount; i, iOut = i+1, iOut+1 {
- previousEndpoint := d.getEditPoint(d.editCount-1, i+previousOffset)
- d.endpointBase[iOut+currentOffset] = d.deleteOne(previousEndpoint).base
- }
-
- // check if inserting from target could do better
- for i, iOut := 0, 1; i < d.editCount; i, iOut = i+1, iOut+1 {
- // retrieve the previously computed best endpoint for (editCount, iOut)
- // for comparison with the best endpoint achievable with an insertion
- endpointAfterDeletion := d.getEditPoint(d.editCount, iOut+currentOffset)
-
- previousEndpoint := d.getEditPoint(d.editCount-1, i+previousOffset)
- endpointAfterInsertion := d.insertOne(previousEndpoint)
-
- if endpointAfterInsertion.base-endpointAfterDeletion.base >= 0 {
- // insertion was more efficient; keep it and mark the insertion in insert
- d.insert[iOut+currentOffset] = true
- d.endpointBase[iOut+currentOffset] = endpointAfterInsertion.base
- }
- }
-
- finish := editPoint{d.baseEnd, d.targetEnd}
- for iOut := 0; iOut < d.editCount+1; iOut++ {
- if d.getEditPoint(d.editCount, iOut+currentOffset) == finish {
- d.finishIndex = iOut + currentOffset
- return
- }
- }
-}
-
-func (d *quadraticSpaceMyersDiff) Done() bool {
- return d.finishIndex != -1
-}
-
-func (d *quadraticSpaceMyersDiff) GetEdits() (Edits, error) {
- if !d.Done() {
- panic("GetEdits called but Done() = false")
- }
-
- length := d.editCount + 1
- edits := make(Edits, length)
- index := d.finishIndex
- endpoint := d.getEditPoint(d.editCount, d.finishIndex)
-
- for i := d.editCount; i > 0; i-- {
- insert := d.insert[index]
- edits[i].Insert = insert
- insertionsMinusDeletions := (endpoint.base - d.baseBegin) - (endpoint.target - d.targetBegin)
- if insert {
- insertionsMinusDeletions++
- } else {
- insertionsMinusDeletions--
- }
- index = (i-1-insertionsMinusDeletions)/2 + storageOffset(i-1)
-
- // endpoint of previous edit
- previous := d.getEditPoint(i-1, index)
- in := 0
- if insert {
- in = 1
- }
- edits[i].RunLength = int64(endpoint.base - previous.base - (1 - in))
- endpoint = previous
- }
- edits[0].Insert = false
- edits[0].RunLength = int64(endpoint.base - d.baseBegin)
-
- return edits, nil
-}
-
-func (d *quadraticSpaceMyersDiff) Diff() (edits Edits, err error) {
- for !d.Done() {
- d.Next()
- }
- return d.GetEdits()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/doc.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/doc.go
deleted file mode 100644
index 5cf854086..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/doc.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
-Package array provides implementations of various Arrow array types.
-*/
-package array
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/encoded.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/encoded.go
deleted file mode 100644
index 8ca1416b9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/encoded.go
+++ /dev/null
@@ -1,520 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "math"
- "reflect"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/encoded"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-// RunEndEncoded represents an array containing two children:
-// an array of int32 values defining the ends of each run of values
-// and an array of values
-type RunEndEncoded struct {
- array
-
- ends arrow.Array
- values arrow.Array
-}
-
-func NewRunEndEncodedArray(runEnds, values arrow.Array, logicalLength, offset int) *RunEndEncoded {
- data := NewData(arrow.RunEndEncodedOf(runEnds.DataType(), values.DataType()), logicalLength,
- []*memory.Buffer{nil}, []arrow.ArrayData{runEnds.Data(), values.Data()}, 0, offset)
- defer data.Release()
- return NewRunEndEncodedData(data)
-}
-
-func NewRunEndEncodedData(data arrow.ArrayData) *RunEndEncoded {
- r := &RunEndEncoded{}
- r.refCount = 1
- r.setData(data.(*Data))
- return r
-}
-
-func (r *RunEndEncoded) Values() arrow.Array { return r.values }
-func (r *RunEndEncoded) RunEndsArr() arrow.Array { return r.ends }
-
-func (r *RunEndEncoded) Retain() {
- r.array.Retain()
- r.values.Retain()
- r.ends.Retain()
-}
-
-func (r *RunEndEncoded) Release() {
- r.array.Release()
- r.values.Release()
- r.ends.Release()
-}
-
-// LogicalValuesArray returns an array holding the values of each
-// run, only over the range of run values inside the logical offset/length
-// range of the parent array.
-//
-// # Example
-//
-// For this array:
-//
-// RunEndEncoded: { Offset: 150, Length: 1500 }
-// RunEnds: [ 1, 2, 4, 6, 10, 1000, 1750, 2000 ]
-// Values: [ "a", "b", "c", "d", "e", "f", "g", "h" ]
-//
-// LogicalValuesArray will return the following array:
-//
-// [ "f", "g" ]
-//
-// This is because the offset of 150 tells it to skip the values until
-// "f" which corresponds with the logical offset (the run from 10 - 1000),
-// and stops after "g" because the length + offset goes to 1650 which is
-// within the run from 1000 - 1750, corresponding to the "g" value.
-//
-// # Note
-//
-// The return from this needs to be Released.
-func (r *RunEndEncoded) LogicalValuesArray() arrow.Array {
- physOffset := r.GetPhysicalOffset()
- physLength := r.GetPhysicalLength()
- data := NewSliceData(r.data.Children()[1], int64(physOffset), int64(physOffset+physLength))
- defer data.Release()
- return MakeFromData(data)
-}
-
-// LogicalRunEndsArray returns an array holding the logical indexes
-// of each run end, only over the range of run end values relative
-// to the logical offset/length range of the parent array.
-//
-// For arrays with an offset, this is not a slice of the existing
-// internal run ends array. Instead a new array is created with run-ends
-// that are adjusted so the new array can have an offset of 0. As a result
-// this method can be expensive to call for an array with a non-zero offset.
-//
-// # Example
-//
-// For this array:
-//
-// RunEndEncoded: { Offset: 150, Length: 1500 }
-// RunEnds: [ 1, 2, 4, 6, 10, 1000, 1750, 2000 ]
-// Values: [ "a", "b", "c", "d", "e", "f", "g", "h" ]
-//
-// LogicalRunEndsArray will return the following array:
-//
-// [ 850, 1500 ]
-//
-// This is because the offset of 150 tells us to skip all run-ends less
-// than 150 (by finding the physical offset), and we adjust the run-ends
-// accordingly (1000 - 150 = 850). The logical length of the array is 1500,
-// so we know we don't want to go past the 1750 run end. Thus the last
-// run-end is determined by doing: min(1750 - 150, 1500) = 1500.
-//
-// # Note
-//
-// The return from this needs to be Released
-func (r *RunEndEncoded) LogicalRunEndsArray(mem memory.Allocator) arrow.Array {
- physOffset := r.GetPhysicalOffset()
- physLength := r.GetPhysicalLength()
-
- if r.data.offset == 0 {
- data := NewSliceData(r.data.childData[0], 0, int64(physLength))
- defer data.Release()
- return MakeFromData(data)
- }
-
- bldr := NewBuilder(mem, r.data.childData[0].DataType())
- defer bldr.Release()
- bldr.Resize(physLength)
-
- switch e := r.ends.(type) {
- case *Int16:
- for _, v := range e.Int16Values()[physOffset : physOffset+physLength] {
- v -= int16(r.data.offset)
- v = int16(utils.Min(int(v), r.data.length))
- bldr.(*Int16Builder).Append(v)
- }
- case *Int32:
- for _, v := range e.Int32Values()[physOffset : physOffset+physLength] {
- v -= int32(r.data.offset)
- v = int32(utils.Min(int(v), r.data.length))
- bldr.(*Int32Builder).Append(v)
- }
- case *Int64:
- for _, v := range e.Int64Values()[physOffset : physOffset+physLength] {
- v -= int64(r.data.offset)
- v = int64(utils.Min(int(v), r.data.length))
- bldr.(*Int64Builder).Append(v)
- }
- }
-
- return bldr.NewArray()
-}
-
-func (r *RunEndEncoded) setData(data *Data) {
- if len(data.childData) != 2 {
- panic(fmt.Errorf("%w: arrow/array: RLE array must have exactly 2 children", arrow.ErrInvalid))
- }
- debug.Assert(data.dtype.ID() == arrow.RUN_END_ENCODED, "invalid type for RunLengthEncoded")
- if !data.dtype.(*arrow.RunEndEncodedType).ValidRunEndsType(data.childData[0].DataType()) {
- panic(fmt.Errorf("%w: arrow/array: run ends array must be int16, int32, or int64", arrow.ErrInvalid))
- }
- if data.childData[0].NullN() > 0 {
- panic(fmt.Errorf("%w: arrow/array: run ends array cannot contain nulls", arrow.ErrInvalid))
- }
-
- r.array.setData(data)
-
- r.ends = MakeFromData(r.data.childData[0])
- r.values = MakeFromData(r.data.childData[1])
-}
-
-func (r *RunEndEncoded) GetPhysicalOffset() int {
- return encoded.FindPhysicalOffset(r.data)
-}
-
-func (r *RunEndEncoded) GetPhysicalLength() int {
- return encoded.GetPhysicalLength(r.data)
-}
-
-// GetPhysicalIndex can be used to get the run-encoded value instead of costly LogicalValuesArray
-// in the following way:
-//
-// r.Values().(valuetype).Value(r.GetPhysicalIndex(i))
-func (r *RunEndEncoded) GetPhysicalIndex(i int) int {
- return encoded.FindPhysicalIndex(r.data, i+r.data.offset)
-}
-
-// ValueStr will return the str representation of the value at the logical offset i.
-func (r *RunEndEncoded) ValueStr(i int) string {
- return r.values.ValueStr(r.GetPhysicalIndex(i))
-}
-
-func (r *RunEndEncoded) String() string {
- var buf bytes.Buffer
- buf.WriteByte('[')
- for i := 0; i < r.ends.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
-
- value := r.values.GetOneForMarshal(i)
- if byts, ok := value.(json.RawMessage); ok {
- value = string(byts)
- }
- fmt.Fprintf(&buf, "{%d -> %v}", r.ends.GetOneForMarshal(i), value)
- }
-
- buf.WriteByte(']')
- return buf.String()
-}
-
-func (r *RunEndEncoded) GetOneForMarshal(i int) interface{} {
- return r.values.GetOneForMarshal(r.GetPhysicalIndex(i))
-}
-
-func (r *RunEndEncoded) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
- buf.WriteByte('[')
- for i := 0; i < r.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(r.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayRunEndEncodedEqual(l, r *RunEndEncoded) bool {
- // types were already checked before getting here, so we know
- // the encoded types are equal
- mr := encoded.NewMergedRuns([2]arrow.Array{l, r})
- for mr.Next() {
- lIndex := mr.IndexIntoArray(0)
- rIndex := mr.IndexIntoArray(1)
- if !SliceEqual(l.values, lIndex, lIndex+1, r.values, rIndex, rIndex+1) {
- return false
- }
- }
- return true
-}
-
-func arrayRunEndEncodedApproxEqual(l, r *RunEndEncoded, opt equalOption) bool {
- // types were already checked before getting here, so we know
- // the encoded types are equal
- mr := encoded.NewMergedRuns([2]arrow.Array{l, r})
- for mr.Next() {
- lIndex := mr.IndexIntoArray(0)
- rIndex := mr.IndexIntoArray(1)
- if !sliceApproxEqual(l.values, lIndex, lIndex+1, r.values, rIndex, rIndex+1, opt) {
- return false
- }
- }
- return true
-}
-
-type RunEndEncodedBuilder struct {
- builder
-
- dt arrow.DataType
- runEnds Builder
- values Builder
- maxRunEnd uint64
-
- // currently, mixing AppendValueFromString & UnmarshalOne is unsupported
- lastUnmarshalled interface{}
- unmarshalled bool // tracks if Unmarshal was called (in case lastUnmarshalled is nil)
- lastStr *string
-}
-
-func NewRunEndEncodedBuilder(mem memory.Allocator, runEnds, encoded arrow.DataType) *RunEndEncodedBuilder {
- dt := arrow.RunEndEncodedOf(runEnds, encoded)
- if !dt.ValidRunEndsType(runEnds) {
- panic("arrow/ree: invalid runEnds type for run length encoded array")
- }
-
- var maxEnd uint64
- switch runEnds.ID() {
- case arrow.INT16:
- maxEnd = math.MaxInt16
- case arrow.INT32:
- maxEnd = math.MaxInt32
- case arrow.INT64:
- maxEnd = math.MaxInt64
- }
- return &RunEndEncodedBuilder{
- builder: builder{refCount: 1, mem: mem},
- dt: dt,
- runEnds: NewBuilder(mem, runEnds),
- values: NewBuilder(mem, encoded),
- maxRunEnd: maxEnd,
- lastUnmarshalled: nil,
- }
-}
-
-func (b *RunEndEncodedBuilder) Type() arrow.DataType {
- return b.dt
-}
-
-func (b *RunEndEncodedBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- b.values.Release()
- b.runEnds.Release()
- }
-}
-
-func (b *RunEndEncodedBuilder) addLength(n uint64) {
- if uint64(b.length)+n > b.maxRunEnd {
- panic(fmt.Errorf("%w: %s array length must fit be less than %d", arrow.ErrInvalid, b.dt, b.maxRunEnd))
- }
-
- b.length += int(n)
-}
-
-func (b *RunEndEncodedBuilder) finishRun() {
- b.lastUnmarshalled = nil
- b.lastStr = nil
- b.unmarshalled = false
- if b.length == 0 {
- return
- }
-
- switch bldr := b.runEnds.(type) {
- case *Int16Builder:
- bldr.Append(int16(b.length))
- case *Int32Builder:
- bldr.Append(int32(b.length))
- case *Int64Builder:
- bldr.Append(int64(b.length))
- }
-}
-
-func (b *RunEndEncodedBuilder) ValueBuilder() Builder { return b.values }
-
-func (b *RunEndEncodedBuilder) Append(n uint64) {
- b.finishRun()
- b.addLength(n)
-}
-
-func (b *RunEndEncodedBuilder) AppendRuns(runs []uint64) {
- for _, r := range runs {
- b.finishRun()
- b.addLength(r)
- }
-}
-
-func (b *RunEndEncodedBuilder) ContinueRun(n uint64) {
- b.addLength(n)
-}
-
-func (b *RunEndEncodedBuilder) AppendNull() {
- b.finishRun()
- b.values.AppendNull()
- b.addLength(1)
-}
-
-func (b *RunEndEncodedBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *RunEndEncodedBuilder) NullN() int {
- return UnknownNullCount
-}
-
-func (b *RunEndEncodedBuilder) AppendEmptyValue() {
- b.AppendNull()
-}
-
-func (b *RunEndEncodedBuilder) AppendEmptyValues(n int) {
- b.AppendNulls(n)
-}
-
-func (b *RunEndEncodedBuilder) Reserve(n int) {
- b.values.Reserve(n)
- b.runEnds.Reserve(n)
-}
-
-func (b *RunEndEncodedBuilder) Resize(n int) {
- b.values.Resize(n)
- b.runEnds.Resize(n)
-}
-
-func (b *RunEndEncodedBuilder) NewRunEndEncodedArray() *RunEndEncoded {
- data := b.newData()
- defer data.Release()
- return NewRunEndEncodedData(data)
-}
-
-func (b *RunEndEncodedBuilder) NewArray() arrow.Array {
- return b.NewRunEndEncodedArray()
-}
-
-func (b *RunEndEncodedBuilder) newData() (data *Data) {
- b.finishRun()
- values := b.values.NewArray()
- defer values.Release()
- runEnds := b.runEnds.NewArray()
- defer runEnds.Release()
-
- data = NewData(
- b.dt, b.length, []*memory.Buffer{},
- []arrow.ArrayData{runEnds.Data(), values.Data()}, 0, 0)
- b.reset()
- return
-}
-
-// AppendValueFromString can't be used in conjunction with UnmarshalOne
-func (b *RunEndEncodedBuilder) AppendValueFromString(s string) error {
- // we don't support mixing AppendValueFromString & UnmarshalOne
- if b.unmarshalled {
- return fmt.Errorf("%w: mixing AppendValueFromString & UnmarshalOne not yet implemented", arrow.ErrNotImplemented)
- }
-
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- if b.lastStr != nil && s == *b.lastStr {
- b.ContinueRun(1)
- return nil
- }
-
- b.Append(1)
- lastStr := s
- b.lastStr = &lastStr
- return b.ValueBuilder().AppendValueFromString(s)
-}
-
-// UnmarshalOne can't be used in conjunction with AppendValueFromString
-func (b *RunEndEncodedBuilder) UnmarshalOne(dec *json.Decoder) error {
- // we don't support mixing AppendValueFromString & UnmarshalOne
- if b.lastStr != nil {
- return fmt.Errorf("%w: mixing AppendValueFromString & UnmarshalOne not yet implemented", arrow.ErrNotImplemented)
- }
-
- var value interface{}
- if err := dec.Decode(&value); err != nil {
- return err
- }
-
- // if we unmarshalled the same value as the previous one, we want to
- // continue the run. However, there's an edge case. At the start of
- // unmarshalling, lastUnmarshalled will be nil, but we might get
- // nil as the first value we unmarshal. In that case we want to
- // make sure we add a new run instead. We can detect that case by
- // checking that the number of runEnds matches the number of values
- // we have, which means no matter what we have to start a new run
- if reflect.DeepEqual(value, b.lastUnmarshalled) && (value != nil || b.runEnds.Len() != b.values.Len()) {
- b.ContinueRun(1)
- return nil
- }
-
- data, err := json.Marshal(value)
- if err != nil {
- return err
- }
-
- b.Append(1)
- b.lastUnmarshalled = value
- b.unmarshalled = true
- return b.ValueBuilder().UnmarshalOne(json.NewDecoder(bytes.NewReader(data)))
-}
-
-// Unmarshal can't be used in conjunction with AppendValueFromString (as it calls UnmarshalOne)
-func (b *RunEndEncodedBuilder) Unmarshal(dec *json.Decoder) error {
- b.finishRun()
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON can't be used in conjunction with AppendValueFromString (as it calls UnmarshalOne)
-func (b *RunEndEncodedBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("list builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*RunEndEncoded)(nil)
- _ Builder = (*RunEndEncodedBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/extension.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/extension.go
deleted file mode 100644
index 021b8e7bc..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/extension.go
+++ /dev/null
@@ -1,244 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "reflect"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// ExtensionArray is the interface that needs to be implemented to handle
-// user-defined extension type arrays. In order to ensure consistency and
-// proper behavior, all ExtensionArray types must embed ExtensionArrayBase
-// in order to meet the interface which provides the default implementation
-// and handling for the array while allowing custom behavior to be built
-// on top of it.
-type ExtensionArray interface {
- arrow.Array
- // ExtensionType returns the datatype as per calling DataType(), but
- // already cast to ExtensionType
- ExtensionType() arrow.ExtensionType
- // Storage returns the underlying storage array for this array.
- Storage() arrow.Array
- // by having a non-exported function in the interface, it means that
- // consumers must embed ExtensionArrayBase in their structs in order
- // to fulfill this interface.
- mustEmbedExtensionArrayBase()
-}
-
-// two extension arrays are equal if their data types are equal and
-// their underlying storage arrays are equal.
-func arrayEqualExtension(l, r ExtensionArray) bool {
- if !arrow.TypeEqual(l.DataType(), r.DataType()) {
- return false
- }
-
- return Equal(l.Storage(), r.Storage())
-}
-
-// two extension arrays are approximately equal if their data types are
-// equal and their underlying storage arrays are approximately equal.
-func arrayApproxEqualExtension(l, r ExtensionArray, opt equalOption) bool {
- if !arrow.TypeEqual(l.DataType(), r.DataType()) {
- return false
- }
-
- return arrayApproxEqual(l.Storage(), r.Storage(), opt)
-}
-
-// NewExtensionArrayWithStorage constructs a new ExtensionArray from the provided
-// ExtensionType and uses the provided storage interface as the underlying storage.
-// This will not release the storage array passed in so consumers should call Release
-// on it manually while the new Extension array will share references to the underlying
-// Data buffers.
-func NewExtensionArrayWithStorage(dt arrow.ExtensionType, storage arrow.Array) arrow.Array {
- if !arrow.TypeEqual(dt.StorageType(), storage.DataType()) {
- panic(fmt.Errorf("arrow/array: storage type %s for extension type %s, does not match expected type %s", storage.DataType(), dt.ExtensionName(), dt.StorageType()))
- }
-
- storageData := storage.Data().(*Data)
- // create a new data instance with the ExtensionType as the datatype but referencing the
- // same underlying buffers to share them with the storage array.
- data := NewData(dt, storageData.length, storageData.buffers, storageData.childData, storageData.nulls, storageData.offset)
- defer data.Release()
- return NewExtensionData(data)
-}
-
-// NewExtensionData expects a data with a datatype of arrow.ExtensionType and
-// underlying data built for the storage array.
-func NewExtensionData(data arrow.ArrayData) ExtensionArray {
- base := ExtensionArrayBase{}
- base.refCount = 1
- base.setData(data.(*Data))
-
- // use the ExtensionType's ArrayType to construct the correctly typed object
- // to use as the ExtensionArray interface. reflect.New returns a pointer to
- // the newly created object.
- arr := reflect.New(base.ExtensionType().ArrayType())
- // set the embedded ExtensionArrayBase to the value we created above. We know
- // that this field will exist because the interface requires embedding ExtensionArrayBase
- // so we don't have to separately check, this will panic if called on an ArrayType
- // that doesn't embed ExtensionArrayBase which is what we want.
- arr.Elem().FieldByName("ExtensionArrayBase").Set(reflect.ValueOf(base))
- return arr.Interface().(ExtensionArray)
-}
-
-// ExtensionArrayBase is the base struct for user-defined Extension Array types
-// and must be embedded in any user-defined extension arrays like so:
-//
-// type UserDefinedArray struct {
-// array.ExtensionArrayBase
-// }
-type ExtensionArrayBase struct {
- array
- storage arrow.Array
-}
-
-func (e *ExtensionArrayBase) String() string {
- return fmt.Sprintf("(%s)%s", e.data.dtype, e.storage)
-}
-
-func (e *ExtensionArrayBase) GetOneForMarshal(i int) interface{} {
- return e.storage.GetOneForMarshal(i)
-}
-
-func (e *ExtensionArrayBase) MarshalJSON() ([]byte, error) {
- return json.Marshal(e.storage)
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (e *ExtensionArrayBase) Retain() {
- e.array.Retain()
- e.storage.Retain()
-}
-
-// Release decreases the reference count by 1.
-// Release may be called simultaneously from multiple goroutines.
-// When the reference count goes to zero, the memory is freed.
-func (e *ExtensionArrayBase) Release() {
- e.array.Release()
- e.storage.Release()
-}
-
-// Storage returns the underlying storage array
-func (e *ExtensionArrayBase) Storage() arrow.Array { return e.storage }
-
-// ExtensionType returns the same thing as DataType, just already casted
-// to an ExtensionType interface for convenience.
-func (e *ExtensionArrayBase) ExtensionType() arrow.ExtensionType {
- return e.DataType().(arrow.ExtensionType)
-}
-
-func (e *ExtensionArrayBase) setData(data *Data) {
- if data.DataType().ID() != arrow.EXTENSION {
- panic("arrow/array: must use extension type to construct an extension array")
- }
- extType, ok := data.dtype.(arrow.ExtensionType)
- if !ok {
- panic("arrow/array: DataType for ExtensionArray must implement arrow.ExtensionType")
- }
-
- e.array.setData(data)
- // our underlying storage needs to reference the same data buffers (no copying)
- // but should have the storage type's datatype, so we create a Data for it.
- storageData := NewData(extType.StorageType(), data.length, data.buffers, data.childData, data.nulls, data.offset)
- storageData.SetDictionary(data.dictionary)
- defer storageData.Release()
- e.storage = MakeFromData(storageData)
-}
-
-// ValueStr returns the value at index i as a string.
-// This needs to be implemented by the extension array type.
-func (e *ExtensionArrayBase) ValueStr(i int) string {
- panic("arrow/array: ValueStr wasn't implemented by this extension array type")
-}
-
-// no-op function that exists simply to force embedding this in any extension array types.
-func (ExtensionArrayBase) mustEmbedExtensionArrayBase() {}
-
-// ExtensionBuilder is a convenience builder so that NewBuilder and such will still work
-// with extension types properly. Depending on preference it may be cleaner or easier to just use
-// NewExtensionArrayWithStorage and pass a storage array.
-//
-// That said, this allows easily building an extension array by providing the extension
-// type and retrieving the storage builder.
-type ExtensionBuilder struct {
- Builder
- dt arrow.ExtensionType
-}
-
-// NewExtensionBuilder returns a builder using the provided memory allocator for the desired
-// extension type. It will internally construct a builder of the storage type for the extension
-// type and keep a copy of the extension type. The underlying type builder can then be retrieved
-// by calling `StorageBuilder` on this and then type asserting it to the desired builder type.
-//
-// After using the storage builder, calling NewArray or NewExtensionArray will construct
-// the appropriate extension array type and set the storage correctly, resetting the builder for
-// reuse.
-//
-// # Example
-//
-// Simple example assuming an extension type of a UUID defined as a FixedSizeBinary(16) was registered
-// using the type name "uuid":
-//
-// uuidType := arrow.GetExtensionType("uuid")
-// bldr := array.NewExtensionBuilder(memory.DefaultAllocator, uuidType)
-// defer bldr.Release()
-// uuidBldr := bldr.StorageBuilder().(*array.FixedSizeBinaryBuilder)
-// /* build up the fixed size binary array as usual via Append/AppendValues */
-// uuidArr := bldr.NewExtensionArray()
-// defer uuidArr.Release()
-//
-// Because the storage builder is embedded in the Extension builder it also means
-// that any of the functions available on the Builder interface can be called on
-// an instance of ExtensionBuilder and will respond appropriately as the storage
-// builder would for generically grabbing the Lenth, Cap, Nulls, reserving, etc.
-func NewExtensionBuilder(mem memory.Allocator, dt arrow.ExtensionType) *ExtensionBuilder {
- return &ExtensionBuilder{Builder: NewBuilder(mem, dt.StorageType()), dt: dt}
-}
-
-func (b *ExtensionBuilder) Type() arrow.DataType { return b.dt }
-
-// StorageBuilder returns the builder for the underlying storage type.
-func (b *ExtensionBuilder) StorageBuilder() Builder { return b.Builder }
-
-// NewArray creates a new array from the memory buffers used by the builder
-// and resets the builder so it can be used to build a new array.
-func (b *ExtensionBuilder) NewArray() arrow.Array {
- return b.NewExtensionArray()
-}
-
-// NewExtensionArray creates an Extension array from the memory buffers used
-// by the builder and resets the ExtensionBuilder so it can be used to build
-// a new ExtensionArray of the same type.
-func (b *ExtensionBuilder) NewExtensionArray() ExtensionArray {
- storage := b.Builder.NewArray()
- defer storage.Release()
-
- storage.Data().(*Data).dtype = b.dt
- return NewExtensionData(storage.Data())
-}
-
-var (
- _ arrow.Array = (ExtensionArray)(nil)
- _ Builder = (*ExtensionBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/extension_builder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/extension_builder.go
deleted file mode 100644
index a71287faf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/extension_builder.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-// ExtensionBuilderWrapper is an interface that you need to implement in your custom extension type if you want to provide a customer builder as well.
-// See example in ./arrow/internal/testing/types/extension_types.go
-type ExtensionBuilderWrapper interface {
- NewBuilder(bldr *ExtensionBuilder) Builder
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixed_size_list.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/fixed_size_list.go
deleted file mode 100644
index 5923d6859..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixed_size_list.go
+++ /dev/null
@@ -1,372 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// FixedSizeList represents an immutable sequence of N array values.
-type FixedSizeList struct {
- array
- n int32
- values arrow.Array
-}
-
-var _ ListLike = (*FixedSizeList)(nil)
-
-// NewFixedSizeListData returns a new List array value, from data.
-func NewFixedSizeListData(data arrow.ArrayData) *FixedSizeList {
- a := &FixedSizeList{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *FixedSizeList) ListValues() arrow.Array { return a.values }
-
-func (a *FixedSizeList) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return string(a.GetOneForMarshal(i).(json.RawMessage))
-}
-func (a *FixedSizeList) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- if !a.IsValid(i) {
- o.WriteString(NullValueStr)
- continue
- }
- sub := a.newListValue(i)
- fmt.Fprintf(o, "%v", sub)
- sub.Release()
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *FixedSizeList) newListValue(i int) arrow.Array {
- beg, end := a.ValueOffsets(i)
- return NewSlice(a.values, beg, end)
-}
-
-func (a *FixedSizeList) setData(data *Data) {
- a.array.setData(data)
- a.n = a.DataType().(*arrow.FixedSizeListType).Len()
- a.values = MakeFromData(data.childData[0])
-}
-
-func arrayEqualFixedSizeList(left, right *FixedSizeList) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return Equal(l, r)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-// Len returns the number of elements in the array.
-func (a *FixedSizeList) Len() int { return a.array.Len() }
-
-func (a *FixedSizeList) ValueOffsets(i int) (start, end int64) {
- n := int64(a.n)
- off := int64(a.array.data.offset)
- start, end = (off+int64(i))*n, (off+int64(i+1))*n
- return
-}
-
-func (a *FixedSizeList) Retain() {
- a.array.Retain()
- a.values.Retain()
-}
-
-func (a *FixedSizeList) Release() {
- a.array.Release()
- a.values.Release()
-}
-
-func (a *FixedSizeList) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- slice := a.newListValue(i)
- defer slice.Release()
- v, err := json.Marshal(slice)
- if err != nil {
- panic(err)
- }
-
- return json.RawMessage(v)
-}
-
-func (a *FixedSizeList) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if a.IsNull(i) {
- enc.Encode(nil)
- continue
- }
-
- slice := a.newListValue(i)
- if err := enc.Encode(slice); err != nil {
- return nil, err
- }
- slice.Release()
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-type FixedSizeListBuilder struct {
- builder
-
- etype arrow.DataType // data type of the list's elements.
- n int32 // number of elements in the fixed-size list.
- values Builder // value builder for the list's elements.
-}
-
-// NewFixedSizeListBuilder returns a builder, using the provided memory allocator.
-// The created list builder will create a list whose elements will be of type etype.
-func NewFixedSizeListBuilder(mem memory.Allocator, n int32, etype arrow.DataType) *FixedSizeListBuilder {
- return &FixedSizeListBuilder{
- builder: builder{refCount: 1, mem: mem},
- etype: etype,
- n: n,
- values: NewBuilder(mem, etype),
- }
-}
-
-func (b *FixedSizeListBuilder) Type() arrow.DataType { return arrow.FixedSizeListOf(b.n, b.etype) }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *FixedSizeListBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.values != nil {
- b.values.Release()
- b.values = nil
- }
- }
-}
-
-func (b *FixedSizeListBuilder) Append(v bool) {
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(v)
-}
-
-// AppendNull will append null values to the underlying values by itself
-func (b *FixedSizeListBuilder) AppendNull() {
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(false)
- // require to append this due to value indexes
- for i := int32(0); i < b.n; i++ {
- b.values.AppendNull()
- }
-}
-
-// AppendNulls will append n null values to the underlying values by itself
-func (b *FixedSizeListBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *FixedSizeListBuilder) AppendEmptyValue() {
- b.Append(true)
- for i := int32(0); i < b.n; i++ {
- b.values.AppendEmptyValue()
- }
-}
-
-func (b *FixedSizeListBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *FixedSizeListBuilder) AppendValues(valid []bool) {
- b.Reserve(len(valid))
- b.builder.unsafeAppendBoolsToBitmap(valid, len(valid))
-}
-
-func (b *FixedSizeListBuilder) unsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-func (b *FixedSizeListBuilder) init(capacity int) {
- b.builder.init(capacity)
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *FixedSizeListBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *FixedSizeListBuilder) Resize(n int) {
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(n, b.builder.init)
- }
-}
-
-func (b *FixedSizeListBuilder) ValueBuilder() Builder {
- return b.values
-}
-
-// NewArray creates a List array from the memory buffers used by the builder and resets the FixedSizeListBuilder
-// so it can be used to build a new array.
-func (b *FixedSizeListBuilder) NewArray() arrow.Array {
- return b.NewListArray()
-}
-
-// NewListArray creates a List array from the memory buffers used by the builder and resets the FixedSizeListBuilder
-// so it can be used to build a new array.
-func (b *FixedSizeListBuilder) NewListArray() (a *FixedSizeList) {
- data := b.newData()
- a = NewFixedSizeListData(data)
- data.Release()
- return
-}
-
-func (b *FixedSizeListBuilder) newData() (data *Data) {
- values := b.values.NewArray()
- defer values.Release()
-
- data = NewData(
- arrow.FixedSizeListOf(b.n, b.etype), b.length,
- []*memory.Buffer{b.nullBitmap},
- []arrow.ArrayData{values.Data()},
- b.nulls,
- 0,
- )
- b.reset()
-
- return
-}
-
-func (b *FixedSizeListBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- dec := json.NewDecoder(strings.NewReader(s))
- return b.UnmarshalOne(dec)
-}
-
-func (b *FixedSizeListBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('['):
- b.Append(true)
- if err := b.values.Unmarshal(dec); err != nil {
- return err
- }
- // consume ']'
- _, err := dec.Token()
- return err
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Struct: arrow.FixedSizeListOf(b.n, b.etype).String(),
- }
- }
-
- return nil
-}
-
-func (b *FixedSizeListBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *FixedSizeListBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("fixed size list builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*FixedSizeList)(nil)
- _ Builder = (*FixedSizeListBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binary.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binary.go
deleted file mode 100644
index 6cdaeace9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binary.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A type which represents an immutable sequence of fixed-length binary strings.
-type FixedSizeBinary struct {
- array
-
- valueBytes []byte
- bytewidth int32
-}
-
-// NewFixedSizeBinaryData constructs a new fixed-size binary array from data.
-func NewFixedSizeBinaryData(data arrow.ArrayData) *FixedSizeBinary {
- a := &FixedSizeBinary{bytewidth: int32(data.DataType().(arrow.FixedWidthDataType).BitWidth() / 8)}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Value returns the fixed-size slice at index i. This value should not be mutated.
-func (a *FixedSizeBinary) Value(i int) []byte {
- i += a.array.data.offset
- var (
- bw = int(a.bytewidth)
- beg = i * bw
- end = (i + 1) * bw
- )
- return a.valueBytes[beg:end]
-}
-func (a *FixedSizeBinary) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return base64.StdEncoding.EncodeToString(a.Value(i))
-}
-
-func (a *FixedSizeBinary) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%q", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *FixedSizeBinary) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.valueBytes = vals.Bytes()
- }
-
-}
-
-func (a *FixedSizeBinary) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.Value(i)
-}
-
-func (a *FixedSizeBinary) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.Value(i)
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualFixedSizeBinary(left, right *FixedSizeBinary) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !bytes.Equal(left.Value(i), right.Value(i)) {
- return false
- }
- }
- return true
-}
-
-var (
- _ arrow.Array = (*FixedSizeBinary)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binarybuilder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binarybuilder.go
deleted file mode 100644
index 230a65fd2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/fixedsize_binarybuilder.go
+++ /dev/null
@@ -1,261 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "encoding/base64"
- "fmt"
- "reflect"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A FixedSizeBinaryBuilder is used to build a FixedSizeBinary array using the Append methods.
-type FixedSizeBinaryBuilder struct {
- builder
-
- dtype *arrow.FixedSizeBinaryType
- values *byteBufferBuilder
-}
-
-func NewFixedSizeBinaryBuilder(mem memory.Allocator, dtype *arrow.FixedSizeBinaryType) *FixedSizeBinaryBuilder {
- b := &FixedSizeBinaryBuilder{
- builder: builder{refCount: 1, mem: mem},
- dtype: dtype,
- values: newByteBufferBuilder(mem),
- }
- return b
-}
-
-func (b *FixedSizeBinaryBuilder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (b *FixedSizeBinaryBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.values != nil {
- b.values.Release()
- b.values = nil
- }
- }
-}
-
-func (b *FixedSizeBinaryBuilder) Append(v []byte) {
- if len(v) != b.dtype.ByteWidth {
- // TODO(alexandre): should we return an error instead?
- panic("len(v) != b.dtype.ByteWidth")
- }
-
- b.Reserve(1)
- b.values.Append(v)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *FixedSizeBinaryBuilder) AppendNull() {
- b.Reserve(1)
- b.values.Advance(b.dtype.ByteWidth)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *FixedSizeBinaryBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *FixedSizeBinaryBuilder) AppendEmptyValue() {
- b.Reserve(1)
- b.values.Advance(b.dtype.ByteWidth)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-func (b *FixedSizeBinaryBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *FixedSizeBinaryBuilder) UnsafeAppend(v []byte) {
- b.values.unsafeAppend(v)
- b.UnsafeAppendBoolToBitmap(true)
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *FixedSizeBinaryBuilder) AppendValues(v [][]byte, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- for _, vv := range v {
- switch len(vv) {
- case 0:
- b.values.Advance(b.dtype.ByteWidth)
- case b.dtype.ByteWidth:
- b.values.Append(vv)
- default:
- panic(fmt.Errorf("array: invalid binary length (got=%d, want=%d)", len(vv), b.dtype.ByteWidth))
- }
- }
-
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *FixedSizeBinaryBuilder) init(capacity int) {
- b.builder.init(capacity)
- b.values.resize(capacity * b.dtype.ByteWidth)
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *FixedSizeBinaryBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *FixedSizeBinaryBuilder) Resize(n int) {
- b.builder.resize(n, b.init)
-}
-
-// NewArray creates a FixedSizeBinary array from the memory buffers used by the
-// builder and resets the FixedSizeBinaryBuilder so it can be used to build a new array.
-func (b *FixedSizeBinaryBuilder) NewArray() arrow.Array {
- return b.NewFixedSizeBinaryArray()
-}
-
-// NewFixedSizeBinaryArray creates a FixedSizeBinary array from the memory buffers used by the builder and resets the FixedSizeBinaryBuilder
-// so it can be used to build a new array.
-func (b *FixedSizeBinaryBuilder) NewFixedSizeBinaryArray() (a *FixedSizeBinary) {
- data := b.newData()
- a = NewFixedSizeBinaryData(data)
- data.Release()
- return
-}
-
-func (b *FixedSizeBinaryBuilder) newData() (data *Data) {
- values := b.values.Finish()
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, values}, nil, b.nulls, 0)
-
- if values != nil {
- values.Release()
- }
-
- b.builder.reset()
-
- return
-}
-
-func (b *FixedSizeBinaryBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- data, err := base64.StdEncoding.DecodeString(s)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(data)
- return nil
-}
-
-func (b *FixedSizeBinaryBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- var val []byte
- switch v := t.(type) {
- case string:
- data, err := base64.StdEncoding.DecodeString(v)
- if err != nil {
- return err
- }
- val = data
- case []byte:
- val = v
- case nil:
- b.AppendNull()
- return nil
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf([]byte{}),
- Offset: dec.InputOffset(),
- Struct: fmt.Sprintf("FixedSizeBinary[%d]", b.dtype.ByteWidth),
- }
- }
-
- if len(val) != b.dtype.ByteWidth {
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(val),
- Type: reflect.TypeOf([]byte{}),
- Offset: dec.InputOffset(),
- Struct: fmt.Sprintf("FixedSizeBinary[%d]", b.dtype.ByteWidth),
- }
- }
- b.Append(val)
- return nil
-}
-
-func (b *FixedSizeBinaryBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *FixedSizeBinaryBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("fixed size binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ Builder = (*FixedSizeBinaryBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/float16.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/float16.go
deleted file mode 100644
index 4260f8e37..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/float16.go
+++ /dev/null
@@ -1,113 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/float16"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A type which represents an immutable sequence of Float16 values.
-type Float16 struct {
- array
- values []float16.Num
-}
-
-func NewFloat16Data(data arrow.ArrayData) *Float16 {
- a := &Float16{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Float16) Value(i int) float16.Num { return a.values[i] }
-func (a *Float16) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.Value(i).String()
-}
-
-func (a *Float16) Values() []float16.Num { return a.values }
-
-func (a *Float16) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", a.values[i].Float32())
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Float16) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Float16Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Float16) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.values[i].Float32()
- }
- return nil
-}
-
-func (a *Float16) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i, v := range a.values {
- if a.IsValid(i) {
- vals[i] = v.Float32()
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualFloat16(left, right *Float16) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-var (
- _ arrow.Array = (*Float16)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/float16_builder.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/float16_builder.go
deleted file mode 100644
index 033b9fa2d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/float16_builder.go
+++ /dev/null
@@ -1,263 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strconv"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/float16"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type Float16Builder struct {
- builder
-
- data *memory.Buffer
- rawData []float16.Num
-}
-
-func NewFloat16Builder(mem memory.Allocator) *Float16Builder {
- return &Float16Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Float16Builder) Type() arrow.DataType { return arrow.FixedWidthTypes.Float16 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Float16Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Float16Builder) Append(v float16.Num) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Float16Builder) UnsafeAppend(v float16.Num) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Float16Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Float16Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Float16Builder) AppendEmptyValue() {
- b.Reserve(1)
- b.UnsafeAppend(float16.Num{})
-}
-
-func (b *Float16Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Float16Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Float16Builder) AppendValues(v []float16.Num, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- if len(v) > 0 {
- arrow.Float16Traits.Copy(b.rawData[b.length:], v)
- }
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Float16Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Uint16Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Float16Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Float16Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Float16Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Float16Traits.BytesRequired(n))
- b.rawData = arrow.Float16Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a Float16 array from the memory buffers used by the builder and resets the Float16Builder
-// so it can be used to build a new array.
-func (b *Float16Builder) NewArray() arrow.Array {
- return b.NewFloat16Array()
-}
-
-// NewFloat16Array creates a Float16 array from the memory buffers used by the builder and resets the Float16Builder
-// so it can be used to build a new array.
-func (b *Float16Builder) NewFloat16Array() (a *Float16) {
- data := b.newData()
- a = NewFloat16Data(data)
- data.Release()
- return
-}
-
-func (b *Float16Builder) newData() (data *Data) {
- bytesRequired := arrow.Float16Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.FixedWidthTypes.Float16, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Float16Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseFloat(s, 32)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(float16.New(float32(v)))
- return nil
-}
-
-func (b *Float16Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case float64:
- b.Append(float16.New(float32(v)))
- case string:
- f, err := strconv.ParseFloat(v, 32)
- if err != nil {
- return err
- }
- // this will currently silently truncate if it is too large
- b.Append(float16.New(float32(f)))
- case json.Number:
- f, err := v.Float64()
- if err != nil {
- return err
- }
- b.Append(float16.New(float32(f)))
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(float16.Num{}),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *Float16Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON will add values to this builder from unmarshalling the
-// array of values. Currently values that are larger than a float16 will
-// be silently truncated.
-func (b *Float16Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("float16 builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/interval.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/interval.go
deleted file mode 100644
index 2a5529f1c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/interval.go
+++ /dev/null
@@ -1,953 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "strconv"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-func NewIntervalData(data arrow.ArrayData) arrow.Array {
- switch data.DataType().(type) {
- case *arrow.MonthIntervalType:
- return NewMonthIntervalData(data.(*Data))
- case *arrow.DayTimeIntervalType:
- return NewDayTimeIntervalData(data.(*Data))
- case *arrow.MonthDayNanoIntervalType:
- return NewMonthDayNanoIntervalData(data.(*Data))
- default:
- panic(fmt.Errorf("arrow/array: unknown interval data type %T", data.DataType()))
- }
-}
-
-// A type which represents an immutable sequence of arrow.MonthInterval values.
-type MonthInterval struct {
- array
- values []arrow.MonthInterval
-}
-
-func NewMonthIntervalData(data arrow.ArrayData) *MonthInterval {
- a := &MonthInterval{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *MonthInterval) Value(i int) arrow.MonthInterval { return a.values[i] }
-func (a *MonthInterval) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return fmt.Sprintf("%v", a.Value(i))
-}
-func (a *MonthInterval) MonthIntervalValues() []arrow.MonthInterval { return a.values }
-
-func (a *MonthInterval) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *MonthInterval) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.MonthIntervalTraits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *MonthInterval) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.values[i]
- }
- return nil
-}
-
-// MarshalJSON will create a json array out of a MonthInterval array,
-// each value will be an object of the form {"months": #} where
-// # is the numeric value of that index
-func (a *MonthInterval) MarshalJSON() ([]byte, error) {
- if a.NullN() == 0 {
- return json.Marshal(a.values)
- }
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualMonthInterval(left, right *MonthInterval) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type MonthIntervalBuilder struct {
- builder
-
- data *memory.Buffer
- rawData []arrow.MonthInterval
-}
-
-func NewMonthIntervalBuilder(mem memory.Allocator) *MonthIntervalBuilder {
- return &MonthIntervalBuilder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *MonthIntervalBuilder) Type() arrow.DataType { return arrow.FixedWidthTypes.MonthInterval }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *MonthIntervalBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *MonthIntervalBuilder) Append(v arrow.MonthInterval) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *MonthIntervalBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *MonthIntervalBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *MonthIntervalBuilder) AppendEmptyValue() {
- b.Append(arrow.MonthInterval(0))
-}
-
-func (b *MonthIntervalBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *MonthIntervalBuilder) UnsafeAppend(v arrow.MonthInterval) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *MonthIntervalBuilder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *MonthIntervalBuilder) AppendValues(v []arrow.MonthInterval, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.MonthIntervalTraits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *MonthIntervalBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.MonthIntervalTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.MonthIntervalTraits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *MonthIntervalBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *MonthIntervalBuilder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.MonthIntervalTraits.BytesRequired(n))
- b.rawData = arrow.MonthIntervalTraits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a MonthInterval array from the memory buffers used by the builder and resets the MonthIntervalBuilder
-// so it can be used to build a new array.
-func (b *MonthIntervalBuilder) NewArray() arrow.Array {
- return b.NewMonthIntervalArray()
-}
-
-// NewMonthIntervalArray creates a MonthInterval array from the memory buffers used by the builder and resets the MonthIntervalBuilder
-// so it can be used to build a new array.
-func (b *MonthIntervalBuilder) NewMonthIntervalArray() (a *MonthInterval) {
- data := b.newData()
- a = NewMonthIntervalData(data)
- data.Release()
- return
-}
-
-func (b *MonthIntervalBuilder) newData() (data *Data) {
- bytesRequired := arrow.MonthIntervalTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.FixedWidthTypes.MonthInterval, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *MonthIntervalBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseInt(s, 10, 32)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(arrow.MonthInterval(v))
- return nil
-}
-
-func (b *MonthIntervalBuilder) UnmarshalOne(dec *json.Decoder) error {
- var v *arrow.MonthInterval
- if err := dec.Decode(&v); err != nil {
- return err
- }
-
- if v == nil {
- b.AppendNull()
- } else {
- b.Append(*v)
- }
- return nil
-}
-
-func (b *MonthIntervalBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON will add the unmarshalled values of an array to the builder,
-// values are expected to be strings of the form "#months" where # is the int32
-// value that will be added to the builder.
-func (b *MonthIntervalBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("month interval builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-// A type which represents an immutable sequence of arrow.DayTimeInterval values.
-type DayTimeInterval struct {
- array
- values []arrow.DayTimeInterval
-}
-
-func NewDayTimeIntervalData(data arrow.ArrayData) *DayTimeInterval {
- a := &DayTimeInterval{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *DayTimeInterval) Value(i int) arrow.DayTimeInterval { return a.values[i] }
-func (a *DayTimeInterval) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- data, err := json.Marshal(a.GetOneForMarshal(i))
- if err != nil {
- panic(err)
- }
- return string(data)
-}
-
-func (a *DayTimeInterval) DayTimeIntervalValues() []arrow.DayTimeInterval { return a.values }
-
-func (a *DayTimeInterval) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *DayTimeInterval) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.DayTimeIntervalTraits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *DayTimeInterval) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.values[i]
- }
- return nil
-}
-
-// MarshalJSON will marshal this array to JSON as an array of objects,
-// consisting of the form {"days": #, "milliseconds": #} for each element.
-func (a *DayTimeInterval) MarshalJSON() ([]byte, error) {
- if a.NullN() == 0 {
- return json.Marshal(a.values)
- }
- vals := make([]interface{}, a.Len())
- for i, v := range a.values {
- if a.IsValid(i) {
- vals[i] = v
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualDayTimeInterval(left, right *DayTimeInterval) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type DayTimeIntervalBuilder struct {
- builder
-
- data *memory.Buffer
- rawData []arrow.DayTimeInterval
-}
-
-func NewDayTimeIntervalBuilder(mem memory.Allocator) *DayTimeIntervalBuilder {
- return &DayTimeIntervalBuilder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *DayTimeIntervalBuilder) Type() arrow.DataType { return arrow.FixedWidthTypes.DayTimeInterval }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *DayTimeIntervalBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *DayTimeIntervalBuilder) Append(v arrow.DayTimeInterval) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *DayTimeIntervalBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *DayTimeIntervalBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *DayTimeIntervalBuilder) AppendEmptyValue() {
- b.Append(arrow.DayTimeInterval{})
-}
-
-func (b *DayTimeIntervalBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *DayTimeIntervalBuilder) UnsafeAppend(v arrow.DayTimeInterval) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *DayTimeIntervalBuilder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *DayTimeIntervalBuilder) AppendValues(v []arrow.DayTimeInterval, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.DayTimeIntervalTraits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *DayTimeIntervalBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.DayTimeIntervalTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.DayTimeIntervalTraits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *DayTimeIntervalBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *DayTimeIntervalBuilder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.DayTimeIntervalTraits.BytesRequired(n))
- b.rawData = arrow.DayTimeIntervalTraits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a DayTimeInterval array from the memory buffers used by the builder and resets the DayTimeIntervalBuilder
-// so it can be used to build a new array.
-func (b *DayTimeIntervalBuilder) NewArray() arrow.Array {
- return b.NewDayTimeIntervalArray()
-}
-
-// NewDayTimeIntervalArray creates a DayTimeInterval array from the memory buffers used by the builder and resets the DayTimeIntervalBuilder
-// so it can be used to build a new array.
-func (b *DayTimeIntervalBuilder) NewDayTimeIntervalArray() (a *DayTimeInterval) {
- data := b.newData()
- a = NewDayTimeIntervalData(data)
- data.Release()
- return
-}
-
-func (b *DayTimeIntervalBuilder) newData() (data *Data) {
- bytesRequired := arrow.DayTimeIntervalTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.FixedWidthTypes.DayTimeInterval, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *DayTimeIntervalBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- var v arrow.DayTimeInterval
- if err := json.Unmarshal([]byte(s), &v); err != nil {
- b.AppendNull()
- return err
- }
- b.Append(v)
- return nil
-}
-
-func (b *DayTimeIntervalBuilder) UnmarshalOne(dec *json.Decoder) error {
- var v *arrow.DayTimeInterval
- if err := dec.Decode(&v); err != nil {
- return err
- }
-
- if v == nil {
- b.AppendNull()
- } else {
- b.Append(*v)
- }
- return nil
-}
-
-func (b *DayTimeIntervalBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON will add the values unmarshalled from an array to the builder,
-// with the values expected to be objects of the form {"days": #, "milliseconds": #}
-func (b *DayTimeIntervalBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("day_time interval builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-// A type which represents an immutable sequence of arrow.DayTimeInterval values.
-type MonthDayNanoInterval struct {
- array
- values []arrow.MonthDayNanoInterval
-}
-
-func NewMonthDayNanoIntervalData(data arrow.ArrayData) *MonthDayNanoInterval {
- a := &MonthDayNanoInterval{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *MonthDayNanoInterval) Value(i int) arrow.MonthDayNanoInterval { return a.values[i] }
-func (a *MonthDayNanoInterval) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- data, err := json.Marshal(a.GetOneForMarshal(i))
- if err != nil {
- panic(err)
- }
- return string(data)
-}
-
-func (a *MonthDayNanoInterval) MonthDayNanoIntervalValues() []arrow.MonthDayNanoInterval {
- return a.values
-}
-
-func (a *MonthDayNanoInterval) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *MonthDayNanoInterval) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.MonthDayNanoIntervalTraits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *MonthDayNanoInterval) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.values[i]
- }
- return nil
-}
-
-// MarshalJSON will marshal this array to a JSON array with elements
-// marshalled to the form {"months": #, "days": #, "nanoseconds": #}
-func (a *MonthDayNanoInterval) MarshalJSON() ([]byte, error) {
- if a.NullN() == 0 {
- return json.Marshal(a.values)
- }
- vals := make([]interface{}, a.Len())
- for i, v := range a.values {
- if a.IsValid(i) {
- vals[i] = v
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualMonthDayNanoInterval(left, right *MonthDayNanoInterval) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type MonthDayNanoIntervalBuilder struct {
- builder
-
- data *memory.Buffer
- rawData []arrow.MonthDayNanoInterval
-}
-
-func NewMonthDayNanoIntervalBuilder(mem memory.Allocator) *MonthDayNanoIntervalBuilder {
- return &MonthDayNanoIntervalBuilder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *MonthDayNanoIntervalBuilder) Type() arrow.DataType {
- return arrow.FixedWidthTypes.MonthDayNanoInterval
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *MonthDayNanoIntervalBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *MonthDayNanoIntervalBuilder) Append(v arrow.MonthDayNanoInterval) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *MonthDayNanoIntervalBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *MonthDayNanoIntervalBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *MonthDayNanoIntervalBuilder) AppendEmptyValue() {
- b.Append(arrow.MonthDayNanoInterval{})
-}
-
-func (b *MonthDayNanoIntervalBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *MonthDayNanoIntervalBuilder) UnsafeAppend(v arrow.MonthDayNanoInterval) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *MonthDayNanoIntervalBuilder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *MonthDayNanoIntervalBuilder) AppendValues(v []arrow.MonthDayNanoInterval, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.MonthDayNanoIntervalTraits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *MonthDayNanoIntervalBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.MonthDayNanoIntervalTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.MonthDayNanoIntervalTraits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *MonthDayNanoIntervalBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *MonthDayNanoIntervalBuilder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.MonthDayNanoIntervalTraits.BytesRequired(n))
- b.rawData = arrow.MonthDayNanoIntervalTraits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a MonthDayNanoInterval array from the memory buffers used by the builder and resets the MonthDayNanoIntervalBuilder
-// so it can be used to build a new array.
-func (b *MonthDayNanoIntervalBuilder) NewArray() arrow.Array {
- return b.NewMonthDayNanoIntervalArray()
-}
-
-// NewMonthDayNanoIntervalArray creates a MonthDayNanoInterval array from the memory buffers used by the builder and resets the MonthDayNanoIntervalBuilder
-// so it can be used to build a new array.
-func (b *MonthDayNanoIntervalBuilder) NewMonthDayNanoIntervalArray() (a *MonthDayNanoInterval) {
- data := b.newData()
- a = NewMonthDayNanoIntervalData(data)
- data.Release()
- return
-}
-
-func (b *MonthDayNanoIntervalBuilder) newData() (data *Data) {
- bytesRequired := arrow.MonthDayNanoIntervalTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.FixedWidthTypes.MonthDayNanoInterval, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *MonthDayNanoIntervalBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- var v arrow.MonthDayNanoInterval
- if err := json.Unmarshal([]byte(s), &v); err != nil {
- return err
- }
- b.Append(v)
- return nil
-}
-
-func (b *MonthDayNanoIntervalBuilder) UnmarshalOne(dec *json.Decoder) error {
- var v *arrow.MonthDayNanoInterval
- if err := dec.Decode(&v); err != nil {
- return err
- }
-
- if v == nil {
- b.AppendNull()
- } else {
- b.Append(*v)
- }
- return nil
-}
-
-func (b *MonthDayNanoIntervalBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-// UnmarshalJSON unmarshals a JSON array of objects and adds them to this builder,
-// each element of the array is expected to be an object of the form
-// {"months": #, "days": #, "nanoseconds": #}
-func (b *MonthDayNanoIntervalBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("month_day_nano interval builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*MonthInterval)(nil)
- _ arrow.Array = (*DayTimeInterval)(nil)
- _ arrow.Array = (*MonthDayNanoInterval)(nil)
-
- _ Builder = (*MonthIntervalBuilder)(nil)
- _ Builder = (*DayTimeIntervalBuilder)(nil)
- _ Builder = (*MonthDayNanoIntervalBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/json_reader.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/json_reader.go
deleted file mode 100644
index 2f05d4b70..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/json_reader.go
+++ /dev/null
@@ -1,205 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "errors"
- "fmt"
- "io"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type Option func(config)
-type config interface{}
-
-// WithChunk sets the chunk size for reading in json records. The default is to
-// read in one row per record batch as a single object. If chunk size is set to
-// a negative value, then the entire file is read as a single record batch.
-// Otherwise a record batch is read in with chunk size rows per record batch until
-// it reaches EOF.
-func WithChunk(n int) Option {
- return func(cfg config) {
- switch cfg := cfg.(type) {
- case *JSONReader:
- cfg.chunk = n
- default:
- panic(fmt.Errorf("arrow/json): unknown config type %T", cfg))
- }
- }
-}
-
-// WithAllocator specifies the allocator to use for creating the record batches,
-// if it is not called, then memory.DefaultAllocator will be used.
-func WithAllocator(mem memory.Allocator) Option {
- return func(cfg config) {
- switch cfg := cfg.(type) {
- case *JSONReader:
- cfg.mem = mem
- default:
- panic(fmt.Errorf("arrow/json): unknown config type %T", cfg))
- }
- }
-}
-
-// JSONReader is a json reader that meets the RecordReader interface definition.
-//
-// To read in an array of objects as a record, you can use RecordFromJSON
-// which is equivalent to reading the json as a struct array whose fields are
-// the columns of the record. This primarily exists to fit the RecordReader
-// interface as a matching reader for the csv reader.
-type JSONReader struct {
- r *json.Decoder
- schema *arrow.Schema
-
- bldr *RecordBuilder
-
- refs int64
- cur arrow.Record
- err error
-
- chunk int
- done bool
-
- mem memory.Allocator
- next func() bool
-}
-
-// NewJSONReader returns a json RecordReader which expects to find one json object
-// per row of dataset. Using WithChunk can control how many rows are processed
-// per record, which is how many objects become a single record from the file.
-//
-// If it is desired to write out an array of rows, then simply use RecordToStructArray
-// and json.Marshal the struct array for the same effect.
-func NewJSONReader(r io.Reader, schema *arrow.Schema, opts ...Option) *JSONReader {
- rr := &JSONReader{
- r: json.NewDecoder(r),
- schema: schema,
- refs: 1,
- chunk: 1,
- }
- for _, o := range opts {
- o(rr)
- }
-
- if rr.mem == nil {
- rr.mem = memory.DefaultAllocator
- }
-
- rr.bldr = NewRecordBuilder(rr.mem, schema)
- switch {
- case rr.chunk < 0:
- rr.next = rr.nextall
- case rr.chunk > 1:
- rr.next = rr.nextn
- default:
- rr.next = rr.next1
- }
- return rr
-}
-
-// Err returns the last encountered error
-func (r *JSONReader) Err() error { return r.err }
-
-func (r *JSONReader) Schema() *arrow.Schema { return r.schema }
-
-// Record returns the last read in record. The returned record is only valid
-// until the next call to Next unless Retain is called on the record itself.
-func (r *JSONReader) Record() arrow.Record { return r.cur }
-
-func (r *JSONReader) Retain() {
- atomic.AddInt64(&r.refs, 1)
-}
-
-func (r *JSONReader) Release() {
- debug.Assert(atomic.LoadInt64(&r.refs) > 0, "too many releases")
-
- if atomic.AddInt64(&r.refs, -1) == 0 {
- if r.cur != nil {
- r.cur.Release()
- r.bldr.Release()
- r.r = nil
- }
- }
-}
-
-// Next returns true if it read in a record, which will be available via Record
-// and false if there is either an error or the end of the reader.
-func (r *JSONReader) Next() bool {
- if r.cur != nil {
- r.cur.Release()
- r.cur = nil
- }
-
- if r.err != nil || r.done {
- return false
- }
-
- return r.next()
-}
-
-func (r *JSONReader) readNext() bool {
- r.err = r.r.Decode(r.bldr)
- if r.err != nil {
- r.done = true
- if errors.Is(r.err, io.EOF) {
- r.err = nil
- }
- return false
- }
- return true
-}
-
-func (r *JSONReader) nextall() bool {
- for r.readNext() {
- }
-
- r.cur = r.bldr.NewRecord()
- return r.cur.NumRows() > 0
-}
-
-func (r *JSONReader) next1() bool {
- if !r.readNext() {
- return false
- }
-
- r.cur = r.bldr.NewRecord()
- return true
-}
-
-func (r *JSONReader) nextn() bool {
- var n = 0
-
- for i := 0; i < r.chunk && !r.done; i, n = i+1, n+1 {
- if !r.readNext() {
- break
- }
- }
-
- if n > 0 {
- r.cur = r.bldr.NewRecord()
- }
- return n > 0
-}
-
-var (
- _ RecordReader = (*JSONReader)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/list.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/list.go
deleted file mode 100644
index 9d959b5e4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/list.go
+++ /dev/null
@@ -1,1574 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type ListLike interface {
- arrow.Array
- ListValues() arrow.Array
- ValueOffsets(i int) (start, end int64)
-}
-
-type VarLenListLike interface {
- ListLike
-}
-
-// List represents an immutable sequence of array values.
-type List struct {
- array
- values arrow.Array
- offsets []int32
-}
-
-var _ ListLike = (*List)(nil)
-
-// NewListData returns a new List array value, from data.
-func NewListData(data arrow.ArrayData) *List {
- a := &List{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *List) ListValues() arrow.Array { return a.values }
-
-func (a *List) ValueStr(i int) string {
- if !a.IsValid(i) {
- return NullValueStr
- }
- return string(a.GetOneForMarshal(i).(json.RawMessage))
-}
-
-func (a *List) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- if a.IsNull(i) {
- o.WriteString(NullValueStr)
- continue
- }
- sub := a.newListValue(i)
- fmt.Fprintf(o, "%v", sub)
- sub.Release()
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *List) newListValue(i int) arrow.Array {
- beg, end := a.ValueOffsets(i)
- return NewSlice(a.values, beg, end)
-}
-
-func (a *List) setData(data *Data) {
- debug.Assert(len(data.buffers) >= 2, "list data should have 2 buffers")
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.offsets = arrow.Int32Traits.CastFromBytes(vals.Bytes())
- }
- a.values = MakeFromData(data.childData[0])
-}
-
-func (a *List) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- slice := a.newListValue(i)
- defer slice.Release()
- v, err := json.Marshal(slice)
- if err != nil {
- panic(err)
- }
- return json.RawMessage(v)
-}
-
-func (a *List) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayEqualList(left, right *List) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return Equal(l, r)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-// Len returns the number of elements in the array.
-func (a *List) Len() int { return a.array.Len() }
-
-func (a *List) Offsets() []int32 { return a.offsets }
-
-func (a *List) Retain() {
- a.array.Retain()
- a.values.Retain()
-}
-
-func (a *List) Release() {
- a.array.Release()
- a.values.Release()
-}
-
-func (a *List) ValueOffsets(i int) (start, end int64) {
- debug.Assert(i >= 0 && i < a.array.data.length, "index out of range")
- j := i + a.array.data.offset
- start, end = int64(a.offsets[j]), int64(a.offsets[j+1])
- return
-}
-
-// LargeList represents an immutable sequence of array values.
-type LargeList struct {
- array
- values arrow.Array
- offsets []int64
-}
-
-var _ ListLike = (*LargeList)(nil)
-
-// NewLargeListData returns a new LargeList array value, from data.
-func NewLargeListData(data arrow.ArrayData) *LargeList {
- a := new(LargeList)
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *LargeList) ListValues() arrow.Array { return a.values }
-
-func (a *LargeList) ValueStr(i int) string {
- if !a.IsValid(i) {
- return NullValueStr
- }
- return string(a.GetOneForMarshal(i).(json.RawMessage))
-}
-
-func (a *LargeList) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- if a.IsNull(i) {
- o.WriteString(NullValueStr)
- continue
- }
- sub := a.newListValue(i)
- fmt.Fprintf(o, "%v", sub)
- sub.Release()
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *LargeList) newListValue(i int) arrow.Array {
- beg, end := a.ValueOffsets(i)
- return NewSlice(a.values, beg, end)
-}
-
-func (a *LargeList) setData(data *Data) {
- debug.Assert(len(data.buffers) >= 2, "list data should have 2 buffers")
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.offsets = arrow.Int64Traits.CastFromBytes(vals.Bytes())
- }
- a.values = MakeFromData(data.childData[0])
-}
-
-func (a *LargeList) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- slice := a.newListValue(i)
- defer slice.Release()
- v, err := json.Marshal(slice)
- if err != nil {
- panic(err)
- }
- return json.RawMessage(v)
-}
-
-func (a *LargeList) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayEqualLargeList(left, right *LargeList) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return Equal(l, r)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-// Len returns the number of elements in the array.
-func (a *LargeList) Len() int { return a.array.Len() }
-
-func (a *LargeList) Offsets() []int64 { return a.offsets }
-
-func (a *LargeList) ValueOffsets(i int) (start, end int64) {
- debug.Assert(i >= 0 && i < a.array.data.length, "index out of range")
- j := i + a.array.data.offset
- start, end = a.offsets[j], a.offsets[j+1]
- return
-}
-
-func (a *LargeList) Retain() {
- a.array.Retain()
- a.values.Retain()
-}
-
-func (a *LargeList) Release() {
- a.array.Release()
- a.values.Release()
-}
-
-type baseListBuilder struct {
- builder
-
- values Builder // value builder for the list's elements.
- offsets Builder
-
- // actual list type
- dt arrow.DataType
- appendOffsetVal func(int)
-}
-
-type ListLikeBuilder interface {
- Builder
- ValueBuilder() Builder
- Append(bool)
-}
-
-type VarLenListLikeBuilder interface {
- ListLikeBuilder
- AppendWithSize(bool, int)
-}
-
-type ListBuilder struct {
- baseListBuilder
-}
-
-type LargeListBuilder struct {
- baseListBuilder
-}
-
-// NewListBuilder returns a builder, using the provided memory allocator.
-// The created list builder will create a list whose elements will be of type etype.
-func NewListBuilder(mem memory.Allocator, etype arrow.DataType) *ListBuilder {
- offsetBldr := NewInt32Builder(mem)
- return &ListBuilder{
- baseListBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, etype),
- offsets: offsetBldr,
- dt: arrow.ListOf(etype),
- appendOffsetVal: func(o int) { offsetBldr.Append(int32(o)) },
- },
- }
-}
-
-// NewListBuilderWithField takes a field to use for the child rather than just
-// a datatype to allow for more customization.
-func NewListBuilderWithField(mem memory.Allocator, field arrow.Field) *ListBuilder {
- offsetBldr := NewInt32Builder(mem)
- return &ListBuilder{
- baseListBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, field.Type),
- offsets: offsetBldr,
- dt: arrow.ListOfField(field),
- appendOffsetVal: func(o int) { offsetBldr.Append(int32(o)) },
- },
- }
-}
-
-func (b *baseListBuilder) Type() arrow.DataType {
- switch dt := b.dt.(type) {
- case *arrow.ListType:
- f := dt.ElemField()
- f.Type = b.values.Type()
- return arrow.ListOfField(f)
- case *arrow.LargeListType:
- f := dt.ElemField()
- f.Type = b.values.Type()
- return arrow.LargeListOfField(f)
- }
- return nil
-}
-
-// NewLargeListBuilder returns a builder, using the provided memory allocator.
-// The created list builder will create a list whose elements will be of type etype.
-func NewLargeListBuilder(mem memory.Allocator, etype arrow.DataType) *LargeListBuilder {
- offsetBldr := NewInt64Builder(mem)
- return &LargeListBuilder{
- baseListBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, etype),
- offsets: offsetBldr,
- dt: arrow.LargeListOf(etype),
- appendOffsetVal: func(o int) { offsetBldr.Append(int64(o)) },
- },
- }
-}
-
-// NewLargeListBuilderWithField takes a field rather than just an element type
-// to allow for more customization of the final type of the LargeList Array
-func NewLargeListBuilderWithField(mem memory.Allocator, field arrow.Field) *LargeListBuilder {
- offsetBldr := NewInt64Builder(mem)
- return &LargeListBuilder{
- baseListBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, field.Type),
- offsets: offsetBldr,
- dt: arrow.LargeListOfField(field),
- appendOffsetVal: func(o int) { offsetBldr.Append(int64(o)) },
- },
- }
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *baseListBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- b.values.Release()
- b.offsets.Release()
- }
-
-}
-
-func (b *baseListBuilder) appendNextOffset() {
- b.appendOffsetVal(b.values.Len())
-}
-
-func (b *baseListBuilder) Append(v bool) {
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(v)
- b.appendNextOffset()
-}
-
-func (b *baseListBuilder) AppendWithSize(v bool, _ int) {
- b.Append(v)
-}
-
-func (b *baseListBuilder) AppendNull() {
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(false)
- b.appendNextOffset()
-}
-
-func (b *baseListBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *baseListBuilder) AppendEmptyValue() {
- b.Append(true)
-}
-
-func (b *baseListBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *ListBuilder) AppendValues(offsets []int32, valid []bool) {
- b.Reserve(len(valid))
- b.offsets.(*Int32Builder).AppendValues(offsets, nil)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(valid))
-}
-
-func (b *LargeListBuilder) AppendValues(offsets []int64, valid []bool) {
- b.Reserve(len(valid))
- b.offsets.(*Int64Builder).AppendValues(offsets, nil)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(valid))
-}
-
-func (b *baseListBuilder) unsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-func (b *baseListBuilder) init(capacity int) {
- b.builder.init(capacity)
- b.offsets.init(capacity + 1)
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *baseListBuilder) Reserve(n int) {
- b.builder.reserve(n, b.resizeHelper)
- b.offsets.Reserve(n)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *baseListBuilder) Resize(n int) {
- b.resizeHelper(n)
- b.offsets.Resize(n)
-}
-
-func (b *baseListBuilder) resizeHelper(n int) {
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(n, b.builder.init)
- }
-}
-
-func (b *baseListBuilder) ValueBuilder() Builder {
- return b.values
-}
-
-// NewArray creates a List array from the memory buffers used by the builder and resets the ListBuilder
-// so it can be used to build a new array.
-func (b *ListBuilder) NewArray() arrow.Array {
- return b.NewListArray()
-}
-
-// NewArray creates a LargeList array from the memory buffers used by the builder and resets the LargeListBuilder
-// so it can be used to build a new array.
-func (b *LargeListBuilder) NewArray() arrow.Array {
- return b.NewLargeListArray()
-}
-
-// NewListArray creates a List array from the memory buffers used by the builder and resets the ListBuilder
-// so it can be used to build a new array.
-func (b *ListBuilder) NewListArray() (a *List) {
- data := b.newData()
- a = NewListData(data)
- data.Release()
- return
-}
-
-// NewLargeListArray creates a List array from the memory buffers used by the builder and resets the LargeListBuilder
-// so it can be used to build a new array.
-func (b *LargeListBuilder) NewLargeListArray() (a *LargeList) {
- data := b.newData()
- a = NewLargeListData(data)
- data.Release()
- return
-}
-
-func (b *baseListBuilder) newData() (data *Data) {
- if b.offsets.Len() != b.length+1 {
- b.appendNextOffset()
- }
- values := b.values.NewArray()
- defer values.Release()
-
- var offsets *memory.Buffer
- if b.offsets != nil {
- arr := b.offsets.NewArray()
- defer arr.Release()
- offsets = arr.Data().Buffers()[1]
- }
-
- data = NewData(
- b.Type(), b.length,
- []*memory.Buffer{
- b.nullBitmap,
- offsets,
- },
- []arrow.ArrayData{values.Data()},
- b.nulls,
- 0,
- )
- b.reset()
-
- return
-}
-
-func (b *baseListBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- return b.UnmarshalOne(json.NewDecoder(strings.NewReader(s)))
-}
-
-func (b *baseListBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('['):
- b.Append(true)
- if err := b.values.Unmarshal(dec); err != nil {
- return err
- }
- // consume ']'
- _, err := dec.Token()
- return err
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Struct: b.dt.String(),
- }
- }
-
- return nil
-}
-
-func (b *baseListBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *baseListBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("list builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-// ListView represents an immutable sequence of array values defined by an
-// offset into a child array and a length.
-type ListView struct {
- array
- values arrow.Array
- offsets []int32
- sizes []int32
-}
-
-var _ VarLenListLike = (*ListView)(nil)
-
-func NewListViewData(data arrow.ArrayData) *ListView {
- a := &ListView{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *ListView) ListValues() arrow.Array { return a.values }
-
-func (a *ListView) ValueStr(i int) string {
- if !a.IsValid(i) {
- return NullValueStr
- }
- return string(a.GetOneForMarshal(i).(json.RawMessage))
-}
-
-func (a *ListView) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- if a.IsNull(i) {
- o.WriteString(NullValueStr)
- continue
- }
- sub := a.newListValue(i)
- fmt.Fprintf(o, "%v", sub)
- sub.Release()
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *ListView) newListValue(i int) arrow.Array {
- beg, end := a.ValueOffsets(i)
- return NewSlice(a.values, beg, end)
-}
-
-func (a *ListView) setData(data *Data) {
- debug.Assert(len(data.buffers) >= 3, "list-view data should have 3 buffers")
- a.array.setData(data)
- offsets := data.buffers[1]
- if offsets != nil {
- a.offsets = arrow.Int32Traits.CastFromBytes(offsets.Bytes())
- }
- sizes := data.buffers[2]
- if sizes != nil {
- a.sizes = arrow.Int32Traits.CastFromBytes(sizes.Bytes())
- }
- a.values = MakeFromData(data.childData[0])
-}
-
-func (a *ListView) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- slice := a.newListValue(i)
- defer slice.Release()
- v, err := json.Marshal(slice)
- if err != nil {
- panic(err)
- }
- return json.RawMessage(v)
-}
-
-func (a *ListView) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayEqualListView(left, right *ListView) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return Equal(l, r)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-// Len returns the number of elements in the array.
-func (a *ListView) Len() int { return a.array.Len() }
-
-func (a *ListView) Offsets() []int32 { return a.offsets }
-
-func (a *ListView) Sizes() []int32 { return a.sizes }
-
-func (a *ListView) Retain() {
- a.array.Retain()
- a.values.Retain()
-}
-
-func (a *ListView) Release() {
- a.array.Release()
- a.values.Release()
-}
-
-func (a *ListView) ValueOffsets(i int) (start, end int64) {
- debug.Assert(i >= 0 && i < a.array.data.length, "index out of range")
- j := i + a.array.data.offset
- size := int64(a.sizes[j])
- // If size is 0, skip accessing offsets.
- if size == 0 {
- start, end = 0, 0
- return
- }
- start = int64(a.offsets[j])
- end = start + size
- return
-}
-
-// LargeListView represents an immutable sequence of array values defined by an
-// offset into a child array and a length.
-type LargeListView struct {
- array
- values arrow.Array
- offsets []int64
- sizes []int64
-}
-
-var _ VarLenListLike = (*LargeListView)(nil)
-
-// NewLargeListViewData returns a new LargeListView array value, from data.
-func NewLargeListViewData(data arrow.ArrayData) *LargeListView {
- a := new(LargeListView)
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *LargeListView) ListValues() arrow.Array { return a.values }
-
-func (a *LargeListView) ValueStr(i int) string {
- if !a.IsValid(i) {
- return NullValueStr
- }
- return string(a.GetOneForMarshal(i).(json.RawMessage))
-}
-
-func (a *LargeListView) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- if a.IsNull(i) {
- o.WriteString(NullValueStr)
- continue
- }
- sub := a.newListValue(i)
- fmt.Fprintf(o, "%v", sub)
- sub.Release()
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *LargeListView) newListValue(i int) arrow.Array {
- beg, end := a.ValueOffsets(i)
- return NewSlice(a.values, beg, end)
-}
-
-func (a *LargeListView) setData(data *Data) {
- debug.Assert(len(data.buffers) >= 3, "list-view data should have 3 buffers")
- a.array.setData(data)
- offsets := data.buffers[1]
- if offsets != nil {
- a.offsets = arrow.Int64Traits.CastFromBytes(offsets.Bytes())
- }
- sizes := data.buffers[2]
- if sizes != nil {
- a.sizes = arrow.Int64Traits.CastFromBytes(sizes.Bytes())
- }
- a.values = MakeFromData(data.childData[0])
-}
-
-func (a *LargeListView) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- slice := a.newListValue(i)
- defer slice.Release()
- v, err := json.Marshal(slice)
- if err != nil {
- panic(err)
- }
- return json.RawMessage(v)
-}
-
-func (a *LargeListView) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayEqualLargeListView(left, right *LargeListView) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- o := func() bool {
- l := left.newListValue(i)
- defer l.Release()
- r := right.newListValue(i)
- defer r.Release()
- return Equal(l, r)
- }()
- if !o {
- return false
- }
- }
- return true
-}
-
-// Len returns the number of elements in the array.
-func (a *LargeListView) Len() int { return a.array.Len() }
-
-func (a *LargeListView) Offsets() []int64 { return a.offsets }
-
-func (a *LargeListView) Sizes() []int64 { return a.sizes }
-
-func (a *LargeListView) ValueOffsets(i int) (start, end int64) {
- debug.Assert(i >= 0 && i < a.array.data.length, "index out of range")
- j := i + a.array.data.offset
- size := a.sizes[j]
- // If size is 0, skip accessing offsets.
- if size == 0 {
- return 0, 0
- }
- start = a.offsets[j]
- end = start + size
- return
-}
-
-func (a *LargeListView) Retain() {
- a.array.Retain()
- a.values.Retain()
-}
-
-func (a *LargeListView) Release() {
- a.array.Release()
- a.values.Release()
-}
-
-// Accessors for offsets and sizes to make ListView and LargeListView validation generic.
-type offsetsAndSizes interface {
- offsetAt(slot int64) int64
- sizeAt(slot int64) int64
-}
-
-var _ offsetsAndSizes = (*ListView)(nil)
-var _ offsetsAndSizes = (*LargeListView)(nil)
-
-func (a *ListView) offsetAt(slot int64) int64 { return int64(a.offsets[int64(a.data.offset)+slot]) }
-
-func (a *ListView) sizeAt(slot int64) int64 { return int64(a.sizes[int64(a.data.offset)+slot]) }
-
-func (a *LargeListView) offsetAt(slot int64) int64 { return a.offsets[int64(a.data.offset)+slot] }
-
-func (a *LargeListView) sizeAt(slot int64) int64 { return a.sizes[int64(a.data.offset)+slot] }
-
-func outOfBoundsListViewOffset(l offsetsAndSizes, slot int64, offsetLimit int64) error {
- offset := l.offsetAt(slot)
- return fmt.Errorf("%w: Offset invariant failure: offset for slot %d out of bounds. Expected %d to be at least 0 and less than %d", arrow.ErrInvalid, slot, offset, offsetLimit)
-}
-
-func outOfBoundsListViewSize(l offsetsAndSizes, slot int64, offsetLimit int64) error {
- size := l.sizeAt(slot)
- if size < 0 {
- return fmt.Errorf("%w: Offset invariant failure: size for slot %d out of bounds: %d < 0", arrow.ErrInvalid, slot, size)
- }
- offset := l.offsetAt(slot)
- return fmt.Errorf("%w: Offset invariant failure: size for slot %d out of bounds: %d + %d > %d", arrow.ErrInvalid, slot, offset, size, offsetLimit)
-}
-
-// Pre-condition: Basic validation has already been performed
-func (a *array) fullyValidateOffsetsAndSizes(l offsetsAndSizes, offsetLimit int64) error {
- for slot := int64(0); slot < int64(a.Len()); slot += 1 {
- size := l.sizeAt(slot)
- if size > 0 {
- offset := l.offsetAt(slot)
- if offset < 0 || offset > offsetLimit {
- return outOfBoundsListViewOffset(l, slot, offsetLimit)
- }
- if size > offsetLimit-int64(offset) {
- return outOfBoundsListViewSize(l, slot, offsetLimit)
- }
- } else if size < 0 {
- return outOfBoundsListViewSize(l, slot, offsetLimit)
- }
- }
-
- return nil
-}
-
-func (a *array) validateOffsetsAndMaybeSizes(l offsetsAndSizes, offsetByteWidth int, isListView bool, offsetLimit int64, fullValidation bool) error {
- nonEmpty := a.Len() > 0
- if a.data.buffers[1] == nil {
- // For length 0, an empty offsets buffer is accepted (ARROW-544).
- if nonEmpty {
- return fmt.Errorf("non-empty array but offsets are null")
- }
- return nil
- }
- if isListView && a.data.buffers[2] == nil {
- if nonEmpty {
- return fmt.Errorf("non-empty array but sizes are null")
- }
- return nil
- }
-
- var requiredOffsets int
- if nonEmpty {
- requiredOffsets = a.Len() + a.Offset()
- if !isListView {
- requiredOffsets += 1
- }
- } else {
- requiredOffsets = 0
- }
- offsetsByteSize := a.data.buffers[1].Len()
- if offsetsByteSize/offsetByteWidth < requiredOffsets {
- return fmt.Errorf("offsets buffer size (bytes): %d isn't large enough for length: %d and offset: %d",
- offsetsByteSize, a.Len(), a.Offset())
- }
- if isListView {
- requiredSizes := a.Len() + a.Offset()
- sizesBytesSize := a.data.buffers[2].Len()
- if sizesBytesSize/offsetByteWidth < requiredSizes {
- return fmt.Errorf("sizes buffer size (bytes): %d isn't large enough for length: %d and offset: %d",
- sizesBytesSize, a.Len(), a.Offset())
- }
- }
-
- if fullValidation && requiredOffsets > 0 {
- if isListView {
- return a.fullyValidateOffsetsAndSizes(l, offsetLimit)
- }
- // TODO: implement validation of List and LargeList
- // return fullyValidateOffsets(offset_limit)
- return nil
- }
- return nil
-}
-
-func (a *ListView) validate(fullValidation bool) error {
- values := a.array.data.childData[0]
- offsetLimit := values.Len()
- return a.array.validateOffsetsAndMaybeSizes(a, 4, true, int64(offsetLimit), fullValidation)
-}
-
-func (a *ListView) Validate() error {
- return a.validate(false)
-}
-
-func (a *ListView) ValidateFull() error {
- return a.validate(true)
-}
-
-func (a *LargeListView) validate(fullValidation bool) error {
- values := a.array.data.childData[0]
- offsetLimit := values.Len()
- return a.array.validateOffsetsAndMaybeSizes(a, 8, true, int64(offsetLimit), fullValidation)
-}
-
-func (a *LargeListView) Validate() error {
- return a.validate(false)
-}
-
-func (a *LargeListView) ValidateFull() error {
- return a.validate(true)
-}
-
-type baseListViewBuilder struct {
- builder
-
- values Builder // value builder for the list-view's elements.
- offsets Builder
- sizes Builder
-
- // actual list-view type
- dt arrow.DataType
- appendOffsetVal func(int)
- appendSizeVal func(int)
-}
-
-type ListViewBuilder struct {
- baseListViewBuilder
-}
-
-type LargeListViewBuilder struct {
- baseListViewBuilder
-}
-
-// NewListViewBuilder returns a builder, using the provided memory allocator.
-// The created list-view builder will create a list whose elements will be
-// of type etype.
-func NewListViewBuilder(mem memory.Allocator, etype arrow.DataType) *ListViewBuilder {
- offsetBldr := NewInt32Builder(mem)
- sizeBldr := NewInt32Builder(mem)
- return &ListViewBuilder{
- baseListViewBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, etype),
- offsets: offsetBldr,
- sizes: sizeBldr,
- dt: arrow.ListViewOf(etype),
- appendOffsetVal: func(o int) { offsetBldr.Append(int32(o)) },
- appendSizeVal: func(s int) { sizeBldr.Append(int32(s)) },
- },
- }
-}
-
-// NewListViewBuilderWithField takes a field to use for the child rather than just
-// a datatype to allow for more customization.
-func NewListViewBuilderWithField(mem memory.Allocator, field arrow.Field) *ListViewBuilder {
- offsetBldr := NewInt32Builder(mem)
- sizeBldr := NewInt32Builder(mem)
- return &ListViewBuilder{
- baseListViewBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, field.Type),
- offsets: offsetBldr,
- sizes: sizeBldr,
- dt: arrow.ListViewOfField(field),
- appendOffsetVal: func(o int) { offsetBldr.Append(int32(o)) },
- appendSizeVal: func(s int) { sizeBldr.Append(int32(s)) },
- },
- }
-}
-
-func (b *baseListViewBuilder) Type() arrow.DataType {
- switch dt := b.dt.(type) {
- case *arrow.ListViewType:
- f := dt.ElemField()
- f.Type = b.values.Type()
- return arrow.ListViewOfField(f)
- case *arrow.LargeListViewType:
- f := dt.ElemField()
- f.Type = b.values.Type()
- return arrow.LargeListViewOfField(f)
- }
- return nil
-}
-
-// NewLargeListViewBuilder returns a builder, using the provided memory allocator.
-// The created list-view builder will create a list whose elements will be of type etype.
-func NewLargeListViewBuilder(mem memory.Allocator, etype arrow.DataType) *LargeListViewBuilder {
- offsetBldr := NewInt64Builder(mem)
- sizeBldr := NewInt64Builder(mem)
- return &LargeListViewBuilder{
- baseListViewBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, etype),
- offsets: offsetBldr,
- sizes: sizeBldr,
- dt: arrow.LargeListViewOf(etype),
- appendOffsetVal: func(o int) { offsetBldr.Append(int64(o)) },
- appendSizeVal: func(s int) { sizeBldr.Append(int64(s)) },
- },
- }
-}
-
-// NewLargeListViewBuilderWithField takes a field rather than just an element type
-// to allow for more customization of the final type of the LargeListView Array
-func NewLargeListViewBuilderWithField(mem memory.Allocator, field arrow.Field) *LargeListViewBuilder {
- offsetBldr := NewInt64Builder(mem)
- sizeBldr := NewInt64Builder(mem)
- return &LargeListViewBuilder{
- baseListViewBuilder{
- builder: builder{refCount: 1, mem: mem},
- values: NewBuilder(mem, field.Type),
- offsets: offsetBldr,
- sizes: sizeBldr,
- dt: arrow.LargeListViewOfField(field),
- appendOffsetVal: func(o int) { offsetBldr.Append(int64(o)) },
- appendSizeVal: func(o int) { sizeBldr.Append(int64(o)) },
- },
- }
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *baseListViewBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- b.values.Release()
- b.offsets.Release()
- b.sizes.Release()
- }
-}
-
-func (b *baseListViewBuilder) AppendDimensions(offset int, listSize int) {
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(true)
- b.appendOffsetVal(offset)
- b.appendSizeVal(listSize)
-}
-
-func (b *baseListViewBuilder) Append(v bool) {
- debug.Assert(false, "baseListViewBuilder.Append should never be called -- use AppendWithSize instead")
-}
-
-func (b *baseListViewBuilder) AppendWithSize(v bool, listSize int) {
- debug.Assert(v || listSize == 0, "invalid list-view should have size 0")
- b.Reserve(1)
- b.unsafeAppendBoolToBitmap(v)
- b.appendOffsetVal(b.values.Len())
- b.appendSizeVal(listSize)
-}
-
-func (b *baseListViewBuilder) AppendNull() {
- b.AppendWithSize(false, 0)
-}
-
-func (b *baseListViewBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *baseListViewBuilder) AppendEmptyValue() {
- b.AppendWithSize(true, 0)
-}
-
-func (b *baseListViewBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *ListViewBuilder) AppendValuesWithSizes(offsets []int32, sizes []int32, valid []bool) {
- b.Reserve(len(valid))
- b.offsets.(*Int32Builder).AppendValues(offsets, nil)
- b.sizes.(*Int32Builder).AppendValues(sizes, nil)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(valid))
-}
-
-func (b *LargeListViewBuilder) AppendValuesWithSizes(offsets []int64, sizes []int64, valid []bool) {
- b.Reserve(len(valid))
- b.offsets.(*Int64Builder).AppendValues(offsets, nil)
- b.sizes.(*Int64Builder).AppendValues(sizes, nil)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(valid))
-}
-
-func (b *baseListViewBuilder) unsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-func (b *baseListViewBuilder) init(capacity int) {
- b.builder.init(capacity)
- b.offsets.init(capacity)
- b.sizes.init(capacity)
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *baseListViewBuilder) Reserve(n int) {
- b.builder.reserve(n, b.resizeHelper)
- b.offsets.Reserve(n)
- b.sizes.Reserve(n)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *baseListViewBuilder) Resize(n int) {
- b.resizeHelper(n)
- b.offsets.Resize(n)
- b.sizes.Resize(n)
-}
-
-func (b *baseListViewBuilder) resizeHelper(n int) {
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(n, b.builder.init)
- }
-}
-
-func (b *baseListViewBuilder) ValueBuilder() Builder {
- return b.values
-}
-
-// NewArray creates a ListView array from the memory buffers used by the builder and
-// resets the ListViewBuilder so it can be used to build a new array.
-func (b *ListViewBuilder) NewArray() arrow.Array {
- return b.NewListViewArray()
-}
-
-// NewArray creates a LargeListView array from the memory buffers used by the builder
-// and resets the LargeListViewBuilder so it can be used to build a new array.
-func (b *LargeListViewBuilder) NewArray() arrow.Array {
- return b.NewLargeListViewArray()
-}
-
-// NewListViewArray creates a ListView array from the memory buffers used by the builder
-// and resets the ListViewBuilder so it can be used to build a new array.
-func (b *ListViewBuilder) NewListViewArray() (a *ListView) {
- data := b.newData()
- a = NewListViewData(data)
- data.Release()
- return
-}
-
-// NewLargeListViewArray creates a ListView array from the memory buffers used by the
-// builder and resets the LargeListViewBuilder so it can be used to build a new array.
-func (b *LargeListViewBuilder) NewLargeListViewArray() (a *LargeListView) {
- data := b.newData()
- a = NewLargeListViewData(data)
- data.Release()
- return
-}
-
-func (b *baseListViewBuilder) newData() (data *Data) {
- values := b.values.NewArray()
- defer values.Release()
-
- var offsets *memory.Buffer
- if b.offsets != nil {
- arr := b.offsets.NewArray()
- defer arr.Release()
- offsets = arr.Data().Buffers()[1]
- }
-
- var sizes *memory.Buffer
- if b.sizes != nil {
- arr := b.sizes.NewArray()
- defer arr.Release()
- sizes = arr.Data().Buffers()[1]
- }
-
- data = NewData(
- b.Type(), b.length,
- []*memory.Buffer{
- b.nullBitmap,
- offsets,
- sizes,
- },
- []arrow.ArrayData{values.Data()},
- b.nulls,
- 0,
- )
- b.reset()
-
- return
-}
-
-func (b *baseListViewBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- return b.UnmarshalOne(json.NewDecoder(strings.NewReader(s)))
-}
-
-func (b *baseListViewBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('['):
- offset := b.values.Len()
- // 0 is a placeholder size as we don't know the actual size yet
- b.AppendWithSize(true, 0)
- if err := b.values.Unmarshal(dec); err != nil {
- return err
- }
- // consume ']'
- _, err := dec.Token()
- // replace the last size with the actual size
- switch b.sizes.(type) {
- case *Int32Builder:
- b.sizes.(*Int32Builder).rawData[b.sizes.Len()-1] = int32(b.values.Len() - offset)
- case *Int64Builder:
- b.sizes.(*Int64Builder).rawData[b.sizes.Len()-1] = int64(b.values.Len() - offset)
- }
- return err
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Struct: b.dt.String(),
- }
- }
-
- return nil
-}
-
-func (b *baseListViewBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *baseListViewBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("list-view builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-// Find the minimum offset+size in a LIST_VIEW/LARGE_LIST_VIEW array.
-//
-// Pre-conditions:
-//
-// input.DataType() is ListViewType if Offset=int32 or LargeListViewType if Offset=int64
-// input.Len() > 0 && input.NullN() != input.Len()
-func minListViewOffset[Offset int32 | int64](input arrow.ArrayData) Offset {
- var bitmap []byte
- if input.Buffers()[0] != nil {
- bitmap = input.Buffers()[0].Bytes()
- }
- offsets := arrow.GetData[Offset](input.Buffers()[1].Bytes())[input.Offset():]
- sizes := arrow.GetData[Offset](input.Buffers()[2].Bytes())[input.Offset():]
-
- isNull := func(i int) bool {
- return bitmap != nil && bitutil.BitIsNotSet(bitmap, input.Offset()+i)
- }
-
- // It's very likely that the first non-null non-empty list-view starts at
- // offset 0 of the child array.
- i := 0
- for i < input.Len() && (isNull(i) || sizes[i] == 0) {
- i += 1
- }
- if i >= input.Len() {
- return 0
- }
- minOffset := offsets[i]
- if minOffset == 0 {
- // early exit: offset 0 found already
- return 0
- }
-
- // Slow path: scan the buffers entirely.
- i += 1
- for ; i < input.Len(); i += 1 {
- if isNull(i) {
- continue
- }
- offset := offsets[i]
- if offset < minOffset && sizes[i] > 0 {
- minOffset = offset
- }
- }
- return minOffset
-}
-
-// Find the maximum offset+size in a LIST_VIEW/LARGE_LIST_VIEW array.
-//
-// Pre-conditions:
-//
-// input.DataType() is ListViewType if Offset=int32 or LargeListViewType if Offset=int64
-// input.Len() > 0 && input.NullN() != input.Len()
-func maxListViewEnd[Offset int32 | int64](input arrow.ArrayData) Offset {
- inputOffset := input.Offset()
- var bitmap []byte
- if input.Buffers()[0] != nil {
- bitmap = input.Buffers()[0].Bytes()
- }
- offsets := arrow.GetData[Offset](input.Buffers()[1].Bytes())[inputOffset:]
- sizes := arrow.GetData[Offset](input.Buffers()[2].Bytes())[inputOffset:]
-
- isNull := func(i int) bool {
- return bitmap != nil && bitutil.BitIsNotSet(bitmap, inputOffset+i)
- }
-
- i := input.Len() - 1 // safe because input.Len() > 0
- for i != 0 && (isNull(i) || sizes[i] == 0) {
- i -= 1
- }
- offset := offsets[i]
- size := sizes[i]
- if i == 0 {
- if isNull(i) || sizes[i] == 0 {
- return 0
- } else {
- return offset + size
- }
- }
-
- values := input.Children()[0]
- maxEnd := offsets[i] + sizes[i]
- if maxEnd == Offset(values.Len()) {
- // Early-exit: maximum possible view-end found already.
- return maxEnd
- }
-
- // Slow path: scan the buffers entirely.
- for ; i >= 0; i -= 1 {
- offset := offsets[i]
- size := sizes[i]
- if size > 0 && !isNull(i) {
- if offset+size > maxEnd {
- maxEnd = offset + size
- if maxEnd == Offset(values.Len()) {
- return maxEnd
- }
- }
- }
- }
- return maxEnd
-}
-
-func rangeOfValuesUsed(input arrow.ArrayData) (int, int) {
- if input.Len() == 0 || input.NullN() == input.Len() {
- return 0, 0
- }
- var minOffset, maxEnd int
- switch input.DataType().(type) {
- case *arrow.ListViewType:
- minOffset = int(minListViewOffset[int32](input))
- maxEnd = int(maxListViewEnd[int32](input))
- case *arrow.LargeListViewType:
- minOffset = int(minListViewOffset[int64](input))
- maxEnd = int(maxListViewEnd[int64](input))
- case *arrow.ListType:
- offsets := arrow.Int32Traits.CastFromBytes(input.Buffers()[1].Bytes())[input.Offset():]
- minOffset = int(offsets[0])
- maxEnd = int(offsets[len(offsets)-1])
- case *arrow.LargeListType:
- offsets := arrow.Int64Traits.CastFromBytes(input.Buffers()[1].Bytes())[input.Offset():]
- minOffset = int(offsets[0])
- maxEnd = int(offsets[len(offsets)-1])
- case *arrow.MapType:
- offsets := arrow.Int32Traits.CastFromBytes(input.Buffers()[1].Bytes())[input.Offset():]
- minOffset = int(offsets[0])
- maxEnd = int(offsets[len(offsets)-1])
- }
- return minOffset, maxEnd - minOffset
-}
-
-// Returns the smallest contiguous range of values of the child array that are
-// referenced by all the list values in the input array.
-func RangeOfValuesUsed(input VarLenListLike) (int, int) {
- return rangeOfValuesUsed(input.Data())
-}
-
-var (
- _ arrow.Array = (*List)(nil)
- _ arrow.Array = (*LargeList)(nil)
- _ arrow.Array = (*ListView)(nil)
- _ arrow.Array = (*LargeListView)(nil)
-
- _ Builder = (*ListBuilder)(nil)
- _ Builder = (*LargeListBuilder)(nil)
- _ Builder = (*ListViewBuilder)(nil)
- _ Builder = (*LargeListViewBuilder)(nil)
-
- _ VarLenListLike = (*List)(nil)
- _ VarLenListLike = (*LargeList)(nil)
- _ VarLenListLike = (*Map)(nil)
- _ VarLenListLike = (*ListView)(nil)
- _ VarLenListLike = (*LargeListView)(nil)
- _ ListLike = (*FixedSizeList)(nil)
-
- _ VarLenListLikeBuilder = (*ListBuilder)(nil)
- _ VarLenListLikeBuilder = (*LargeListBuilder)(nil)
- _ VarLenListLikeBuilder = (*ListBuilder)(nil)
- _ VarLenListLikeBuilder = (*LargeListBuilder)(nil)
- _ VarLenListLikeBuilder = (*MapBuilder)(nil)
- _ ListLikeBuilder = (*FixedSizeListBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/map.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/map.go
deleted file mode 100644
index fe07a6878..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/map.go
+++ /dev/null
@@ -1,361 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Map represents an immutable sequence of Key/Value structs. It is a
-// logical type that is implemented as a List<Struct: key, value>.
-type Map struct {
- *List
- keys, items arrow.Array
-}
-
-var _ ListLike = (*Map)(nil)
-
-// NewMapData returns a new Map array value, from data
-func NewMapData(data arrow.ArrayData) *Map {
- a := &Map{List: &List{}}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// KeysSorted checks the datatype that was used to construct this array and
-// returns the KeysSorted boolean value used to denote if the key array is
-// sorted for each list element.
-//
-// Important note: Nothing is enforced regarding the KeysSorted value, it is
-// solely a metadata field that should be set if keys within each value are sorted.
-// This value is not used at all in regards to comparisons / equality.
-func (a *Map) KeysSorted() bool { return a.DataType().(*arrow.MapType).KeysSorted }
-
-func (a *Map) validateData(data *Data) {
- if len(data.childData) != 1 || data.childData[0] == nil {
- panic("arrow/array: expected one child array for map array")
- }
-
- if data.childData[0].DataType().ID() != arrow.STRUCT {
- panic("arrow/array: map array child should be struct type")
- }
-
- if data.childData[0].NullN() != 0 {
- panic("arrow/array: map array child array should have no nulls")
- }
-
- if len(data.childData[0].Children()) != 2 {
- panic("arrow/array: map array child array should have two fields")
- }
-
- if data.childData[0].Children()[0].NullN() != 0 {
- panic("arrow/array: map array keys array should have no nulls")
- }
-}
-
-func (a *Map) setData(data *Data) {
- a.validateData(data)
-
- a.List.setData(data)
- a.keys = MakeFromData(data.childData[0].Children()[0])
- a.items = MakeFromData(data.childData[0].Children()[1])
-}
-
-// Keys returns the full Array of Key values, equivalent to grabbing
-// the key field of the child struct.
-func (a *Map) Keys() arrow.Array { return a.keys }
-
-// Items returns the full Array of Item values, equivalent to grabbing
-// the Value field (the second field) of the child struct.
-func (a *Map) Items() arrow.Array { return a.items }
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (a *Map) Retain() {
- a.List.Retain()
- a.keys.Retain()
- a.items.Retain()
-}
-
-// Release decreases the reference count by 1.
-// Release may be called simultaneously from multiple goroutines.
-// When the reference count goes to zero, the memory is freed.
-func (a *Map) Release() {
- a.List.Release()
- a.keys.Release()
- a.items.Release()
-}
-
-func arrayEqualMap(left, right *Map) bool {
- // since Map is implemented using a list, we can just use arrayEqualList
- return arrayEqualList(left.List, right.List)
-}
-
-type MapBuilder struct {
- listBuilder *ListBuilder
-
- etype *arrow.MapType
- keytype, itemtype arrow.DataType
- keyBuilder, itemBuilder Builder
- keysSorted bool
-}
-
-// NewMapBuilder returns a builder, using the provided memory allocator.
-// The created Map builder will create a map array whose keys will be a non-nullable
-// array of type `keytype` and whose mapped items will be a nullable array of itemtype.
-//
-// KeysSorted is not enforced at all by the builder, it should only be set to true
-// building using keys in sorted order for each value. The KeysSorted value will just be
-// used when creating the DataType for the map.
-//
-// # Example
-//
-// Simple example provided of converting a []map[string]int32 to an array.Map
-// by using a MapBuilder:
-//
-// /* assume maplist == []map[string]int32 */
-// bldr := array.NewMapBuilder(memory.DefaultAllocator, arrow.BinaryTypes.String, arrow.PrimitiveTypes.Int32, false)
-// defer bldr.Release()
-// kb := bldr.KeyBuilder().(*array.StringBuilder)
-// ib := bldr.ItemBuilder().(*array.Int32Builder)
-// for _, m := range maplist {
-// bldr.Append(true)
-// for k, v := range m {
-// kb.Append(k)
-// ib.Append(v)
-// }
-// }
-// maparr := bldr.NewMapArray()
-// defer maparr.Release()
-func NewMapBuilder(mem memory.Allocator, keytype, itemtype arrow.DataType, keysSorted bool) *MapBuilder {
- etype := arrow.MapOf(keytype, itemtype)
- etype.KeysSorted = keysSorted
- listBldr := NewListBuilder(mem, etype.Elem())
- keyBldr := listBldr.ValueBuilder().(*StructBuilder).FieldBuilder(0)
- keyBldr.Retain()
- itemBldr := listBldr.ValueBuilder().(*StructBuilder).FieldBuilder(1)
- itemBldr.Retain()
- return &MapBuilder{
- listBuilder: listBldr,
- keyBuilder: keyBldr,
- itemBuilder: itemBldr,
- etype: etype,
- keytype: keytype,
- itemtype: itemtype,
- keysSorted: keysSorted,
- }
-}
-
-func NewMapBuilderWithType(mem memory.Allocator, dt *arrow.MapType) *MapBuilder {
- listBldr := NewListBuilder(mem, dt.Elem())
- keyBldr := listBldr.ValueBuilder().(*StructBuilder).FieldBuilder(0)
- keyBldr.Retain()
- itemBldr := listBldr.ValueBuilder().(*StructBuilder).FieldBuilder(1)
- itemBldr.Retain()
- return &MapBuilder{
- listBuilder: listBldr,
- keyBuilder: keyBldr,
- itemBuilder: itemBldr,
- etype: dt,
- keytype: dt.KeyType(),
- itemtype: dt.ItemType(),
- keysSorted: dt.KeysSorted,
- }
-}
-
-func (b *MapBuilder) Type() arrow.DataType { return b.etype }
-
-// Retain increases the reference count by 1 for the sub-builders (list, key, item).
-// Retain may be called simultaneously from multiple goroutines.
-func (b *MapBuilder) Retain() {
- b.listBuilder.Retain()
- b.keyBuilder.Retain()
- b.itemBuilder.Retain()
-}
-
-// Release decreases the reference count by 1 for the sub builders (list, key, item).
-func (b *MapBuilder) Release() {
- b.listBuilder.Release()
- b.keyBuilder.Release()
- b.itemBuilder.Release()
-}
-
-// Len returns the current number of Maps that are in the builder
-func (b *MapBuilder) Len() int { return b.listBuilder.Len() }
-
-// Cap returns the total number of elements that can be stored
-// without allocating additional memory.
-func (b *MapBuilder) Cap() int { return b.listBuilder.Cap() }
-
-// NullN returns the number of null values in the array builder.
-func (b *MapBuilder) NullN() int { return b.listBuilder.NullN() }
-
-// IsNull returns if a previously appended value at a given index is null or not.
-func (b *MapBuilder) IsNull(i int) bool {
- return b.listBuilder.IsNull(i)
-}
-
-// Append adds a new Map element to the array, calling Append(false) is
-// equivalent to calling AppendNull.
-func (b *MapBuilder) Append(v bool) {
- b.adjustStructBuilderLen()
- b.listBuilder.Append(v)
-}
-
-func (b *MapBuilder) AppendWithSize(v bool, _ int) {
- b.Append(v)
-}
-
-// AppendNull adds a null map entry to the array.
-func (b *MapBuilder) AppendNull() {
- b.Append(false)
-}
-
-// AppendNulls adds null map entry to the array.
-func (b *MapBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *MapBuilder) SetNull(i int) {
- b.listBuilder.SetNull(i)
-}
-
-func (b *MapBuilder) AppendEmptyValue() {
- b.Append(true)
-}
-
-func (b *MapBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-// Reserve enough space for n maps
-func (b *MapBuilder) Reserve(n int) { b.listBuilder.Reserve(n) }
-
-// Resize adjust the space allocated by b to n map elements. If n is greater than
-// b.Cap(), additional memory will be allocated. If n is smaller, the allocated memory may be reduced.
-func (b *MapBuilder) Resize(n int) { b.listBuilder.Resize(n) }
-
-// AppendValues is for bulk appending a group of elements with offsets provided
-// and validity booleans provided.
-func (b *MapBuilder) AppendValues(offsets []int32, valid []bool) {
- b.adjustStructBuilderLen()
- b.listBuilder.AppendValues(offsets, valid)
-}
-
-func (b *MapBuilder) UnsafeAppendBoolToBitmap(v bool) {
- b.listBuilder.UnsafeAppendBoolToBitmap(v)
-}
-
-func (b *MapBuilder) init(capacity int) { b.listBuilder.init(capacity) }
-func (b *MapBuilder) resize(newBits int, init func(int)) { b.listBuilder.resize(newBits, init) }
-
-func (b *MapBuilder) adjustStructBuilderLen() {
- sb := b.listBuilder.ValueBuilder().(*StructBuilder)
- if sb.Len() < b.keyBuilder.Len() {
- valids := make([]bool, b.keyBuilder.Len()-sb.Len())
- for i := range valids {
- valids[i] = true
- }
- sb.AppendValues(valids)
- }
-}
-
-// NewArray creates a new Map array from the memory buffers used by the builder, and
-// resets the builder so it can be used again to build a new Map array.
-func (b *MapBuilder) NewArray() arrow.Array {
- return b.NewMapArray()
-}
-
-// NewMapArray creates a new Map array from the memory buffers used by the builder, and
-// resets the builder so it can be used again to build a new Map array.
-func (b *MapBuilder) NewMapArray() (a *Map) {
- if !b.etype.ItemField().Nullable && b.ItemBuilder().NullN() > 0 {
- panic("arrow/array: item not nullable")
- }
-
- data := b.newData()
- defer data.Release()
- a = NewMapData(data)
- return
-}
-
-func (b *MapBuilder) newData() (data *Data) {
- b.adjustStructBuilderLen()
- values := b.listBuilder.NewListArray()
- defer values.Release()
-
- data = NewData(b.etype,
- values.Len(), values.data.buffers,
- values.data.childData, values.NullN(), 0)
- return
-}
-
-// KeyBuilder returns a builder that can be used to populate the keys of the maps.
-func (b *MapBuilder) KeyBuilder() Builder { return b.keyBuilder }
-
-// ItemBuilder returns a builder that can be used to populate the values that the
-// keys point to.
-func (b *MapBuilder) ItemBuilder() Builder { return b.itemBuilder }
-
-// ValueBuilder can be used instead of separately using the Key/Item builders
-// to build the list as a List of Structs rather than building the keys/items
-// separately.
-func (b *MapBuilder) ValueBuilder() Builder {
- return b.listBuilder.ValueBuilder()
-}
-
-func (b *MapBuilder) AppendValueFromString(s string) error {
- return b.listBuilder.AppendValueFromString(s)
-}
-
-func (b *MapBuilder) UnmarshalOne(dec *json.Decoder) error {
- return b.listBuilder.UnmarshalOne(dec)
-}
-
-func (b *MapBuilder) Unmarshal(dec *json.Decoder) error {
- return b.listBuilder.Unmarshal(dec)
-}
-
-func (b *MapBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("map builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Map)(nil)
- _ Builder = (*MapBuilder)(nil)
- _ ListLikeBuilder = (*MapBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/null.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/null.go
deleted file mode 100644
index 2735a88a9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/null.go
+++ /dev/null
@@ -1,218 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Null represents an immutable, degenerate array with no physical storage.
-type Null struct {
- array
-}
-
-// NewNull returns a new Null array value of size n.
-func NewNull(n int) *Null {
- a := &Null{}
- a.refCount = 1
- data := NewData(
- arrow.Null, n,
- []*memory.Buffer{nil},
- nil,
- n,
- 0,
- )
- a.setData(data)
- data.Release()
- return a
-}
-
-// NewNullData returns a new Null array value, from data.
-func NewNullData(data arrow.ArrayData) *Null {
- a := &Null{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Null) ValueStr(int) string { return NullValueStr }
-
-func (a *Null) Value(int) interface{} { return nil }
-
-func (a *Null) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- o.WriteString(NullValueStr)
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Null) setData(data *Data) {
- a.array.setData(data)
- a.array.nullBitmapBytes = nil
- a.array.data.nulls = a.array.data.length
-}
-
-func (a *Null) GetOneForMarshal(i int) interface{} {
- return nil
-}
-
-func (a *Null) MarshalJSON() ([]byte, error) {
- return json.Marshal(make([]interface{}, a.Len()))
-}
-
-type NullBuilder struct {
- builder
-}
-
-// NewNullBuilder returns a builder, using the provided memory allocator.
-func NewNullBuilder(mem memory.Allocator) *NullBuilder {
- return &NullBuilder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *NullBuilder) Type() arrow.DataType { return arrow.Null }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *NullBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- }
-}
-
-func (b *NullBuilder) AppendNull() {
- b.builder.length++
- b.builder.nulls++
-}
-
-func (b *NullBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *NullBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- return fmt.Errorf("cannot convert %q to null", s)
-}
-
-func (b *NullBuilder) AppendEmptyValue() { b.AppendNull() }
-
-func (b *NullBuilder) AppendEmptyValues(n int) { b.AppendNulls(n) }
-
-func (*NullBuilder) Reserve(size int) {}
-func (*NullBuilder) Resize(size int) {}
-
-func (*NullBuilder) init(cap int) {}
-func (*NullBuilder) resize(newBits int, init func(int)) {}
-
-// NewArray creates a Null array from the memory buffers used by the builder and resets the NullBuilder
-// so it can be used to build a new array.
-func (b *NullBuilder) NewArray() arrow.Array {
- return b.NewNullArray()
-}
-
-// NewNullArray creates a Null array from the memory buffers used by the builder and resets the NullBuilder
-// so it can be used to build a new array.
-func (b *NullBuilder) NewNullArray() (a *Null) {
- data := b.newData()
- a = NewNullData(data)
- data.Release()
- return
-}
-
-func (b *NullBuilder) newData() (data *Data) {
- data = NewData(
- arrow.Null, b.length,
- []*memory.Buffer{nil},
- nil,
- b.nulls,
- 0,
- )
- b.reset()
-
- return
-}
-
-func (b *NullBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t.(type) {
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(nil),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *NullBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *NullBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("null builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Null)(nil)
- _ Builder = (*NullBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go
deleted file mode 100644
index 59c9a9797..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go
+++ /dev/null
@@ -1,1430 +0,0 @@
-// Code generated by array/numeric.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "strconv"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// A type which represents an immutable sequence of int64 values.
-type Int64 struct {
- array
- values []int64
-}
-
-// NewInt64Data creates a new Int64.
-func NewInt64Data(data arrow.ArrayData) *Int64 {
- a := &Int64{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Int64) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Int64) Value(i int) int64 { return a.values[i] }
-
-// Values returns the values.
-func (a *Int64) Int64Values() []int64 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Int64) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Int64) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Int64Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Int64) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatInt(int64(a.Value(i)), 10)
-}
-
-func (a *Int64) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Int64) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualInt64(left, right *Int64) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of uint64 values.
-type Uint64 struct {
- array
- values []uint64
-}
-
-// NewUint64Data creates a new Uint64.
-func NewUint64Data(data arrow.ArrayData) *Uint64 {
- a := &Uint64{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Uint64) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Uint64) Value(i int) uint64 { return a.values[i] }
-
-// Values returns the values.
-func (a *Uint64) Uint64Values() []uint64 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Uint64) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Uint64) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Uint64Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Uint64) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatUint(uint64(a.Value(i)), 10)
-}
-
-func (a *Uint64) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Uint64) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualUint64(left, right *Uint64) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of float64 values.
-type Float64 struct {
- array
- values []float64
-}
-
-// NewFloat64Data creates a new Float64.
-func NewFloat64Data(data arrow.ArrayData) *Float64 {
- a := &Float64{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Float64) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Float64) Value(i int) float64 { return a.values[i] }
-
-// Values returns the values.
-func (a *Float64) Float64Values() []float64 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Float64) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Float64) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Float64Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Float64) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatFloat(float64(a.Value(i)), 'g', -1, 64)
-}
-
-func (a *Float64) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Float64) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualFloat64(left, right *Float64) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of int32 values.
-type Int32 struct {
- array
- values []int32
-}
-
-// NewInt32Data creates a new Int32.
-func NewInt32Data(data arrow.ArrayData) *Int32 {
- a := &Int32{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Int32) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Int32) Value(i int) int32 { return a.values[i] }
-
-// Values returns the values.
-func (a *Int32) Int32Values() []int32 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Int32) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Int32) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Int32Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Int32) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatInt(int64(a.Value(i)), 10)
-}
-
-func (a *Int32) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Int32) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualInt32(left, right *Int32) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of uint32 values.
-type Uint32 struct {
- array
- values []uint32
-}
-
-// NewUint32Data creates a new Uint32.
-func NewUint32Data(data arrow.ArrayData) *Uint32 {
- a := &Uint32{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Uint32) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Uint32) Value(i int) uint32 { return a.values[i] }
-
-// Values returns the values.
-func (a *Uint32) Uint32Values() []uint32 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Uint32) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Uint32) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Uint32Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Uint32) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatUint(uint64(a.Value(i)), 10)
-}
-
-func (a *Uint32) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Uint32) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualUint32(left, right *Uint32) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of float32 values.
-type Float32 struct {
- array
- values []float32
-}
-
-// NewFloat32Data creates a new Float32.
-func NewFloat32Data(data arrow.ArrayData) *Float32 {
- a := &Float32{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Float32) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Float32) Value(i int) float32 { return a.values[i] }
-
-// Values returns the values.
-func (a *Float32) Float32Values() []float32 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Float32) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Float32) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Float32Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Float32) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatFloat(float64(a.Value(i)), 'g', -1, 32)
-}
-
-func (a *Float32) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Float32) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualFloat32(left, right *Float32) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of int16 values.
-type Int16 struct {
- array
- values []int16
-}
-
-// NewInt16Data creates a new Int16.
-func NewInt16Data(data arrow.ArrayData) *Int16 {
- a := &Int16{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Int16) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Int16) Value(i int) int16 { return a.values[i] }
-
-// Values returns the values.
-func (a *Int16) Int16Values() []int16 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Int16) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Int16) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Int16Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Int16) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatInt(int64(a.Value(i)), 10)
-}
-
-func (a *Int16) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Int16) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualInt16(left, right *Int16) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of uint16 values.
-type Uint16 struct {
- array
- values []uint16
-}
-
-// NewUint16Data creates a new Uint16.
-func NewUint16Data(data arrow.ArrayData) *Uint16 {
- a := &Uint16{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Uint16) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Uint16) Value(i int) uint16 { return a.values[i] }
-
-// Values returns the values.
-func (a *Uint16) Uint16Values() []uint16 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Uint16) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Uint16) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Uint16Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Uint16) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatUint(uint64(a.Value(i)), 10)
-}
-
-func (a *Uint16) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return a.values[i]
-}
-
-func (a *Uint16) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.values[i]
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualUint16(left, right *Uint16) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of int8 values.
-type Int8 struct {
- array
- values []int8
-}
-
-// NewInt8Data creates a new Int8.
-func NewInt8Data(data arrow.ArrayData) *Int8 {
- a := &Int8{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Int8) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Int8) Value(i int) int8 { return a.values[i] }
-
-// Values returns the values.
-func (a *Int8) Int8Values() []int8 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Int8) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Int8) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Int8Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Int8) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatInt(int64(a.Value(i)), 10)
-}
-
-func (a *Int8) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return float64(a.values[i]) // prevent uint8 from being seen as binary data
-}
-
-func (a *Int8) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = float64(a.values[i]) // prevent uint8 from being seen as binary data
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualInt8(left, right *Int8) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of uint8 values.
-type Uint8 struct {
- array
- values []uint8
-}
-
-// NewUint8Data creates a new Uint8.
-func NewUint8Data(data arrow.ArrayData) *Uint8 {
- a := &Uint8{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Uint8) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Uint8) Value(i int) uint8 { return a.values[i] }
-
-// Values returns the values.
-func (a *Uint8) Uint8Values() []uint8 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Uint8) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Uint8) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Uint8Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Uint8) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return strconv.FormatUint(uint64(a.Value(i)), 10)
-}
-
-func (a *Uint8) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- return float64(a.values[i]) // prevent uint8 from being seen as binary data
-}
-
-func (a *Uint8) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = float64(a.values[i]) // prevent uint8 from being seen as binary data
- } else {
- vals[i] = nil
- }
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualUint8(left, right *Uint8) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of arrow.Time32 values.
-type Time32 struct {
- array
- values []arrow.Time32
-}
-
-// NewTime32Data creates a new Time32.
-func NewTime32Data(data arrow.ArrayData) *Time32 {
- a := &Time32{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Time32) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Time32) Value(i int) arrow.Time32 { return a.values[i] }
-
-// Values returns the values.
-func (a *Time32) Time32Values() []arrow.Time32 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Time32) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Time32) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Time32Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Time32) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.values[i].FormattedString(a.DataType().(*arrow.Time32Type).Unit)
-}
-
-func (a *Time32) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.values[i].ToTime(a.DataType().(*arrow.Time32Type).Unit).Format("15:04:05.999999999")
-}
-
-func (a *Time32) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualTime32(left, right *Time32) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of arrow.Time64 values.
-type Time64 struct {
- array
- values []arrow.Time64
-}
-
-// NewTime64Data creates a new Time64.
-func NewTime64Data(data arrow.ArrayData) *Time64 {
- a := &Time64{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Time64) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Time64) Value(i int) arrow.Time64 { return a.values[i] }
-
-// Values returns the values.
-func (a *Time64) Time64Values() []arrow.Time64 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Time64) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Time64) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Time64Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Time64) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.values[i].FormattedString(a.DataType().(*arrow.Time64Type).Unit)
-}
-
-func (a *Time64) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.values[i].ToTime(a.DataType().(*arrow.Time64Type).Unit).Format("15:04:05.999999999")
-}
-
-func (a *Time64) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualTime64(left, right *Time64) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of arrow.Date32 values.
-type Date32 struct {
- array
- values []arrow.Date32
-}
-
-// NewDate32Data creates a new Date32.
-func NewDate32Data(data arrow.ArrayData) *Date32 {
- a := &Date32{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Date32) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Date32) Value(i int) arrow.Date32 { return a.values[i] }
-
-// Values returns the values.
-func (a *Date32) Date32Values() []arrow.Date32 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Date32) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Date32) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Date32Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Date32) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.values[i].FormattedString()
-}
-
-func (a *Date32) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.values[i].ToTime().Format("2006-01-02")
-}
-
-func (a *Date32) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualDate32(left, right *Date32) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of arrow.Date64 values.
-type Date64 struct {
- array
- values []arrow.Date64
-}
-
-// NewDate64Data creates a new Date64.
-func NewDate64Data(data arrow.ArrayData) *Date64 {
- a := &Date64{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Date64) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Date64) Value(i int) arrow.Date64 { return a.values[i] }
-
-// Values returns the values.
-func (a *Date64) Date64Values() []arrow.Date64 { return a.values }
-
-// String returns a string representation of the array.
-func (a *Date64) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Date64) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.Date64Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Date64) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.values[i].FormattedString()
-}
-
-func (a *Date64) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.values[i].ToTime().Format("2006-01-02")
-}
-
-func (a *Date64) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualDate64(left, right *Date64) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// A type which represents an immutable sequence of arrow.Duration values.
-type Duration struct {
- array
- values []arrow.Duration
-}
-
-// NewDurationData creates a new Duration.
-func NewDurationData(data arrow.ArrayData) *Duration {
- a := &Duration{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Duration) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Duration) Value(i int) arrow.Duration { return a.values[i] }
-
-// Values returns the values.
-func (a *Duration) DurationValues() []arrow.Duration { return a.values }
-
-// String returns a string representation of the array.
-func (a *Duration) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Duration) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.DurationTraits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Duration) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- // return value and suffix as a string such as "12345ms"
- return fmt.Sprintf("%d%s", a.values[i], a.DataType().(*arrow.DurationType).Unit)
-}
-
-func (a *Duration) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- // return value and suffix as a string such as "12345ms"
- return fmt.Sprintf("%d%s", a.values[i], a.DataType().(*arrow.DurationType).Unit.String())
-}
-
-func (a *Duration) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualDuration(left, right *Duration) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go.tmpl
deleted file mode 100644
index 027456009..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/numeric.gen.go.tmpl
+++ /dev/null
@@ -1,158 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "fmt"
- "strings"
- "time"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-{{range .In}}
-
-// A type which represents an immutable sequence of {{or .QualifiedType .Type}} values.
-type {{.Name}} struct {
- array
- values []{{or .QualifiedType .Type}}
-}
-
-// New{{.Name}}Data creates a new {{.Name}}.
-func New{{.Name}}Data(data arrow.ArrayData) *{{.Name}} {
- a := &{{.Name}}{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *{{.Name}}) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *{{.Name}}) Value(i int) {{or .QualifiedType .Type}} { return a.values[i] }
-
-// Values returns the values.
-func (a *{{.Name}}) {{.Name}}Values() []{{or .QualifiedType .Type}} { return a.values }
-
-// String returns a string representation of the array.
-func (a *{{.Name}}) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *{{.Name}}) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.{{.Name}}Traits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *{{.Name}}) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
-{{if or (eq .Name "Date32") (eq .Name "Date64") -}}
- return a.values[i].FormattedString()
-{{else if or (eq .Name "Time32") (eq .Name "Time64") -}}
- return a.values[i].FormattedString(a.DataType().(*{{.QualifiedType}}Type).Unit)
-{{else if (eq .Name "Duration") -}}
- // return value and suffix as a string such as "12345ms"
- return fmt.Sprintf("%d%s", a.values[i], a.DataType().(*{{.QualifiedType}}Type).Unit)
-{{else if or (eq .Name "Int8") (eq .Name "Int16") (eq .Name "Int32") (eq .Name "Int64") -}}
- return strconv.FormatInt(int64(a.Value(i)), 10)
-{{else if or (eq .Name "Uint8") (eq .Name "Uint16") (eq .Name "Uint32") (eq .Name "Uint64") -}}
- return strconv.FormatUint(uint64(a.Value(i)), 10)
-{{else if or (eq .Name "Float32") -}}
- return strconv.FormatFloat(float64(a.Value(i)), 'g', -1, 32)
-{{else if or (eq .Name "Float64") -}}
- return strconv.FormatFloat(float64(a.Value(i)), 'g', -1, 64)
-{{else}}
- return fmt.Sprintf("%v", a.values[i])
-{{end -}}
-}
-
-func (a *{{.Name}}) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-{{if or (eq .Name "Date32") (eq .Name "Date64") -}}
- return a.values[i].ToTime().Format("2006-01-02")
-{{else if or (eq .Name "Time32") (eq .Name "Time64") -}}
- return a.values[i].ToTime(a.DataType().(*{{.QualifiedType}}Type).Unit).Format("15:04:05.999999999")
-{{else if (eq .Name "Duration") -}}
- // return value and suffix as a string such as "12345ms"
- return fmt.Sprintf("%d%s", a.values[i], a.DataType().(*{{.QualifiedType}}Type).Unit.String())
-{{else if (eq .Size "1")}}
- return float64(a.values[i]) // prevent uint8 from being seen as binary data
-{{else}}
- return a.values[i]
-{{end -}}
-}
-
-func (a *{{.Name}}) MarshalJSON() ([]byte, error) {
-{{if .QualifiedType -}}
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-{{else -}}
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- {{ if (eq .Size "1") }}vals[i] = float64(a.values[i]) // prevent uint8 from being seen as binary data{{ else }}vals[i] = a.values[i]{{ end }}
- } else {
- vals[i] = nil
- }
- }
-{{end}}
- return json.Marshal(vals)
-}
-
-func arrayEqual{{.Name}}(left, right *{{.Name}}) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-{{end}}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go
deleted file mode 100644
index 52b189d6e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go
+++ /dev/null
@@ -1,3664 +0,0 @@
-// Code generated by array/numericbuilder.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strconv"
- "strings"
- "sync/atomic"
- "time"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type Int64Builder struct {
- builder
-
- data *memory.Buffer
- rawData []int64
-}
-
-func NewInt64Builder(mem memory.Allocator) *Int64Builder {
- return &Int64Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Int64Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Int64 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Int64Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Int64Builder) Append(v int64) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Int64Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Int64Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Int64Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Int64Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Int64Builder) UnsafeAppend(v int64) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Int64Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Int64Builder) AppendValues(v []int64, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Int64Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Int64Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Int64Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Int64Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Int64Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Int64Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Int64Traits.BytesRequired(n))
- b.rawData = arrow.Int64Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Int64Builder) Value(i int) int64 {
- return b.rawData[i]
-}
-
-// NewArray creates a Int64 array from the memory buffers used by the builder and resets the Int64Builder
-// so it can be used to build a new array.
-func (b *Int64Builder) NewArray() arrow.Array {
- return b.NewInt64Array()
-}
-
-// NewInt64Array creates a Int64 array from the memory buffers used by the builder and resets the Int64Builder
-// so it can be used to build a new array.
-func (b *Int64Builder) NewInt64Array() (a *Int64) {
- data := b.newData()
- a = NewInt64Data(data)
- data.Release()
- return
-}
-
-func (b *Int64Builder) newData() (data *Data) {
- bytesRequired := arrow.Int64Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Int64, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Int64Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseInt(s, 10, 8*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(int64(v))
- return nil
-}
-
-func (b *Int64Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseInt(v, 10, 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(int64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int64(f))
- case float64:
- b.Append(int64(v))
- case json.Number:
- f, err := strconv.ParseInt(v.String(), 10, 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(int64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int64(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(int64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Int64Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Int64Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Uint64Builder struct {
- builder
-
- data *memory.Buffer
- rawData []uint64
-}
-
-func NewUint64Builder(mem memory.Allocator) *Uint64Builder {
- return &Uint64Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Uint64Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Uint64 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Uint64Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Uint64Builder) Append(v uint64) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Uint64Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Uint64Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Uint64Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Uint64Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Uint64Builder) UnsafeAppend(v uint64) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Uint64Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Uint64Builder) AppendValues(v []uint64, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Uint64Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Uint64Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Uint64Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Uint64Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Uint64Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Uint64Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Uint64Traits.BytesRequired(n))
- b.rawData = arrow.Uint64Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Uint64Builder) Value(i int) uint64 {
- return b.rawData[i]
-}
-
-// NewArray creates a Uint64 array from the memory buffers used by the builder and resets the Uint64Builder
-// so it can be used to build a new array.
-func (b *Uint64Builder) NewArray() arrow.Array {
- return b.NewUint64Array()
-}
-
-// NewUint64Array creates a Uint64 array from the memory buffers used by the builder and resets the Uint64Builder
-// so it can be used to build a new array.
-func (b *Uint64Builder) NewUint64Array() (a *Uint64) {
- data := b.newData()
- a = NewUint64Data(data)
- data.Release()
- return
-}
-
-func (b *Uint64Builder) newData() (data *Data) {
- bytesRequired := arrow.Uint64Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Uint64, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Uint64Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseUint(s, 10, 8*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(uint64(v))
- return nil
-}
-
-func (b *Uint64Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseUint(v, 10, 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(uint64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint64(f))
- case float64:
- b.Append(uint64(v))
- case json.Number:
- f, err := strconv.ParseUint(v.String(), 10, 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(uint64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint64(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(uint64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Uint64Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Uint64Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Float64Builder struct {
- builder
-
- data *memory.Buffer
- rawData []float64
-}
-
-func NewFloat64Builder(mem memory.Allocator) *Float64Builder {
- return &Float64Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Float64Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Float64 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Float64Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Float64Builder) Append(v float64) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Float64Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Float64Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Float64Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Float64Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Float64Builder) UnsafeAppend(v float64) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Float64Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Float64Builder) AppendValues(v []float64, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Float64Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Float64Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Float64Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Float64Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Float64Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Float64Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Float64Traits.BytesRequired(n))
- b.rawData = arrow.Float64Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Float64Builder) Value(i int) float64 {
- return b.rawData[i]
-}
-
-// NewArray creates a Float64 array from the memory buffers used by the builder and resets the Float64Builder
-// so it can be used to build a new array.
-func (b *Float64Builder) NewArray() arrow.Array {
- return b.NewFloat64Array()
-}
-
-// NewFloat64Array creates a Float64 array from the memory buffers used by the builder and resets the Float64Builder
-// so it can be used to build a new array.
-func (b *Float64Builder) NewFloat64Array() (a *Float64) {
- data := b.newData()
- a = NewFloat64Data(data)
- data.Release()
- return
-}
-
-func (b *Float64Builder) newData() (data *Data) {
- bytesRequired := arrow.Float64Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Float64, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Float64Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseFloat(s, 8*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(float64(v))
- return nil
-}
-
-func (b *Float64Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseFloat(v, 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(float64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(float64(f))
- case float64:
- b.Append(float64(v))
- case json.Number:
- f, err := strconv.ParseFloat(v.String(), 8*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(float64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(float64(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(float64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Float64Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Float64Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Int32Builder struct {
- builder
-
- data *memory.Buffer
- rawData []int32
-}
-
-func NewInt32Builder(mem memory.Allocator) *Int32Builder {
- return &Int32Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Int32Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Int32 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Int32Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Int32Builder) Append(v int32) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Int32Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Int32Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Int32Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Int32Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Int32Builder) UnsafeAppend(v int32) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Int32Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Int32Builder) AppendValues(v []int32, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Int32Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Int32Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Int32Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Int32Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Int32Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Int32Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Int32Traits.BytesRequired(n))
- b.rawData = arrow.Int32Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Int32Builder) Value(i int) int32 {
- return b.rawData[i]
-}
-
-// NewArray creates a Int32 array from the memory buffers used by the builder and resets the Int32Builder
-// so it can be used to build a new array.
-func (b *Int32Builder) NewArray() arrow.Array {
- return b.NewInt32Array()
-}
-
-// NewInt32Array creates a Int32 array from the memory buffers used by the builder and resets the Int32Builder
-// so it can be used to build a new array.
-func (b *Int32Builder) NewInt32Array() (a *Int32) {
- data := b.newData()
- a = NewInt32Data(data)
- data.Release()
- return
-}
-
-func (b *Int32Builder) newData() (data *Data) {
- bytesRequired := arrow.Int32Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Int32, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Int32Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseInt(s, 10, 4*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(int32(v))
- return nil
-}
-
-func (b *Int32Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseInt(v, 10, 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(int32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int32(f))
- case float64:
- b.Append(int32(v))
- case json.Number:
- f, err := strconv.ParseInt(v.String(), 10, 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(int32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int32(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(int32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Int32Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Int32Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Uint32Builder struct {
- builder
-
- data *memory.Buffer
- rawData []uint32
-}
-
-func NewUint32Builder(mem memory.Allocator) *Uint32Builder {
- return &Uint32Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Uint32Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Uint32 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Uint32Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Uint32Builder) Append(v uint32) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Uint32Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Uint32Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Uint32Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Uint32Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Uint32Builder) UnsafeAppend(v uint32) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Uint32Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Uint32Builder) AppendValues(v []uint32, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Uint32Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Uint32Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Uint32Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Uint32Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Uint32Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Uint32Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Uint32Traits.BytesRequired(n))
- b.rawData = arrow.Uint32Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Uint32Builder) Value(i int) uint32 {
- return b.rawData[i]
-}
-
-// NewArray creates a Uint32 array from the memory buffers used by the builder and resets the Uint32Builder
-// so it can be used to build a new array.
-func (b *Uint32Builder) NewArray() arrow.Array {
- return b.NewUint32Array()
-}
-
-// NewUint32Array creates a Uint32 array from the memory buffers used by the builder and resets the Uint32Builder
-// so it can be used to build a new array.
-func (b *Uint32Builder) NewUint32Array() (a *Uint32) {
- data := b.newData()
- a = NewUint32Data(data)
- data.Release()
- return
-}
-
-func (b *Uint32Builder) newData() (data *Data) {
- bytesRequired := arrow.Uint32Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Uint32, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Uint32Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseUint(s, 10, 4*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(uint32(v))
- return nil
-}
-
-func (b *Uint32Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseUint(v, 10, 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(uint32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint32(f))
- case float64:
- b.Append(uint32(v))
- case json.Number:
- f, err := strconv.ParseUint(v.String(), 10, 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(uint32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint32(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(uint32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Uint32Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Uint32Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Float32Builder struct {
- builder
-
- data *memory.Buffer
- rawData []float32
-}
-
-func NewFloat32Builder(mem memory.Allocator) *Float32Builder {
- return &Float32Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Float32Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Float32 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Float32Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Float32Builder) Append(v float32) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Float32Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Float32Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Float32Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Float32Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Float32Builder) UnsafeAppend(v float32) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Float32Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Float32Builder) AppendValues(v []float32, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Float32Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Float32Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Float32Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Float32Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Float32Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Float32Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Float32Traits.BytesRequired(n))
- b.rawData = arrow.Float32Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Float32Builder) Value(i int) float32 {
- return b.rawData[i]
-}
-
-// NewArray creates a Float32 array from the memory buffers used by the builder and resets the Float32Builder
-// so it can be used to build a new array.
-func (b *Float32Builder) NewArray() arrow.Array {
- return b.NewFloat32Array()
-}
-
-// NewFloat32Array creates a Float32 array from the memory buffers used by the builder and resets the Float32Builder
-// so it can be used to build a new array.
-func (b *Float32Builder) NewFloat32Array() (a *Float32) {
- data := b.newData()
- a = NewFloat32Data(data)
- data.Release()
- return
-}
-
-func (b *Float32Builder) newData() (data *Data) {
- bytesRequired := arrow.Float32Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Float32, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Float32Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseFloat(s, 4*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(float32(v))
- return nil
-}
-
-func (b *Float32Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseFloat(v, 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(float32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(float32(f))
- case float64:
- b.Append(float32(v))
- case json.Number:
- f, err := strconv.ParseFloat(v.String(), 4*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(float32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(float32(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(float32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Float32Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Float32Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Int16Builder struct {
- builder
-
- data *memory.Buffer
- rawData []int16
-}
-
-func NewInt16Builder(mem memory.Allocator) *Int16Builder {
- return &Int16Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Int16Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Int16 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Int16Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Int16Builder) Append(v int16) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Int16Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Int16Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Int16Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Int16Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Int16Builder) UnsafeAppend(v int16) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Int16Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Int16Builder) AppendValues(v []int16, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Int16Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Int16Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Int16Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Int16Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Int16Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Int16Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Int16Traits.BytesRequired(n))
- b.rawData = arrow.Int16Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Int16Builder) Value(i int) int16 {
- return b.rawData[i]
-}
-
-// NewArray creates a Int16 array from the memory buffers used by the builder and resets the Int16Builder
-// so it can be used to build a new array.
-func (b *Int16Builder) NewArray() arrow.Array {
- return b.NewInt16Array()
-}
-
-// NewInt16Array creates a Int16 array from the memory buffers used by the builder and resets the Int16Builder
-// so it can be used to build a new array.
-func (b *Int16Builder) NewInt16Array() (a *Int16) {
- data := b.newData()
- a = NewInt16Data(data)
- data.Release()
- return
-}
-
-func (b *Int16Builder) newData() (data *Data) {
- bytesRequired := arrow.Int16Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Int16, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Int16Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseInt(s, 10, 2*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(int16(v))
- return nil
-}
-
-func (b *Int16Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseInt(v, 10, 2*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(int16(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int16(f))
- case float64:
- b.Append(int16(v))
- case json.Number:
- f, err := strconv.ParseInt(v.String(), 10, 2*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(int16(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int16(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(int16(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Int16Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Int16Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Uint16Builder struct {
- builder
-
- data *memory.Buffer
- rawData []uint16
-}
-
-func NewUint16Builder(mem memory.Allocator) *Uint16Builder {
- return &Uint16Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Uint16Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Uint16 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Uint16Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Uint16Builder) Append(v uint16) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Uint16Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Uint16Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Uint16Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Uint16Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Uint16Builder) UnsafeAppend(v uint16) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Uint16Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Uint16Builder) AppendValues(v []uint16, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Uint16Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Uint16Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Uint16Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Uint16Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Uint16Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Uint16Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Uint16Traits.BytesRequired(n))
- b.rawData = arrow.Uint16Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Uint16Builder) Value(i int) uint16 {
- return b.rawData[i]
-}
-
-// NewArray creates a Uint16 array from the memory buffers used by the builder and resets the Uint16Builder
-// so it can be used to build a new array.
-func (b *Uint16Builder) NewArray() arrow.Array {
- return b.NewUint16Array()
-}
-
-// NewUint16Array creates a Uint16 array from the memory buffers used by the builder and resets the Uint16Builder
-// so it can be used to build a new array.
-func (b *Uint16Builder) NewUint16Array() (a *Uint16) {
- data := b.newData()
- a = NewUint16Data(data)
- data.Release()
- return
-}
-
-func (b *Uint16Builder) newData() (data *Data) {
- bytesRequired := arrow.Uint16Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Uint16, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Uint16Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseUint(s, 10, 2*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(uint16(v))
- return nil
-}
-
-func (b *Uint16Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseUint(v, 10, 2*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(uint16(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint16(f))
- case float64:
- b.Append(uint16(v))
- case json.Number:
- f, err := strconv.ParseUint(v.String(), 10, 2*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(uint16(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint16(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(uint16(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Uint16Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Uint16Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Int8Builder struct {
- builder
-
- data *memory.Buffer
- rawData []int8
-}
-
-func NewInt8Builder(mem memory.Allocator) *Int8Builder {
- return &Int8Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Int8Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Int8 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Int8Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Int8Builder) Append(v int8) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Int8Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Int8Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Int8Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Int8Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Int8Builder) UnsafeAppend(v int8) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Int8Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Int8Builder) AppendValues(v []int8, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Int8Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Int8Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Int8Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Int8Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Int8Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Int8Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Int8Traits.BytesRequired(n))
- b.rawData = arrow.Int8Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Int8Builder) Value(i int) int8 {
- return b.rawData[i]
-}
-
-// NewArray creates a Int8 array from the memory buffers used by the builder and resets the Int8Builder
-// so it can be used to build a new array.
-func (b *Int8Builder) NewArray() arrow.Array {
- return b.NewInt8Array()
-}
-
-// NewInt8Array creates a Int8 array from the memory buffers used by the builder and resets the Int8Builder
-// so it can be used to build a new array.
-func (b *Int8Builder) NewInt8Array() (a *Int8) {
- data := b.newData()
- a = NewInt8Data(data)
- data.Release()
- return
-}
-
-func (b *Int8Builder) newData() (data *Data) {
- bytesRequired := arrow.Int8Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Int8, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Int8Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseInt(s, 10, 1*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(int8(v))
- return nil
-}
-
-func (b *Int8Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseInt(v, 10, 1*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(int8(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int8(f))
- case float64:
- b.Append(int8(v))
- case json.Number:
- f, err := strconv.ParseInt(v.String(), 10, 1*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(int8(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(int8(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(int8(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Int8Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Int8Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Uint8Builder struct {
- builder
-
- data *memory.Buffer
- rawData []uint8
-}
-
-func NewUint8Builder(mem memory.Allocator) *Uint8Builder {
- return &Uint8Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Uint8Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Uint8 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Uint8Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Uint8Builder) Append(v uint8) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Uint8Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Uint8Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Uint8Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Uint8Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Uint8Builder) UnsafeAppend(v uint8) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Uint8Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Uint8Builder) AppendValues(v []uint8, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Uint8Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Uint8Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Uint8Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Uint8Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Uint8Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Uint8Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Uint8Traits.BytesRequired(n))
- b.rawData = arrow.Uint8Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Uint8Builder) Value(i int) uint8 {
- return b.rawData[i]
-}
-
-// NewArray creates a Uint8 array from the memory buffers used by the builder and resets the Uint8Builder
-// so it can be used to build a new array.
-func (b *Uint8Builder) NewArray() arrow.Array {
- return b.NewUint8Array()
-}
-
-// NewUint8Array creates a Uint8 array from the memory buffers used by the builder and resets the Uint8Builder
-// so it can be used to build a new array.
-func (b *Uint8Builder) NewUint8Array() (a *Uint8) {
- data := b.newData()
- a = NewUint8Data(data)
- data.Release()
- return
-}
-
-func (b *Uint8Builder) newData() (data *Data) {
- bytesRequired := arrow.Uint8Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Uint8, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Uint8Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- v, err := strconv.ParseUint(s, 10, 1*8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(uint8(v))
- return nil
-}
-
-func (b *Uint8Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-
- case string:
- f, err := strconv.ParseUint(v, 10, 1*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(uint8(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint8(f))
- case float64:
- b.Append(uint8(v))
- case json.Number:
- f, err := strconv.ParseUint(v.String(), 10, 1*8)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(uint8(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(uint8(f))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(uint8(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Uint8Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Uint8Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Time32Builder struct {
- builder
-
- dtype *arrow.Time32Type
- data *memory.Buffer
- rawData []arrow.Time32
-}
-
-func NewTime32Builder(mem memory.Allocator, dtype *arrow.Time32Type) *Time32Builder {
- return &Time32Builder{builder: builder{refCount: 1, mem: mem}, dtype: dtype}
-}
-
-func (b *Time32Builder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Time32Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Time32Builder) Append(v arrow.Time32) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Time32Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Time32Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Time32Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Time32Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Time32Builder) UnsafeAppend(v arrow.Time32) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Time32Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Time32Builder) AppendValues(v []arrow.Time32, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Time32Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Time32Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Time32Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Time32Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Time32Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Time32Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Time32Traits.BytesRequired(n))
- b.rawData = arrow.Time32Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Time32Builder) Value(i int) arrow.Time32 {
- return b.rawData[i]
-}
-
-// NewArray creates a Time32 array from the memory buffers used by the builder and resets the Time32Builder
-// so it can be used to build a new array.
-func (b *Time32Builder) NewArray() arrow.Array {
- return b.NewTime32Array()
-}
-
-// NewTime32Array creates a Time32 array from the memory buffers used by the builder and resets the Time32Builder
-// so it can be used to build a new array.
-func (b *Time32Builder) NewTime32Array() (a *Time32) {
- data := b.newData()
- a = NewTime32Data(data)
- data.Release()
- return
-}
-
-func (b *Time32Builder) newData() (data *Data) {
- bytesRequired := arrow.Time32Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Time32Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- val, err := arrow.Time32FromString(s, b.dtype.Unit)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- return nil
-}
-
-func (b *Time32Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- tm, err := arrow.Time32FromString(v, b.dtype.Unit)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Time32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(tm)
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Time32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Time32(n))
- case float64:
- b.Append(arrow.Time32(v))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Time32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Time32Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Time32Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Time64Builder struct {
- builder
-
- dtype *arrow.Time64Type
- data *memory.Buffer
- rawData []arrow.Time64
-}
-
-func NewTime64Builder(mem memory.Allocator, dtype *arrow.Time64Type) *Time64Builder {
- return &Time64Builder{builder: builder{refCount: 1, mem: mem}, dtype: dtype}
-}
-
-func (b *Time64Builder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Time64Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Time64Builder) Append(v arrow.Time64) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Time64Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Time64Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Time64Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Time64Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Time64Builder) UnsafeAppend(v arrow.Time64) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Time64Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Time64Builder) AppendValues(v []arrow.Time64, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Time64Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Time64Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Time64Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Time64Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Time64Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Time64Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Time64Traits.BytesRequired(n))
- b.rawData = arrow.Time64Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Time64Builder) Value(i int) arrow.Time64 {
- return b.rawData[i]
-}
-
-// NewArray creates a Time64 array from the memory buffers used by the builder and resets the Time64Builder
-// so it can be used to build a new array.
-func (b *Time64Builder) NewArray() arrow.Array {
- return b.NewTime64Array()
-}
-
-// NewTime64Array creates a Time64 array from the memory buffers used by the builder and resets the Time64Builder
-// so it can be used to build a new array.
-func (b *Time64Builder) NewTime64Array() (a *Time64) {
- data := b.newData()
- a = NewTime64Data(data)
- data.Release()
- return
-}
-
-func (b *Time64Builder) newData() (data *Data) {
- bytesRequired := arrow.Time64Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Time64Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- val, err := arrow.Time64FromString(s, b.dtype.Unit)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- return nil
-}
-
-func (b *Time64Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- tm, err := arrow.Time64FromString(v, b.dtype.Unit)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Time64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(tm)
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Time64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Time64(n))
- case float64:
- b.Append(arrow.Time64(v))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Time64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Time64Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Time64Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Date32Builder struct {
- builder
-
- data *memory.Buffer
- rawData []arrow.Date32
-}
-
-func NewDate32Builder(mem memory.Allocator) *Date32Builder {
- return &Date32Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Date32Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Date32 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Date32Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Date32Builder) Append(v arrow.Date32) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Date32Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Date32Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Date32Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Date32Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Date32Builder) UnsafeAppend(v arrow.Date32) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Date32Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Date32Builder) AppendValues(v []arrow.Date32, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Date32Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Date32Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Date32Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Date32Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Date32Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Date32Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Date32Traits.BytesRequired(n))
- b.rawData = arrow.Date32Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Date32Builder) Value(i int) arrow.Date32 {
- return b.rawData[i]
-}
-
-// NewArray creates a Date32 array from the memory buffers used by the builder and resets the Date32Builder
-// so it can be used to build a new array.
-func (b *Date32Builder) NewArray() arrow.Array {
- return b.NewDate32Array()
-}
-
-// NewDate32Array creates a Date32 array from the memory buffers used by the builder and resets the Date32Builder
-// so it can be used to build a new array.
-func (b *Date32Builder) NewDate32Array() (a *Date32) {
- data := b.newData()
- a = NewDate32Data(data)
- data.Release()
- return
-}
-
-func (b *Date32Builder) newData() (data *Data) {
- bytesRequired := arrow.Date32Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Date32, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Date32Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- tm, err := time.Parse("2006-01-02", s)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(arrow.Date32FromTime(tm))
- return nil
-}
-
-func (b *Date32Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- tm, err := time.Parse("2006-01-02", v)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Date32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(arrow.Date32FromTime(tm))
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Date32(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Date32(n))
- case float64:
- b.Append(arrow.Date32(v))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Date32(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Date32Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Date32Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type Date64Builder struct {
- builder
-
- data *memory.Buffer
- rawData []arrow.Date64
-}
-
-func NewDate64Builder(mem memory.Allocator) *Date64Builder {
- return &Date64Builder{builder: builder{refCount: 1, mem: mem}}
-}
-
-func (b *Date64Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.Date64 }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Date64Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *Date64Builder) Append(v arrow.Date64) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *Date64Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *Date64Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *Date64Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *Date64Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *Date64Builder) UnsafeAppend(v arrow.Date64) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *Date64Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *Date64Builder) AppendValues(v []arrow.Date64, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.Date64Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *Date64Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.Date64Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.Date64Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *Date64Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *Date64Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.Date64Traits.BytesRequired(n))
- b.rawData = arrow.Date64Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *Date64Builder) Value(i int) arrow.Date64 {
- return b.rawData[i]
-}
-
-// NewArray creates a Date64 array from the memory buffers used by the builder and resets the Date64Builder
-// so it can be used to build a new array.
-func (b *Date64Builder) NewArray() arrow.Array {
- return b.NewDate64Array()
-}
-
-// NewDate64Array creates a Date64 array from the memory buffers used by the builder and resets the Date64Builder
-// so it can be used to build a new array.
-func (b *Date64Builder) NewDate64Array() (a *Date64) {
- data := b.newData()
- a = NewDate64Data(data)
- data.Release()
- return
-}
-
-func (b *Date64Builder) newData() (data *Data) {
- bytesRequired := arrow.Date64Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(arrow.PrimitiveTypes.Date64, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *Date64Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- tm, err := time.Parse("2006-01-02", s)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(arrow.Date64FromTime(tm))
- return nil
-}
-
-func (b *Date64Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- tm, err := time.Parse("2006-01-02", v)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Date64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(arrow.Date64FromTime(tm))
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Date64(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Date64(n))
- case float64:
- b.Append(arrow.Date64(v))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Date64(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *Date64Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *Date64Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type DurationBuilder struct {
- builder
-
- dtype *arrow.DurationType
- data *memory.Buffer
- rawData []arrow.Duration
-}
-
-func NewDurationBuilder(mem memory.Allocator, dtype *arrow.DurationType) *DurationBuilder {
- return &DurationBuilder{builder: builder{refCount: 1, mem: mem}, dtype: dtype}
-}
-
-func (b *DurationBuilder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *DurationBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *DurationBuilder) Append(v arrow.Duration) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *DurationBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *DurationBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *DurationBuilder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *DurationBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *DurationBuilder) UnsafeAppend(v arrow.Duration) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *DurationBuilder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *DurationBuilder) AppendValues(v []arrow.Duration, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.DurationTraits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *DurationBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.DurationTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.DurationTraits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *DurationBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *DurationBuilder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.DurationTraits.BytesRequired(n))
- b.rawData = arrow.DurationTraits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *DurationBuilder) Value(i int) arrow.Duration {
- return b.rawData[i]
-}
-
-// NewArray creates a Duration array from the memory buffers used by the builder and resets the DurationBuilder
-// so it can be used to build a new array.
-func (b *DurationBuilder) NewArray() arrow.Array {
- return b.NewDurationArray()
-}
-
-// NewDurationArray creates a Duration array from the memory buffers used by the builder and resets the DurationBuilder
-// so it can be used to build a new array.
-func (b *DurationBuilder) NewDurationArray() (a *Duration) {
- data := b.newData()
- a = NewDurationData(data)
- data.Release()
- return
-}
-
-func (b *DurationBuilder) newData() (data *Data) {
- bytesRequired := arrow.DurationTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *DurationBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- dur, err := time.ParseDuration(s)
- if err != nil {
- return err
- }
-
- b.Append(arrow.Duration(dur / b.dtype.Unit.Multiplier()))
- return nil
-}
-
-func (b *DurationBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Duration(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Duration(n))
- case float64:
- b.Append(arrow.Duration(v))
- case string:
- // be flexible for specifying durations by accepting forms like
- // 3h2m0.5s regardless of the unit and converting it to the proper
- // precision.
- val, err := time.ParseDuration(v)
- if err != nil {
- // if we got an error, maybe it was because the attempt to create
- // a time.Duration (int64) in nanoseconds would overflow. check if
- // the string is just a large number followed by the unit suffix
- if strings.HasSuffix(v, b.dtype.Unit.String()) {
- value, err := strconv.ParseInt(v[:len(v)-len(b.dtype.Unit.String())], 10, 64)
- if err == nil {
- b.Append(arrow.Duration(value))
- break
- }
- }
-
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Duration(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- switch b.dtype.Unit {
- case arrow.Nanosecond:
- b.Append(arrow.Duration(val.Nanoseconds()))
- case arrow.Microsecond:
- b.Append(arrow.Duration(val.Microseconds()))
- case arrow.Millisecond:
- b.Append(arrow.Duration(val.Milliseconds()))
- case arrow.Second:
- b.Append(arrow.Duration(val.Seconds()))
- }
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Duration(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *DurationBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *DurationBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ Builder = (*Int64Builder)(nil)
- _ Builder = (*Uint64Builder)(nil)
- _ Builder = (*Float64Builder)(nil)
- _ Builder = (*Int32Builder)(nil)
- _ Builder = (*Uint32Builder)(nil)
- _ Builder = (*Float32Builder)(nil)
- _ Builder = (*Int16Builder)(nil)
- _ Builder = (*Uint16Builder)(nil)
- _ Builder = (*Int8Builder)(nil)
- _ Builder = (*Uint8Builder)(nil)
- _ Builder = (*Time32Builder)(nil)
- _ Builder = (*Time64Builder)(nil)
- _ Builder = (*Date32Builder)(nil)
- _ Builder = (*Date64Builder)(nil)
- _ Builder = (*DurationBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go.tmpl
deleted file mode 100644
index 82ac35465..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen.go.tmpl
+++ /dev/null
@@ -1,447 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-{{range .In}}
-
-type {{.Name}}Builder struct {
- builder
-
-{{if .Opt.Parametric -}}
- dtype *arrow.{{.Name}}Type
-{{end -}}
- data *memory.Buffer
- rawData []{{or .QualifiedType .Type}}
-}
-
-{{if .Opt.Parametric}}
-func New{{.Name}}Builder(mem memory.Allocator, dtype *arrow.{{.Name}}Type) *{{.Name}}Builder {
- return &{{.Name}}Builder{builder: builder{refCount:1, mem: mem}, dtype: dtype}
-}
-
-func (b *{{.Name}}Builder) Type() arrow.DataType { return b.dtype }
-
-{{else}}
-func New{{.Name}}Builder(mem memory.Allocator) *{{.Name}}Builder {
- return &{{.Name}}Builder{builder: builder{refCount:1, mem: mem}}
-}
-
-func (b *{{.Name}}Builder) Type() arrow.DataType { return arrow.PrimitiveTypes.{{.Name}} }
-{{end}}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *{{.Name}}Builder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *{{.Name}}Builder) Append(v {{or .QualifiedType .Type}}) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *{{.Name}}Builder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *{{.Name}}Builder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *{{.Name}}Builder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *{{.Name}}Builder) AppendEmptyValues(n int) {
- for i := 0; i < n; i ++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *{{.Name}}Builder) UnsafeAppend(v {{or .QualifiedType .Type}}) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *{{.Name}}Builder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *{{.Name}}Builder) AppendValues(v []{{or .QualifiedType .Type}}, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.{{.Name}}Traits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *{{.Name}}Builder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.{{.Name}}Traits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.{{.Name}}Traits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *{{.Name}}Builder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *{{.Name}}Builder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.{{.Name}}Traits.BytesRequired(n))
- b.rawData = arrow.{{.Name}}Traits.CastFromBytes(b.data.Bytes())
- }
-}
-
-func (b *{{.Name}}Builder) Value(i int) {{or .QualifiedType .Type}} {
- return b.rawData[i]
-}
-
-// NewArray creates a {{.Name}} array from the memory buffers used by the builder and resets the {{.Name}}Builder
-// so it can be used to build a new array.
-func (b *{{.Name}}Builder) NewArray() arrow.Array {
- return b.New{{.Name}}Array()
-}
-
-// New{{.Name}}Array creates a {{.Name}} array from the memory buffers used by the builder and resets the {{.Name}}Builder
-// so it can be used to build a new array.
-func (b *{{.Name}}Builder) New{{.Name}}Array() (a *{{.Name}}) {
- data := b.newData()
- a = New{{.Name}}Data(data)
- data.Release()
- return
-}
-
-func (b *{{.Name}}Builder) newData() (data *Data) {
- bytesRequired := arrow.{{.Name}}Traits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
-{{if .Opt.Parametric -}}
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
-{{else -}}
- data = NewData(arrow.PrimitiveTypes.{{.Name}}, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
-{{end -}}
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *{{.Name}}Builder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- {{if or (eq .Name "Date32") -}}
- tm, err := time.Parse("2006-01-02", s)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(arrow.Date32FromTime(tm))
- {{else if or (eq .Name "Date64") -}}
- tm, err := time.Parse("2006-01-02", s)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(arrow.Date64FromTime(tm))
- {{else if or (eq .Name "Time32") -}}
- val, err := arrow.Time32FromString(s, b.dtype.Unit)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- {{else if or (eq .Name "Time64") -}}
- val, err := arrow.Time64FromString(s, b.dtype.Unit)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(val)
- {{else if (eq .Name "Duration") -}}
- dur, err := time.ParseDuration(s)
- if err != nil {
- return err
- }
-
- b.Append(arrow.Duration(dur / b.dtype.Unit.Multiplier()))
- {{else if or (eq .Name "Int8") (eq .Name "Int16") (eq .Name "Int32") (eq .Name "Int64") -}}
- v, err := strconv.ParseInt(s, 10, {{.Size}} * 8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append({{.name}}(v))
- {{else if or (eq .Name "Uint8") (eq .Name "Uint16") (eq .Name "Uint32") (eq .Name "Uint64") -}}
- v, err := strconv.ParseUint(s, 10, {{.Size}} * 8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append({{.name}}(v))
- {{else if or (eq .Name "Float32") (eq .Name "Float64") -}}
- v, err := strconv.ParseFloat(s, {{.Size}} * 8)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append({{.name}}(v))
- {{end -}}
- return nil
-}
-
-func (b *{{.Name}}Builder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
-{{if or (eq .Name "Date32") (eq .Name "Date64") -}}
- case string:
- tm, err := time.Parse("2006-01-02", v)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append({{.QualifiedType}}FromTime(tm))
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append({{.QualifiedType}}(n))
- case float64:
- b.Append({{.QualifiedType}}(v))
-{{else if or (eq .Name "Time32") (eq .Name "Time64") -}}
- case string:
- tm, err := {{.QualifiedType}}FromString(v, b.dtype.Unit)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(tm)
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append({{.QualifiedType}}(n))
- case float64:
- b.Append({{.QualifiedType}}(v))
-{{else if eq .Name "Duration" -}}
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append({{.QualifiedType}}(n))
- case float64:
- b.Append({{.QualifiedType}}(v))
- case string:
- // be flexible for specifying durations by accepting forms like
- // 3h2m0.5s regardless of the unit and converting it to the proper
- // precision.
- val, err := time.ParseDuration(v)
- if err != nil {
- // if we got an error, maybe it was because the attempt to create
- // a time.Duration (int64) in nanoseconds would overflow. check if
- // the string is just a large number followed by the unit suffix
- if strings.HasSuffix(v, b.dtype.Unit.String()) {
- value, err := strconv.ParseInt(v[:len(v)-len(b.dtype.Unit.String())], 10, 64)
- if err == nil {
- b.Append(arrow.Duration(value))
- break
- }
- }
-
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf({{.QualifiedType}}(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- switch b.dtype.Unit {
- case arrow.Nanosecond:
- b.Append({{.QualifiedType}}(val.Nanoseconds()))
- case arrow.Microsecond:
- b.Append({{.QualifiedType}}(val.Microseconds()))
- case arrow.Millisecond:
- b.Append({{.QualifiedType}}(val.Milliseconds()))
- case arrow.Second:
- b.Append({{.QualifiedType}}(val.Seconds()))
- }
-{{else}}
- case string:
-{{if or (eq .Name "Float32") (eq .Name "Float64") -}}
- f, err := strconv.ParseFloat(v, {{.Size}}*8)
-{{else if eq (printf "%.1s" .Name) "U" -}}
- f, err := strconv.ParseUint(v, 10, {{.Size}}*8)
-{{else -}}
- f, err := strconv.ParseInt(v, 10, {{.Size}}*8)
-{{end -}}
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf({{.name}}(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append({{.name}}(f))
- case float64:
- b.Append({{.name}}(v))
- case json.Number:
-{{if or (eq .Name "Float32") (eq .Name "Float64") -}}
- f, err := strconv.ParseFloat(v.String(), {{.Size}}*8)
-{{else if eq (printf "%.1s" .Name) "U" -}}
- f, err := strconv.ParseUint(v.String(), 10, {{.Size}}*8)
-{{else -}}
- f, err := strconv.ParseInt(v.String(), 10, {{.Size}}*8)
-{{end -}}
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf({{.name}}(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append({{.name}}(f))
-{{end}}
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf({{or .QualifiedType .Type}}(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *{{.Name}}Builder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *{{.Name}}Builder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-{{end}}
-
-var (
-{{- range .In}}
- _ Builder = (*{{.Name}}Builder)(nil)
-{{- end}}
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen_test.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen_test.go.tmpl
deleted file mode 100644
index eddd884e2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/numericbuilder.gen_test.go.tmpl
+++ /dev/null
@@ -1,276 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array_test
-
-import (
- "testing"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/stretchr/testify/assert"
-)
-
-{{range .In}}
-func Test{{.Name}}StringRoundTrip(t *testing.T) {
- // 1. create array
- mem := memory.NewCheckedAllocator(memory.NewGoAllocator())
- defer mem.AssertSize(t, 0)
-
-{{if .Opt.Parametric -}}
-{{ if or (eq .Name "Time64") -}}
- dt := &arrow.{{.Name}}Type{Unit: arrow.Microsecond}
-{{else -}}
- dt := &arrow.{{.Name}}Type{Unit: arrow.Second}
-{{end -}}
- b := array.New{{.Name}}Builder(mem, dt)
-{{else -}}
- b := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer b.Release()
-
- b.Append(1)
- b.Append(2)
- b.Append(3)
- b.AppendNull()
- b.Append(5)
- b.Append(6)
- b.AppendNull()
- b.Append(8)
- b.Append(9)
- b.Append(10)
-
- arr := b.NewArray().(*array.{{.Name}})
- defer arr.Release()
-
- // 2. create array via AppendValueFromString
-{{if .Opt.Parametric -}}
- b1 := array.New{{.Name}}Builder(mem, dt)
-{{else -}}
- b1 := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer b1.Release()
-
- for i := 0; i < arr.Len(); i++ {
- assert.NoError(t, b1.AppendValueFromString(arr.ValueStr(i)))
- }
-
- arr1 := b1.NewArray().(*array.{{.Name}})
- defer arr1.Release()
-
-{{ if or (eq .Name "Date64") -}}
- assert.Exactly(t, arr.Len(), arr1.Len())
- for i := 0; i < arr.Len(); i++ {
- assert.Exactly(t, arr.IsValid(i), arr1.IsValid(i))
- assert.Exactly(t, arr.ValueStr(i), arr1.ValueStr(i))
- if arr.IsValid(i) {
- assert.Exactly(t, arr.Value(i).ToTime(), arr1.Value(i).ToTime())
- }
- }
-{{else -}}
- assert.True(t, array.Equal(arr, arr1))
-{{end -}}
-}
-
-func TestNew{{.Name}}Builder(t *testing.T) {
- mem := memory.NewCheckedAllocator(memory.NewGoAllocator())
- defer mem.AssertSize(t, 0)
-
-{{if .Opt.Parametric -}}
- dtype := &arrow.{{.Name}}Type{Unit: arrow.Second}
- ab := array.New{{.Name}}Builder(mem, dtype)
-{{else}}
- ab := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer ab.Release()
-
- ab.Retain()
- ab.Release()
-
- ab.Append(1)
- ab.Append(2)
- ab.Append(3)
- ab.AppendNull()
- ab.Append(5)
- ab.Append(6)
- ab.AppendNull()
- ab.Append(8)
- ab.Append(9)
- ab.Append(10)
-
- // check state of builder before New{{.Name}}Array
- assert.Equal(t, 10, ab.Len(), "unexpected Len()")
- assert.Equal(t, 2, ab.NullN(), "unexpected NullN()")
-
- a := ab.New{{.Name}}Array()
-
- // check state of builder after New{{.Name}}Array
- assert.Zero(t, ab.Len(), "unexpected ArrayBuilder.Len(), New{{.Name}}Array did not reset state")
- assert.Zero(t, ab.Cap(), "unexpected ArrayBuilder.Cap(), New{{.Name}}Array did not reset state")
- assert.Zero(t, ab.NullN(), "unexpected ArrayBuilder.NullN(), New{{.Name}}Array did not reset state")
-
- // check state of array
- assert.Equal(t, 2, a.NullN(), "unexpected null count")
- assert.Equal(t, []{{or .QualifiedType .Type}}{1, 2, 3, 0, 5, 6, 0, 8, 9, 10}, a.{{.Name}}Values(), "unexpected {{.Name}}Values")
- assert.Equal(t, []byte{0xb7}, a.NullBitmapBytes()[:1]) // 4 bytes due to minBuilderCapacity
- assert.Len(t, a.{{.Name}}Values(), 10, "unexpected length of {{.Name}}Values")
-
- a.Release()
-
- ab.Append(7)
- ab.Append(8)
-
- a = ab.New{{.Name}}Array()
-
- assert.Equal(t, 0, a.NullN())
- assert.Equal(t, []{{or .QualifiedType .Type}}{7, 8}, a.{{.Name}}Values())
- assert.Len(t, a.{{.Name}}Values(), 2)
-
- a.Release()
-
- var (
- want = []{{or .QualifiedType .Type}}{1, 2, 3, 4}
- valids = []bool{true, true, false, true}
- )
-
- ab.AppendValues(want, valids)
- a = ab.New{{.Name}}Array()
-
- sub := array.MakeFromData(a.Data())
- defer sub.Release()
-
- if got, want := sub.DataType().ID(), a.DataType().ID(); got != want {
- t.Fatalf("invalid type: got=%q, want=%q", got, want)
- }
-
- if _, ok := sub.(*array.{{.Name}}); !ok {
- t.Fatalf("could not type-assert to array.{{.Name}}")
- }
-
- if got, want := a.String(), `[1 2 (null) 4]`; got != want {
- t.Fatalf("got=%q, want=%q", got, want)
- }
-
- slice := array.NewSliceData(a.Data(), 2, 4)
- defer slice.Release()
-
- sub1 := array.MakeFromData(slice)
- defer sub1.Release()
-
- v, ok := sub1.(*array.{{.Name}})
- if !ok {
- t.Fatalf("could not type-assert to array.{{.Name}}")
- }
-
- if got, want := v.String(), `[(null) 4]`; got != want {
- t.Fatalf("got=%q, want=%q", got, want)
- }
-
- a.Release()
-}
-
-func Test{{.Name}}Builder_AppendValues(t *testing.T) {
- mem := memory.NewCheckedAllocator(memory.NewGoAllocator())
- defer mem.AssertSize(t, 0)
-
-{{if .Opt.Parametric -}}
- dtype := &arrow.{{.Name}}Type{Unit: arrow.Second}
- ab := array.New{{.Name}}Builder(mem, dtype)
-{{else}}
- ab := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer ab.Release()
-
- exp := []{{or .QualifiedType .Type}}{0, 1, 2, 3}
- ab.AppendValues(exp, nil)
- a := ab.New{{.Name}}Array()
- assert.Equal(t, exp, a.{{.Name}}Values())
-
- a.Release()
-}
-
-func Test{{.Name}}Builder_Empty(t *testing.T) {
- mem := memory.NewCheckedAllocator(memory.NewGoAllocator())
- defer mem.AssertSize(t, 0)
-
-{{if .Opt.Parametric -}}
- dtype := &arrow.{{.Name}}Type{Unit: arrow.Second}
- ab := array.New{{.Name}}Builder(mem, dtype)
-{{else}}
- ab := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer ab.Release()
-
- exp := []{{or .QualifiedType .Type}}{0, 1, 2, 3}
-
- ab.AppendValues([]{{or .QualifiedType .Type}}{}, nil)
- a := ab.New{{.Name}}Array()
- assert.Zero(t, a.Len())
- a.Release()
-
- ab.AppendValues(nil, nil)
- a = ab.New{{.Name}}Array()
- assert.Zero(t, a.Len())
- a.Release()
-
- ab.AppendValues([]{{or .QualifiedType .Type}}{}, nil)
- ab.AppendValues(exp, nil)
- a = ab.New{{.Name}}Array()
- assert.Equal(t, exp, a.{{.Name}}Values())
- a.Release()
-
- ab.AppendValues(exp, nil)
- ab.AppendValues([]{{or .QualifiedType .Type}}{}, nil)
- a = ab.New{{.Name}}Array()
- assert.Equal(t, exp, a.{{.Name}}Values())
- a.Release()
-}
-
-func Test{{.Name}}Builder_Resize(t *testing.T) {
- mem := memory.NewCheckedAllocator(memory.NewGoAllocator())
- defer mem.AssertSize(t, 0)
-
-{{if .Opt.Parametric -}}
- dtype := &arrow.{{.Name}}Type{Unit: arrow.Second}
- ab := array.New{{.Name}}Builder(mem, dtype)
-{{else}}
- ab := array.New{{.Name}}Builder(mem)
-{{end -}}
- defer ab.Release()
-
- assert.Equal(t, 0, ab.Cap())
- assert.Equal(t, 0, ab.Len())
-
- ab.Reserve(63)
- assert.Equal(t, 64, ab.Cap())
- assert.Equal(t, 0, ab.Len())
-
- for i := 0; i < 63; i++ {
- ab.Append(0)
- }
- assert.Equal(t, 64, ab.Cap())
- assert.Equal(t, 63, ab.Len())
-
- ab.Resize(5)
- assert.Equal(t, 5, ab.Len())
-
- ab.Resize(32)
- assert.Equal(t, 5, ab.Len())
-}
-{{end}}
-
-
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/record.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/record.go
deleted file mode 100644
index f25e7c9a8..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/record.go
+++ /dev/null
@@ -1,411 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// RecordReader reads a stream of records.
-type RecordReader interface {
- Retain()
- Release()
-
- Schema() *arrow.Schema
-
- Next() bool
- Record() arrow.Record
- Err() error
-}
-
-// simpleRecords is a simple iterator over a collection of records.
-type simpleRecords struct {
- refCount int64
-
- schema *arrow.Schema
- recs []arrow.Record
- cur arrow.Record
-}
-
-// NewRecordReader returns a simple iterator over the given slice of records.
-func NewRecordReader(schema *arrow.Schema, recs []arrow.Record) (*simpleRecords, error) {
- rs := &simpleRecords{
- refCount: 1,
- schema: schema,
- recs: recs,
- cur: nil,
- }
-
- for _, rec := range rs.recs {
- rec.Retain()
- }
-
- for _, rec := range recs {
- if !rec.Schema().Equal(rs.schema) {
- rs.Release()
- return nil, fmt.Errorf("arrow/array: mismatch schema")
- }
- }
-
- return rs, nil
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (rs *simpleRecords) Retain() {
- atomic.AddInt64(&rs.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (rs *simpleRecords) Release() {
- debug.Assert(atomic.LoadInt64(&rs.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&rs.refCount, -1) == 0 {
- if rs.cur != nil {
- rs.cur.Release()
- }
- for _, rec := range rs.recs {
- rec.Release()
- }
- rs.recs = nil
- }
-}
-
-func (rs *simpleRecords) Schema() *arrow.Schema { return rs.schema }
-func (rs *simpleRecords) Record() arrow.Record { return rs.cur }
-func (rs *simpleRecords) Next() bool {
- if len(rs.recs) == 0 {
- return false
- }
- if rs.cur != nil {
- rs.cur.Release()
- }
- rs.cur = rs.recs[0]
- rs.recs = rs.recs[1:]
- return true
-}
-func (rs *simpleRecords) Err() error { return nil }
-
-// simpleRecord is a basic, non-lazy in-memory record batch.
-type simpleRecord struct {
- refCount int64
-
- schema *arrow.Schema
-
- rows int64
- arrs []arrow.Array
-}
-
-// NewRecord returns a basic, non-lazy in-memory record batch.
-//
-// NewRecord panics if the columns and schema are inconsistent.
-// NewRecord panics if rows is larger than the height of the columns.
-func NewRecord(schema *arrow.Schema, cols []arrow.Array, nrows int64) *simpleRecord {
- rec := &simpleRecord{
- refCount: 1,
- schema: schema,
- rows: nrows,
- arrs: make([]arrow.Array, len(cols)),
- }
- copy(rec.arrs, cols)
- for _, arr := range rec.arrs {
- arr.Retain()
- }
-
- if rec.rows < 0 {
- switch len(rec.arrs) {
- case 0:
- rec.rows = 0
- default:
- rec.rows = int64(rec.arrs[0].Len())
- }
- }
-
- err := rec.validate()
- if err != nil {
- rec.Release()
- panic(err)
- }
-
- return rec
-}
-
-func (rec *simpleRecord) SetColumn(i int, arr arrow.Array) (arrow.Record, error) {
- if i < 0 || i >= len(rec.arrs) {
- return nil, fmt.Errorf("arrow/array: column index out of range [0, %d): got=%d", len(rec.arrs), i)
- }
-
- if arr.Len() != int(rec.rows) {
- return nil, fmt.Errorf("arrow/array: mismatch number of rows in column %q: got=%d, want=%d",
- rec.schema.Field(i).Name,
- arr.Len(), rec.rows,
- )
- }
-
- f := rec.schema.Field(i)
- if !arrow.TypeEqual(f.Type, arr.DataType()) {
- return nil, fmt.Errorf("arrow/array: column %q type mismatch: got=%v, want=%v",
- f.Name,
- arr.DataType(), f.Type,
- )
- }
- arrs := make([]arrow.Array, len(rec.arrs))
- copy(arrs, rec.arrs)
- arrs[i] = arr
-
- return NewRecord(rec.schema, arrs, rec.rows), nil
-}
-
-func (rec *simpleRecord) validate() error {
- if rec.rows == 0 && len(rec.arrs) == 0 {
- return nil
- }
-
- if len(rec.arrs) != rec.schema.NumFields() {
- return fmt.Errorf("arrow/array: number of columns/fields mismatch")
- }
-
- for i, arr := range rec.arrs {
- f := rec.schema.Field(i)
- if int64(arr.Len()) < rec.rows {
- return fmt.Errorf("arrow/array: mismatch number of rows in column %q: got=%d, want=%d",
- f.Name,
- arr.Len(), rec.rows,
- )
- }
- if !arrow.TypeEqual(f.Type, arr.DataType()) {
- return fmt.Errorf("arrow/array: column %q type mismatch: got=%v, want=%v",
- f.Name,
- arr.DataType(), f.Type,
- )
- }
- }
- return nil
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (rec *simpleRecord) Retain() {
- atomic.AddInt64(&rec.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (rec *simpleRecord) Release() {
- debug.Assert(atomic.LoadInt64(&rec.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&rec.refCount, -1) == 0 {
- for _, arr := range rec.arrs {
- arr.Release()
- }
- rec.arrs = nil
- }
-}
-
-func (rec *simpleRecord) Schema() *arrow.Schema { return rec.schema }
-func (rec *simpleRecord) NumRows() int64 { return rec.rows }
-func (rec *simpleRecord) NumCols() int64 { return int64(len(rec.arrs)) }
-func (rec *simpleRecord) Columns() []arrow.Array { return rec.arrs }
-func (rec *simpleRecord) Column(i int) arrow.Array { return rec.arrs[i] }
-func (rec *simpleRecord) ColumnName(i int) string { return rec.schema.Field(i).Name }
-
-// NewSlice constructs a zero-copy slice of the record with the indicated
-// indices i and j, corresponding to array[i:j].
-// The returned record must be Release()'d after use.
-//
-// NewSlice panics if the slice is outside the valid range of the record array.
-// NewSlice panics if j < i.
-func (rec *simpleRecord) NewSlice(i, j int64) arrow.Record {
- arrs := make([]arrow.Array, len(rec.arrs))
- for ii, arr := range rec.arrs {
- arrs[ii] = NewSlice(arr, i, j)
- }
- defer func() {
- for _, arr := range arrs {
- arr.Release()
- }
- }()
- return NewRecord(rec.schema, arrs, j-i)
-}
-
-func (rec *simpleRecord) String() string {
- o := new(strings.Builder)
- fmt.Fprintf(o, "record:\n %v\n", rec.schema)
- fmt.Fprintf(o, " rows: %d\n", rec.rows)
- for i, col := range rec.arrs {
- fmt.Fprintf(o, " col[%d][%s]: %v\n", i, rec.schema.Field(i).Name, col)
- }
-
- return o.String()
-}
-
-func (rec *simpleRecord) MarshalJSON() ([]byte, error) {
- arr := RecordToStructArray(rec)
- defer arr.Release()
- return arr.MarshalJSON()
-}
-
-// RecordBuilder eases the process of building a Record, iteratively, from
-// a known Schema.
-type RecordBuilder struct {
- refCount int64
- mem memory.Allocator
- schema *arrow.Schema
- fields []Builder
-}
-
-// NewRecordBuilder returns a builder, using the provided memory allocator and a schema.
-func NewRecordBuilder(mem memory.Allocator, schema *arrow.Schema) *RecordBuilder {
- b := &RecordBuilder{
- refCount: 1,
- mem: mem,
- schema: schema,
- fields: make([]Builder, schema.NumFields()),
- }
-
- for i := 0; i < schema.NumFields(); i++ {
- b.fields[i] = NewBuilder(b.mem, schema.Field(i).Type)
- }
-
- return b
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (b *RecordBuilder) Retain() {
- atomic.AddInt64(&b.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-func (b *RecordBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- for _, f := range b.fields {
- f.Release()
- }
- b.fields = nil
- }
-}
-
-func (b *RecordBuilder) Schema() *arrow.Schema { return b.schema }
-func (b *RecordBuilder) Fields() []Builder { return b.fields }
-func (b *RecordBuilder) Field(i int) Builder { return b.fields[i] }
-
-func (b *RecordBuilder) Reserve(size int) {
- for _, f := range b.fields {
- f.Reserve(size)
- }
-}
-
-// NewRecord creates a new record from the memory buffers and resets the
-// RecordBuilder so it can be used to build a new record.
-//
-// The returned Record must be Release()'d after use.
-//
-// NewRecord panics if the fields' builder do not have the same length.
-func (b *RecordBuilder) NewRecord() arrow.Record {
- cols := make([]arrow.Array, len(b.fields))
- rows := int64(0)
-
- defer func(cols []arrow.Array) {
- for _, col := range cols {
- if col == nil {
- continue
- }
- col.Release()
- }
- }(cols)
-
- for i, f := range b.fields {
- cols[i] = f.NewArray()
- irow := int64(cols[i].Len())
- if i > 0 && irow != rows {
- panic(fmt.Errorf("arrow/array: field %d has %d rows. want=%d", i, irow, rows))
- }
- rows = irow
- }
-
- return NewRecord(b.schema, cols, rows)
-}
-
-// UnmarshalJSON for record builder will read in a single object and add the values
-// to each field in the recordbuilder, missing fields will get a null and unexpected
-// keys will be ignored. If reading in an array of records as a single batch, then use
-// a structbuilder and use RecordFromStruct.
-func (b *RecordBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- // should start with a '{'
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '{' {
- return fmt.Errorf("record should start with '{', not %s", t)
- }
-
- keylist := make(map[string]bool)
- for dec.More() {
- keyTok, err := dec.Token()
- if err != nil {
- return err
- }
-
- key := keyTok.(string)
- if keylist[key] {
- return fmt.Errorf("key %s shows up twice in row to be decoded", key)
- }
- keylist[key] = true
-
- indices := b.schema.FieldIndices(key)
- if len(indices) == 0 {
- var extra interface{}
- if err := dec.Decode(&extra); err != nil {
- return err
- }
- continue
- }
-
- if err := b.fields[indices[0]].UnmarshalOne(dec); err != nil {
- return err
- }
- }
-
- for i := 0; i < b.schema.NumFields(); i++ {
- if !keylist[b.schema.Field(i).Name] {
- b.fields[i].AppendNull()
- }
- }
- return nil
-}
-
-var (
- _ arrow.Record = (*simpleRecord)(nil)
- _ RecordReader = (*simpleRecords)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/string.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/string.go
deleted file mode 100644
index c8517ba30..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/string.go
+++ /dev/null
@@ -1,718 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strings"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-type StringLike interface {
- arrow.Array
- Value(int) string
- ValueLen(int) int
-}
-
-// String represents an immutable sequence of variable-length UTF-8 strings.
-type String struct {
- array
- offsets []int32
- values string
-}
-
-// NewStringData constructs a new String array from data.
-func NewStringData(data arrow.ArrayData) *String {
- a := &String{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the String with a different set of Data.
-func (a *String) Reset(data arrow.ArrayData) {
- a.setData(data.(*Data))
-}
-
-// Value returns the slice at index i. This value should not be mutated.
-func (a *String) Value(i int) string {
- i = i + a.array.data.offset
- return a.values[a.offsets[i]:a.offsets[i+1]]
-}
-
-func (a *String) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.Value(i)
-}
-
-// ValueOffset returns the offset of the value at index i.
-func (a *String) ValueOffset(i int) int {
- if i < 0 || i > a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return int(a.offsets[i+a.array.data.offset])
-}
-
-func (a *String) ValueOffset64(i int) int64 {
- return int64(a.ValueOffset(i))
-}
-
-func (a *String) ValueLen(i int) int {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- beg := a.array.data.offset + i
- return int(a.offsets[beg+1] - a.offsets[beg])
-}
-
-func (a *String) ValueOffsets() []int32 {
- beg := a.array.data.offset
- end := beg + a.array.data.length + 1
- return a.offsets[beg:end]
-}
-
-func (a *String) ValueBytes() []byte {
- beg := a.array.data.offset
- end := beg + a.array.data.length
- if a.array.data.buffers[2] != nil {
- return a.array.data.buffers[2].Bytes()[a.offsets[beg]:a.offsets[end]]
- }
- return nil
-}
-
-func (a *String) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%q", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *String) setData(data *Data) {
- if len(data.buffers) != 3 {
- panic("arrow/array: len(data.buffers) != 3")
- }
-
- a.array.setData(data)
-
- if vdata := data.buffers[2]; vdata != nil {
- b := vdata.Bytes()
- a.values = *(*string)(unsafe.Pointer(&b))
- }
-
- if offsets := data.buffers[1]; offsets != nil {
- a.offsets = arrow.Int32Traits.CastFromBytes(offsets.Bytes())
- }
-
- if a.array.data.length < 1 {
- return
- }
-
- expNumOffsets := a.array.data.offset + a.array.data.length + 1
- if len(a.offsets) < expNumOffsets {
- panic(fmt.Errorf("arrow/array: string offset buffer must have at least %d values", expNumOffsets))
- }
-
- if int(a.offsets[expNumOffsets-1]) > len(a.values) {
- panic("arrow/array: string offsets out of bounds of data buffer")
- }
-}
-
-func (a *String) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.Value(i)
- }
- return nil
-}
-
-func (a *String) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- if a.IsValid(i) {
- vals[i] = a.Value(i)
- } else {
- vals[i] = nil
- }
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualString(left, right *String) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-// String represents an immutable sequence of variable-length UTF-8 strings.
-type LargeString struct {
- array
- offsets []int64
- values string
-}
-
-// NewStringData constructs a new String array from data.
-func NewLargeStringData(data arrow.ArrayData) *LargeString {
- a := &LargeString{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the String with a different set of Data.
-func (a *LargeString) Reset(data arrow.ArrayData) {
- a.setData(data.(*Data))
-}
-
-// Value returns the slice at index i. This value should not be mutated.
-func (a *LargeString) Value(i int) string {
- i = i + a.array.data.offset
- return a.values[a.offsets[i]:a.offsets[i+1]]
-}
-
-func (a *LargeString) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.Value(i)
-}
-
-// ValueOffset returns the offset of the value at index i.
-func (a *LargeString) ValueOffset(i int) int64 {
- if i < 0 || i > a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return a.offsets[i+a.array.data.offset]
-}
-
-func (a *LargeString) ValueOffset64(i int) int64 {
- return a.ValueOffset(i)
-}
-
-func (a *LargeString) ValueLen(i int) int {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- beg := a.array.data.offset + i
- return int(a.offsets[beg+1] - a.offsets[beg])
-}
-
-func (a *LargeString) ValueOffsets() []int64 {
- beg := a.array.data.offset
- end := beg + a.array.data.length + 1
- return a.offsets[beg:end]
-}
-
-func (a *LargeString) ValueBytes() []byte {
- beg := a.array.data.offset
- end := beg + a.array.data.length
- if a.array.data.buffers[2] != nil {
- return a.array.data.buffers[2].Bytes()[a.offsets[beg]:a.offsets[end]]
- }
- return nil
-}
-
-func (a *LargeString) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%q", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *LargeString) setData(data *Data) {
- if len(data.buffers) != 3 {
- panic("arrow/array: len(data.buffers) != 3")
- }
-
- a.array.setData(data)
-
- if vdata := data.buffers[2]; vdata != nil {
- b := vdata.Bytes()
- a.values = *(*string)(unsafe.Pointer(&b))
- }
-
- if offsets := data.buffers[1]; offsets != nil {
- a.offsets = arrow.Int64Traits.CastFromBytes(offsets.Bytes())
- }
-
- if a.array.data.length < 1 {
- return
- }
-
- expNumOffsets := a.array.data.offset + a.array.data.length + 1
- if len(a.offsets) < expNumOffsets {
- panic(fmt.Errorf("arrow/array: string offset buffer must have at least %d values", expNumOffsets))
- }
-
- if int(a.offsets[expNumOffsets-1]) > len(a.values) {
- panic("arrow/array: string offsets out of bounds of data buffer")
- }
-}
-
-func (a *LargeString) GetOneForMarshal(i int) interface{} {
- if a.IsValid(i) {
- return a.Value(i)
- }
- return nil
-}
-
-func (a *LargeString) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualLargeString(left, right *LargeString) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type StringView struct {
- array
- values []arrow.ViewHeader
- dataBuffers []*memory.Buffer
-}
-
-func NewStringViewData(data arrow.ArrayData) *StringView {
- a := &StringView{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the String with a different set of Data.
-func (a *StringView) Reset(data arrow.ArrayData) {
- a.setData(data.(*Data))
-}
-
-func (a *StringView) setData(data *Data) {
- if len(data.buffers) < 2 {
- panic("len(data.buffers) < 2")
- }
- a.array.setData(data)
-
- if valueData := data.buffers[1]; valueData != nil {
- a.values = arrow.ViewHeaderTraits.CastFromBytes(valueData.Bytes())
- }
-
- a.dataBuffers = data.buffers[2:]
-}
-
-func (a *StringView) ValueHeader(i int) *arrow.ViewHeader {
- if i < 0 || i >= a.array.data.length {
- panic("arrow/array: index out of range")
- }
- return &a.values[a.array.data.offset+i]
-}
-
-func (a *StringView) Value(i int) string {
- s := a.ValueHeader(i)
- if s.IsInline() {
- return s.InlineString()
- }
- start := s.BufferOffset()
- buf := a.dataBuffers[s.BufferIndex()]
- value := buf.Bytes()[start : start+int32(s.Len())]
- return *(*string)(unsafe.Pointer(&value))
-}
-
-func (a *StringView) ValueLen(i int) int {
- s := a.ValueHeader(i)
- return s.Len()
-}
-
-func (a *StringView) String() string {
- var o strings.Builder
- o.WriteString("[")
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- o.WriteString(" ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(&o, "%q", a.Value(i))
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *StringView) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
- return a.Value(i)
-}
-
-func (a *StringView) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.Value(i)
-}
-
-func (a *StringView) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := 0; i < a.Len(); i++ {
- vals[i] = a.GetOneForMarshal(i)
- }
- return json.Marshal(vals)
-}
-
-func arrayEqualStringView(left, right *StringView) bool {
- leftBufs, rightBufs := left.dataBuffers, right.dataBuffers
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if !left.ValueHeader(i).Equals(leftBufs, right.ValueHeader(i), rightBufs) {
- return false
- }
- }
- return true
-}
-
-// A StringBuilder is used to build a String array using the Append methods.
-type StringBuilder struct {
- *BinaryBuilder
-}
-
-// NewStringBuilder creates a new StringBuilder.
-func NewStringBuilder(mem memory.Allocator) *StringBuilder {
- b := &StringBuilder{
- BinaryBuilder: NewBinaryBuilder(mem, arrow.BinaryTypes.String),
- }
- return b
-}
-
-func (b *StringBuilder) Type() arrow.DataType {
- return arrow.BinaryTypes.String
-}
-
-// Append appends a string to the builder.
-func (b *StringBuilder) Append(v string) {
- b.BinaryBuilder.Append([]byte(v))
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *StringBuilder) AppendValues(v []string, valid []bool) {
- b.BinaryBuilder.AppendStringValues(v, valid)
-}
-
-// Value returns the string at index i.
-func (b *StringBuilder) Value(i int) string {
- return string(b.BinaryBuilder.Value(i))
-}
-
-// NewArray creates a String array from the memory buffers used by the builder and resets the StringBuilder
-// so it can be used to build a new array.
-func (b *StringBuilder) NewArray() arrow.Array {
- return b.NewStringArray()
-}
-
-// NewStringArray creates a String array from the memory buffers used by the builder and resets the StringBuilder
-// so it can be used to build a new array.
-func (b *StringBuilder) NewStringArray() (a *String) {
- data := b.newData()
- a = NewStringData(data)
- data.Release()
- return
-}
-
-func (b *StringBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- b.Append(v)
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(v),
- Type: reflect.TypeOf(string("")),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *StringBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *StringBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("string builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-// A LargeStringBuilder is used to build a LargeString array using the Append methods.
-// LargeString is for when you need the offset buffer to be 64-bit integers
-// instead of 32-bit integers.
-type LargeStringBuilder struct {
- *BinaryBuilder
-}
-
-// NewStringBuilder creates a new StringBuilder.
-func NewLargeStringBuilder(mem memory.Allocator) *LargeStringBuilder {
- b := &LargeStringBuilder{
- BinaryBuilder: NewBinaryBuilder(mem, arrow.BinaryTypes.LargeString),
- }
- return b
-}
-
-func (b *LargeStringBuilder) Type() arrow.DataType { return arrow.BinaryTypes.LargeString }
-
-// Append appends a string to the builder.
-func (b *LargeStringBuilder) Append(v string) {
- b.BinaryBuilder.Append([]byte(v))
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *LargeStringBuilder) AppendValues(v []string, valid []bool) {
- b.BinaryBuilder.AppendStringValues(v, valid)
-}
-
-// Value returns the string at index i.
-func (b *LargeStringBuilder) Value(i int) string {
- return string(b.BinaryBuilder.Value(i))
-}
-
-// NewArray creates a String array from the memory buffers used by the builder and resets the StringBuilder
-// so it can be used to build a new array.
-func (b *LargeStringBuilder) NewArray() arrow.Array {
- return b.NewLargeStringArray()
-}
-
-// NewStringArray creates a String array from the memory buffers used by the builder and resets the StringBuilder
-// so it can be used to build a new array.
-func (b *LargeStringBuilder) NewLargeStringArray() (a *LargeString) {
- data := b.newData()
- a = NewLargeStringData(data)
- data.Release()
- return
-}
-
-func (b *LargeStringBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- b.Append(v)
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(v),
- Type: reflect.TypeOf(string("")),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *LargeStringBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *LargeStringBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("string builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-type StringViewBuilder struct {
- *BinaryViewBuilder
-}
-
-func NewStringViewBuilder(mem memory.Allocator) *StringViewBuilder {
- bldr := &StringViewBuilder{
- BinaryViewBuilder: NewBinaryViewBuilder(mem),
- }
- bldr.dtype = arrow.BinaryTypes.StringView
- return bldr
-}
-
-func (b *StringViewBuilder) Append(v string) {
- b.BinaryViewBuilder.AppendString(v)
-}
-
-func (b *StringViewBuilder) AppendValues(v []string, valid []bool) {
- b.BinaryViewBuilder.AppendStringValues(v, valid)
-}
-
-func (b *StringViewBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case string:
- b.Append(v)
- case []byte:
- b.BinaryViewBuilder.Append(v)
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf([]byte{}),
- Offset: dec.InputOffset(),
- }
- }
- return nil
-}
-
-func (b *StringViewBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *StringViewBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary view builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-func (b *StringViewBuilder) NewArray() arrow.Array {
- return b.NewStringViewArray()
-}
-
-func (b *StringViewBuilder) NewStringViewArray() (a *StringView) {
- data := b.newData()
- a = NewStringViewData(data)
- data.Release()
- return
-}
-
-type StringLikeBuilder interface {
- Builder
- Append(string)
- AppendValues([]string, []bool)
- UnsafeAppend([]byte)
- ReserveData(int)
-}
-
-var (
- _ arrow.Array = (*String)(nil)
- _ arrow.Array = (*LargeString)(nil)
- _ arrow.Array = (*StringView)(nil)
- _ Builder = (*StringBuilder)(nil)
- _ Builder = (*LargeStringBuilder)(nil)
- _ Builder = (*StringViewBuilder)(nil)
- _ StringLikeBuilder = (*StringBuilder)(nil)
- _ StringLikeBuilder = (*LargeStringBuilder)(nil)
- _ StringLikeBuilder = (*StringViewBuilder)(nil)
- _ StringLike = (*String)(nil)
- _ StringLike = (*LargeString)(nil)
- _ StringLike = (*StringView)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/struct.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/struct.go
deleted file mode 100644
index 5e723c9dc..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/struct.go
+++ /dev/null
@@ -1,491 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "errors"
- "fmt"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Struct represents an ordered sequence of relative types.
-type Struct struct {
- array
- fields []arrow.Array
-}
-
-// NewStructArray constructs a new Struct Array out of the columns passed
-// in and the field names. The length of all cols must be the same and
-// there should be the same number of columns as names.
-func NewStructArray(cols []arrow.Array, names []string) (*Struct, error) {
- return NewStructArrayWithNulls(cols, names, nil, 0, 0)
-}
-
-// NewStructArrayWithNulls is like NewStructArray as a convenience function,
-// but also takes in a null bitmap, the number of nulls, and an optional offset
-// to use for creating the Struct Array.
-func NewStructArrayWithNulls(cols []arrow.Array, names []string, nullBitmap *memory.Buffer, nullCount int, offset int) (*Struct, error) {
- if len(cols) != len(names) {
- return nil, fmt.Errorf("%w: mismatching number of fields and child arrays", arrow.ErrInvalid)
- }
- if len(cols) == 0 {
- return nil, fmt.Errorf("%w: can't infer struct array length with 0 child arrays", arrow.ErrInvalid)
- }
- length := cols[0].Len()
- children := make([]arrow.ArrayData, len(cols))
- fields := make([]arrow.Field, len(cols))
- for i, c := range cols {
- if length != c.Len() {
- return nil, fmt.Errorf("%w: mismatching child array lengths", arrow.ErrInvalid)
- }
- children[i] = c.Data()
- fields[i].Name = names[i]
- fields[i].Type = c.DataType()
- fields[i].Nullable = true
- }
- data := NewData(arrow.StructOf(fields...), length, []*memory.Buffer{nullBitmap}, children, nullCount, offset)
- defer data.Release()
- return NewStructData(data), nil
-}
-
-// NewStructData returns a new Struct array value from data.
-func NewStructData(data arrow.ArrayData) *Struct {
- a := &Struct{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-func (a *Struct) NumField() int { return len(a.fields) }
-func (a *Struct) Field(i int) arrow.Array { return a.fields[i] }
-
-// ValueStr returns the string representation (as json) of the value at index i.
-func (a *Struct) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
-
- data, err := json.Marshal(a.GetOneForMarshal(i))
- if err != nil {
- panic(err)
- }
- return string(data)
-}
-
-func (a *Struct) String() string {
- o := new(strings.Builder)
- o.WriteString("{")
-
- structBitmap := a.NullBitmapBytes()
- for i, v := range a.fields {
- if i > 0 {
- o.WriteString(" ")
- }
- if arrow.IsUnion(v.DataType().ID()) {
- fmt.Fprintf(o, "%v", v)
- continue
- } else if !bytes.Equal(structBitmap, v.NullBitmapBytes()) {
- masked := a.newStructFieldWithParentValidityMask(i)
- fmt.Fprintf(o, "%v", masked)
- masked.Release()
- continue
- }
- fmt.Fprintf(o, "%v", v)
- }
- o.WriteString("}")
- return o.String()
-}
-
-// newStructFieldWithParentValidityMask returns the Interface at fieldIndex
-// with a nullBitmapBytes adjusted according on the parent struct nullBitmapBytes.
-// From the docs:
-//
-// "When reading the struct array the parent validity bitmap takes priority."
-func (a *Struct) newStructFieldWithParentValidityMask(fieldIndex int) arrow.Array {
- field := a.Field(fieldIndex)
- nullBitmapBytes := field.NullBitmapBytes()
- maskedNullBitmapBytes := make([]byte, len(nullBitmapBytes))
- copy(maskedNullBitmapBytes, nullBitmapBytes)
- for i := 0; i < field.Len(); i++ {
- if a.IsNull(i) {
- bitutil.ClearBit(maskedNullBitmapBytes, i)
- }
- }
- data := NewSliceData(field.Data(), 0, int64(field.Len())).(*Data)
- defer data.Release()
- bufs := make([]*memory.Buffer, len(data.Buffers()))
- copy(bufs, data.buffers)
- bufs[0].Release()
- bufs[0] = memory.NewBufferBytes(maskedNullBitmapBytes)
- data.buffers = bufs
- maskedField := MakeFromData(data)
- return maskedField
-}
-
-func (a *Struct) setData(data *Data) {
- a.array.setData(data)
- a.fields = make([]arrow.Array, len(data.childData))
- for i, child := range data.childData {
- if data.offset != 0 || child.Len() != data.length {
- sub := NewSliceData(child, int64(data.offset), int64(data.offset+data.length))
- a.fields[i] = MakeFromData(sub)
- sub.Release()
- } else {
- a.fields[i] = MakeFromData(child)
- }
- }
-}
-
-func (a *Struct) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
-
- tmp := make(map[string]interface{})
- fieldList := a.data.dtype.(*arrow.StructType).Fields()
- for j, d := range a.fields {
- tmp[fieldList[j].Name] = d.GetOneForMarshal(i)
- }
- return tmp
-}
-
-func (a *Struct) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func arrayEqualStruct(left, right *Struct) bool {
- for i, lf := range left.fields {
- rf := right.fields[i]
- if !Equal(lf, rf) {
- return false
- }
- }
- return true
-}
-
-func (a *Struct) Retain() {
- a.array.Retain()
- for _, f := range a.fields {
- f.Retain()
- }
-}
-
-func (a *Struct) Release() {
- a.array.Release()
- for _, f := range a.fields {
- f.Release()
- }
-}
-
-type StructBuilder struct {
- builder
-
- dtype arrow.DataType
- fields []Builder
-}
-
-// NewStructBuilder returns a builder, using the provided memory allocator.
-func NewStructBuilder(mem memory.Allocator, dtype *arrow.StructType) *StructBuilder {
- b := &StructBuilder{
- builder: builder{refCount: 1, mem: mem},
- dtype: dtype,
- fields: make([]Builder, dtype.NumFields()),
- }
- for i, f := range dtype.Fields() {
- b.fields[i] = NewBuilder(b.mem, f.Type)
- }
- return b
-}
-
-func (b *StructBuilder) Type() arrow.DataType {
- fields := make([]arrow.Field, len(b.fields))
- copy(fields, b.dtype.(*arrow.StructType).Fields())
- for i, b := range b.fields {
- fields[i].Type = b.Type()
- }
- return arrow.StructOf(fields...)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *StructBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
-
- for _, f := range b.fields {
- f.Release()
- }
- }
-}
-
-func (b *StructBuilder) Append(v bool) {
- // Intentionally not calling `Reserve` as it will recursively call
- // `Reserve` on the child builders, which during profiling has shown to be
- // very expensive due to iterating over children, dynamic dispatch and all
- // other code that gets executed even if previously `Reserve` was called to
- // preallocate. Not calling `Reserve` has no downsides as when appending to
- // the underlying children they already ensure they have enough space
- // reserved. The only thing we must do is ensure we have enough space in
- // the validity bitmap of the struct builder itself.
- b.builder.reserve(1, b.resizeHelper)
- b.unsafeAppendBoolToBitmap(v)
- if !v {
- for _, f := range b.fields {
- f.AppendNull()
- }
- }
-}
-
-func (b *StructBuilder) AppendValues(valids []bool) {
- b.Reserve(len(valids))
- b.builder.unsafeAppendBoolsToBitmap(valids, len(valids))
-}
-
-func (b *StructBuilder) AppendNull() { b.Append(false) }
-
-func (b *StructBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *StructBuilder) AppendEmptyValue() {
- b.Append(true)
- for _, f := range b.fields {
- f.AppendEmptyValue()
- }
-}
-
-func (b *StructBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *StructBuilder) unsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-func (b *StructBuilder) init(capacity int) {
- b.builder.init(capacity)
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *StructBuilder) Reserve(n int) {
- b.builder.reserve(n, b.resizeHelper)
- for _, f := range b.fields {
- f.Reserve(n)
- }
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *StructBuilder) Resize(n int) {
- b.resizeHelper(n)
- for _, f := range b.fields {
- f.Resize(n)
- }
-}
-
-func (b *StructBuilder) resizeHelper(n int) {
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(n, b.builder.init)
- }
-}
-
-func (b *StructBuilder) NumField() int { return len(b.fields) }
-func (b *StructBuilder) FieldBuilder(i int) Builder { return b.fields[i] }
-
-// NewArray creates a Struct array from the memory buffers used by the builder and resets the StructBuilder
-// so it can be used to build a new array.
-func (b *StructBuilder) NewArray() arrow.Array {
- return b.NewStructArray()
-}
-
-// NewStructArray creates a Struct array from the memory buffers used by the builder and resets the StructBuilder
-// so it can be used to build a new array.
-func (b *StructBuilder) NewStructArray() (a *Struct) {
- data := b.newData()
- a = NewStructData(data)
- data.Release()
- return
-}
-
-func (b *StructBuilder) newData() (data *Data) {
- fields := make([]arrow.ArrayData, len(b.fields))
- for i, f := range b.fields {
- arr := f.NewArray()
- defer arr.Release()
- fields[i] = arr.Data()
- }
-
- data = NewData(
- b.Type(), b.length,
- []*memory.Buffer{
- b.nullBitmap,
- },
- fields,
- b.nulls,
- 0,
- )
- b.reset()
-
- return
-}
-
-func (b *StructBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- if !strings.HasPrefix(s, "{") && !strings.HasSuffix(s, "}") {
- return fmt.Errorf("%w: invalid string for struct should be be of form: {*}", arrow.ErrInvalid)
- }
- dec := json.NewDecoder(strings.NewReader(s))
- return b.UnmarshalOne(dec)
-}
-
-func (b *StructBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('{'):
- b.Append(true)
- keylist := make(map[string]bool)
- for dec.More() {
- keyTok, err := dec.Token()
- if err != nil {
- return err
- }
-
- key, ok := keyTok.(string)
- if !ok {
- return errors.New("missing key")
- }
-
- if keylist[key] {
- return fmt.Errorf("key %s is specified twice", key)
- }
-
- keylist[key] = true
-
- idx, ok := b.dtype.(*arrow.StructType).FieldIdx(key)
- if !ok {
- var extra interface{}
- dec.Decode(&extra)
- continue
- }
-
- if err := b.fields[idx].UnmarshalOne(dec); err != nil {
- return err
- }
- }
-
- // Append null values to all optional fields that were not presented in the json input
- for _, field := range b.dtype.(*arrow.StructType).Fields() {
- if !field.Nullable {
- continue
- }
- idx, _ := b.dtype.(*arrow.StructType).FieldIdx(field.Name)
- if _, hasKey := keylist[field.Name]; !hasKey {
- b.fields[idx].AppendNull()
- }
- }
-
- // consume '}'
- _, err := dec.Token()
- return err
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Struct: fmt.Sprint(b.dtype),
- }
- }
- return nil
-}
-
-func (b *StructBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *StructBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("struct builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Struct)(nil)
- _ Builder = (*StructBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/table.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/table.go
deleted file mode 100644
index b34650e18..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/table.go
+++ /dev/null
@@ -1,421 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "errors"
- "fmt"
- "math"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-// NewColumnSlice returns a new zero-copy slice of the column with the indicated
-// indices i and j, corresponding to the column's array[i:j].
-// The returned column must be Release()'d after use.
-//
-// NewColSlice panics if the slice is outside the valid range of the column's array.
-// NewColSlice panics if j < i.
-func NewColumnSlice(col *arrow.Column, i, j int64) *arrow.Column {
- slice := NewChunkedSlice(col.Data(), i, j)
- defer slice.Release()
- return arrow.NewColumn(col.Field(), slice)
-}
-
-// NewChunkedSlice constructs a zero-copy slice of the chunked array with the indicated
-// indices i and j, corresponding to array[i:j].
-// The returned chunked array must be Release()'d after use.
-//
-// NewSlice panics if the slice is outside the valid range of the input array.
-// NewSlice panics if j < i.
-func NewChunkedSlice(a *arrow.Chunked, i, j int64) *arrow.Chunked {
- if j > int64(a.Len()) || i > j || i > int64(a.Len()) {
- panic("arrow/array: index out of range")
- }
-
- var (
- cur = 0
- beg = i
- sz = j - i
- chunks = make([]arrow.Array, 0, len(a.Chunks()))
- )
-
- for cur < len(a.Chunks()) && beg >= int64(a.Chunks()[cur].Len()) {
- beg -= int64(a.Chunks()[cur].Len())
- cur++
- }
-
- for cur < len(a.Chunks()) && sz > 0 {
- arr := a.Chunks()[cur]
- end := beg + sz
- if end > int64(arr.Len()) {
- end = int64(arr.Len())
- }
- chunks = append(chunks, NewSlice(arr, beg, end))
- sz -= int64(arr.Len()) - beg
- beg = 0
- cur++
- }
- chunks = chunks[:len(chunks):len(chunks)]
- defer func() {
- for _, chunk := range chunks {
- chunk.Release()
- }
- }()
-
- return arrow.NewChunked(a.DataType(), chunks)
-}
-
-// simpleTable is a basic, non-lazy in-memory table.
-type simpleTable struct {
- refCount int64
-
- rows int64
- cols []arrow.Column
-
- schema *arrow.Schema
-}
-
-// NewTable returns a new basic, non-lazy in-memory table.
-// If rows is negative, the number of rows will be inferred from the height
-// of the columns.
-//
-// NewTable panics if the columns and schema are inconsistent.
-// NewTable panics if rows is larger than the height of the columns.
-func NewTable(schema *arrow.Schema, cols []arrow.Column, rows int64) *simpleTable {
- tbl := simpleTable{
- refCount: 1,
- rows: rows,
- cols: cols,
- schema: schema,
- }
-
- if tbl.rows < 0 {
- switch len(tbl.cols) {
- case 0:
- tbl.rows = 0
- default:
- tbl.rows = int64(tbl.cols[0].Len())
- }
- }
-
- // validate the table and its constituents.
- // note we retain the columns after having validated the table
- // in case the validation fails and panics (and would otherwise leak
- // a ref-count on the columns.)
- tbl.validate()
-
- for i := range tbl.cols {
- tbl.cols[i].Retain()
- }
-
- return &tbl
-}
-
-// NewTableFromSlice is a convenience function to create a table from a slice
-// of slices of arrow.Array.
-//
-// Like other NewTable functions this can panic if:
-// - len(schema.Fields) != len(data)
-// - the total length of each column's array slice (ie: number of rows
-// in the column) aren't the same for all columns.
-func NewTableFromSlice(schema *arrow.Schema, data [][]arrow.Array) *simpleTable {
- if len(data) != schema.NumFields() {
- panic("array/table: mismatch in number of columns and data for creating a table")
- }
-
- cols := make([]arrow.Column, schema.NumFields())
- for i, arrs := range data {
- field := schema.Field(i)
- chunked := arrow.NewChunked(field.Type, arrs)
- cols[i] = *arrow.NewColumn(field, chunked)
- chunked.Release()
- }
-
- tbl := simpleTable{
- refCount: 1,
- schema: schema,
- cols: cols,
- rows: int64(cols[0].Len()),
- }
-
- defer func() {
- if r := recover(); r != nil {
- // if validate panics, let's release the columns
- // so that we don't leak them, then propagate the panic
- for _, c := range cols {
- c.Release()
- }
- panic(r)
- }
- }()
- // validate the table and its constituents.
- tbl.validate()
-
- return &tbl
-}
-
-// NewTableFromRecords returns a new basic, non-lazy in-memory table.
-//
-// NewTableFromRecords panics if the records and schema are inconsistent.
-func NewTableFromRecords(schema *arrow.Schema, recs []arrow.Record) *simpleTable {
- arrs := make([]arrow.Array, len(recs))
- cols := make([]arrow.Column, schema.NumFields())
-
- defer func(cols []arrow.Column) {
- for i := range cols {
- cols[i].Release()
- }
- }(cols)
-
- for i := range cols {
- field := schema.Field(i)
- for j, rec := range recs {
- arrs[j] = rec.Column(i)
- }
- chunk := arrow.NewChunked(field.Type, arrs)
- cols[i] = *arrow.NewColumn(field, chunk)
- chunk.Release()
- }
-
- return NewTable(schema, cols, -1)
-}
-
-func (tbl *simpleTable) Schema() *arrow.Schema { return tbl.schema }
-
-func (tbl *simpleTable) AddColumn(i int, field arrow.Field, column arrow.Column) (arrow.Table, error) {
- if int64(column.Len()) != tbl.rows {
- return nil, fmt.Errorf("arrow/array: column length mismatch: %d != %d", column.Len(), tbl.rows)
- }
- if field.Type != column.DataType() {
- return nil, fmt.Errorf("arrow/array: column type mismatch: %v != %v", field.Type, column.DataType())
- }
- newSchema, err := tbl.schema.AddField(i, field)
- if err != nil {
- return nil, err
- }
- cols := make([]arrow.Column, len(tbl.cols)+1)
- copy(cols[:i], tbl.cols[:i])
- cols[i] = column
- copy(cols[i+1:], tbl.cols[i:])
- newTable := NewTable(newSchema, cols, tbl.rows)
- return newTable, nil
-}
-
-func (tbl *simpleTable) NumRows() int64 { return tbl.rows }
-func (tbl *simpleTable) NumCols() int64 { return int64(len(tbl.cols)) }
-func (tbl *simpleTable) Column(i int) *arrow.Column { return &tbl.cols[i] }
-
-func (tbl *simpleTable) validate() {
- if len(tbl.cols) != tbl.schema.NumFields() {
- panic(errors.New("arrow/array: table schema mismatch"))
- }
- for i, col := range tbl.cols {
- if !col.Field().Equal(tbl.schema.Field(i)) {
- panic(fmt.Errorf("arrow/array: column field %q is inconsistent with schema", col.Name()))
- }
-
- if int64(col.Len()) < tbl.rows {
- panic(fmt.Errorf("arrow/array: column %q expected length >= %d but got length %d", col.Name(), tbl.rows, col.Len()))
- }
- }
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (tbl *simpleTable) Retain() {
- atomic.AddInt64(&tbl.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (tbl *simpleTable) Release() {
- debug.Assert(atomic.LoadInt64(&tbl.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&tbl.refCount, -1) == 0 {
- for i := range tbl.cols {
- tbl.cols[i].Release()
- }
- tbl.cols = nil
- }
-}
-
-func (tbl *simpleTable) String() string {
- o := new(strings.Builder)
- o.WriteString(tbl.Schema().String())
- o.WriteString("\n")
-
- for i := 0; i < int(tbl.NumCols()); i++ {
- col := tbl.Column(i)
- o.WriteString(col.Field().Name + ": [")
- for j, chunk := range col.Data().Chunks() {
- if j != 0 {
- o.WriteString(", ")
- }
- o.WriteString(chunk.String())
- }
- o.WriteString("]\n")
- }
- return o.String()
-}
-
-// TableReader is a Record iterator over a (possibly chunked) Table
-type TableReader struct {
- refCount int64
-
- tbl arrow.Table
- cur int64 // current row
- max int64 // total number of rows
- rec arrow.Record // current Record
- chksz int64 // chunk size
-
- chunks []*arrow.Chunked
- slots []int // chunk indices
- offsets []int64 // chunk offsets
-}
-
-// NewTableReader returns a new TableReader to iterate over the (possibly chunked) Table.
-// if chunkSize is <= 0, the biggest possible chunk will be selected.
-func NewTableReader(tbl arrow.Table, chunkSize int64) *TableReader {
- ncols := tbl.NumCols()
- tr := &TableReader{
- refCount: 1,
- tbl: tbl,
- cur: 0,
- max: int64(tbl.NumRows()),
- chksz: chunkSize,
- chunks: make([]*arrow.Chunked, ncols),
- slots: make([]int, ncols),
- offsets: make([]int64, ncols),
- }
- tr.tbl.Retain()
-
- if tr.chksz <= 0 {
- tr.chksz = math.MaxInt64
- }
-
- for i := range tr.chunks {
- col := tr.tbl.Column(i)
- tr.chunks[i] = col.Data()
- tr.chunks[i].Retain()
- }
- return tr
-}
-
-func (tr *TableReader) Schema() *arrow.Schema { return tr.tbl.Schema() }
-func (tr *TableReader) Record() arrow.Record { return tr.rec }
-
-func (tr *TableReader) Next() bool {
- if tr.cur >= tr.max {
- return false
- }
-
- if tr.rec != nil {
- tr.rec.Release()
- }
-
- // determine the minimum contiguous slice across all columns
- chunksz := imin64(tr.max, tr.chksz)
- chunks := make([]arrow.Array, len(tr.chunks))
- for i := range chunks {
- j := tr.slots[i]
- chunk := tr.chunks[i].Chunk(j)
- remain := int64(chunk.Len()) - tr.offsets[i]
- if remain < chunksz {
- chunksz = remain
- }
-
- chunks[i] = chunk
- }
-
- // slice the chunks, advance each chunk slot as appropriate.
- batch := make([]arrow.Array, len(tr.chunks))
- for i, chunk := range chunks {
- var slice arrow.Array
- offset := tr.offsets[i]
- switch int64(chunk.Len()) - offset {
- case chunksz:
- tr.slots[i]++
- tr.offsets[i] = 0
- if offset > 0 {
- // need to slice
- slice = NewSlice(chunk, offset, offset+chunksz)
- } else {
- // no need to slice
- slice = chunk
- slice.Retain()
- }
- default:
- tr.offsets[i] += chunksz
- slice = NewSlice(chunk, offset, offset+chunksz)
- }
- batch[i] = slice
- }
-
- tr.cur += chunksz
- tr.rec = NewRecord(tr.tbl.Schema(), batch, chunksz)
-
- for _, arr := range batch {
- arr.Release()
- }
-
- return true
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (tr *TableReader) Retain() {
- atomic.AddInt64(&tr.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (tr *TableReader) Release() {
- debug.Assert(atomic.LoadInt64(&tr.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&tr.refCount, -1) == 0 {
- tr.tbl.Release()
- for _, chk := range tr.chunks {
- chk.Release()
- }
- if tr.rec != nil {
- tr.rec.Release()
- }
- tr.tbl = nil
- tr.chunks = nil
- tr.slots = nil
- tr.offsets = nil
- }
-}
-func (tr *TableReader) Err() error { return nil }
-
-func imin64(a, b int64) int64 {
- if a < b {
- return a
- }
- return b
-}
-
-var (
- _ arrow.Table = (*simpleTable)(nil)
- _ RecordReader = (*TableReader)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/timestamp.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/timestamp.go
deleted file mode 100644
index 6ffb43e06..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/timestamp.go
+++ /dev/null
@@ -1,381 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "fmt"
- "reflect"
- "strings"
- "sync/atomic"
- "time"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Timestamp represents an immutable sequence of arrow.Timestamp values.
-type Timestamp struct {
- array
- values []arrow.Timestamp
-}
-
-// NewTimestampData creates a new Timestamp from Data.
-func NewTimestampData(data arrow.ArrayData) *Timestamp {
- a := &Timestamp{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// Reset resets the array for re-use.
-func (a *Timestamp) Reset(data *Data) {
- a.setData(data)
-}
-
-// Value returns the value at the specified index.
-func (a *Timestamp) Value(i int) arrow.Timestamp { return a.values[i] }
-
-// TimestampValues returns the values.
-func (a *Timestamp) TimestampValues() []arrow.Timestamp { return a.values }
-
-// String returns a string representation of the array.
-func (a *Timestamp) String() string {
- o := new(strings.Builder)
- o.WriteString("[")
- for i, v := range a.values {
- if i > 0 {
- fmt.Fprintf(o, " ")
- }
- switch {
- case a.IsNull(i):
- o.WriteString(NullValueStr)
- default:
- fmt.Fprintf(o, "%v", v)
- }
- }
- o.WriteString("]")
- return o.String()
-}
-
-func (a *Timestamp) setData(data *Data) {
- a.array.setData(data)
- vals := data.buffers[1]
- if vals != nil {
- a.values = arrow.TimestampTraits.CastFromBytes(vals.Bytes())
- beg := a.array.data.offset
- end := beg + a.array.data.length
- a.values = a.values[beg:end]
- }
-}
-
-func (a *Timestamp) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
-
- dt := a.DataType().(*arrow.TimestampType)
- z, _ := dt.GetZone()
- return a.values[i].ToTime(dt.Unit).In(z).Format("2006-01-02 15:04:05.999999999Z0700")
-}
-
-func (a *Timestamp) GetOneForMarshal(i int) interface{} {
- if a.IsNull(i) {
- return nil
- }
- return a.values[i].ToTime(a.DataType().(*arrow.TimestampType).Unit).Format("2006-01-02 15:04:05.999999999")
-}
-
-func (a *Timestamp) MarshalJSON() ([]byte, error) {
- vals := make([]interface{}, a.Len())
- for i := range a.values {
- vals[i] = a.GetOneForMarshal(i)
- }
-
- return json.Marshal(vals)
-}
-
-func arrayEqualTimestamp(left, right *Timestamp) bool {
- for i := 0; i < left.Len(); i++ {
- if left.IsNull(i) {
- continue
- }
- if left.Value(i) != right.Value(i) {
- return false
- }
- }
- return true
-}
-
-type TimestampBuilder struct {
- builder
-
- dtype *arrow.TimestampType
- data *memory.Buffer
- rawData []arrow.Timestamp
-}
-
-func NewTimestampBuilder(mem memory.Allocator, dtype *arrow.TimestampType) *TimestampBuilder {
- return &TimestampBuilder{builder: builder{refCount: 1, mem: mem}, dtype: dtype}
-}
-
-func (b *TimestampBuilder) Type() arrow.DataType { return b.dtype }
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *TimestampBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.nullBitmap != nil {
- b.nullBitmap.Release()
- b.nullBitmap = nil
- }
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
- }
-}
-
-func (b *TimestampBuilder) AppendTime(t time.Time) {
- ts, err := arrow.TimestampFromTime(t, b.dtype.Unit)
- if err != nil {
- panic(err)
- }
- b.Append(ts)
-}
-
-func (b *TimestampBuilder) Append(v arrow.Timestamp) {
- b.Reserve(1)
- b.UnsafeAppend(v)
-}
-
-func (b *TimestampBuilder) AppendNull() {
- b.Reserve(1)
- b.UnsafeAppendBoolToBitmap(false)
-}
-
-func (b *TimestampBuilder) AppendNulls(n int) {
- for i := 0; i < n; i++ {
- b.AppendNull()
- }
-}
-
-func (b *TimestampBuilder) AppendEmptyValue() {
- b.Append(0)
-}
-
-func (b *TimestampBuilder) AppendEmptyValues(n int) {
- for i := 0; i < n; i++ {
- b.AppendEmptyValue()
- }
-}
-
-func (b *TimestampBuilder) UnsafeAppend(v arrow.Timestamp) {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- b.rawData[b.length] = v
- b.length++
-}
-
-func (b *TimestampBuilder) UnsafeAppendBoolToBitmap(isValid bool) {
- if isValid {
- bitutil.SetBit(b.nullBitmap.Bytes(), b.length)
- } else {
- b.nulls++
- }
- b.length++
-}
-
-// AppendValues will append the values in the v slice. The valid slice determines which values
-// in v are valid (not null). The valid slice must either be empty or be equal in length to v. If empty,
-// all values in v are appended and considered valid.
-func (b *TimestampBuilder) AppendValues(v []arrow.Timestamp, valid []bool) {
- if len(v) != len(valid) && len(valid) != 0 {
- panic("len(v) != len(valid) && len(valid) != 0")
- }
-
- if len(v) == 0 {
- return
- }
-
- b.Reserve(len(v))
- arrow.TimestampTraits.Copy(b.rawData[b.length:], v)
- b.builder.unsafeAppendBoolsToBitmap(valid, len(v))
-}
-
-func (b *TimestampBuilder) init(capacity int) {
- b.builder.init(capacity)
-
- b.data = memory.NewResizableBuffer(b.mem)
- bytesN := arrow.TimestampTraits.BytesRequired(capacity)
- b.data.Resize(bytesN)
- b.rawData = arrow.TimestampTraits.CastFromBytes(b.data.Bytes())
-}
-
-// Reserve ensures there is enough space for appending n elements
-// by checking the capacity and calling Resize if necessary.
-func (b *TimestampBuilder) Reserve(n int) {
- b.builder.reserve(n, b.Resize)
-}
-
-// Resize adjusts the space allocated by b to n elements. If n is greater than b.Cap(),
-// additional memory will be allocated. If n is smaller, the allocated memory may reduced.
-func (b *TimestampBuilder) Resize(n int) {
- nBuilder := n
- if n < minBuilderCapacity {
- n = minBuilderCapacity
- }
-
- if b.capacity == 0 {
- b.init(n)
- } else {
- b.builder.resize(nBuilder, b.init)
- b.data.Resize(arrow.TimestampTraits.BytesRequired(n))
- b.rawData = arrow.TimestampTraits.CastFromBytes(b.data.Bytes())
- }
-}
-
-// NewArray creates a Timestamp array from the memory buffers used by the builder and resets the TimestampBuilder
-// so it can be used to build a new array.
-func (b *TimestampBuilder) NewArray() arrow.Array {
- return b.NewTimestampArray()
-}
-
-// NewTimestampArray creates a Timestamp array from the memory buffers used by the builder and resets the TimestampBuilder
-// so it can be used to build a new array.
-func (b *TimestampBuilder) NewTimestampArray() (a *Timestamp) {
- data := b.newData()
- a = NewTimestampData(data)
- data.Release()
- return
-}
-
-func (b *TimestampBuilder) newData() (data *Data) {
- bytesRequired := arrow.TimestampTraits.BytesRequired(b.length)
- if bytesRequired > 0 && bytesRequired < b.data.Len() {
- // trim buffers
- b.data.Resize(bytesRequired)
- }
- data = NewData(b.dtype, b.length, []*memory.Buffer{b.nullBitmap, b.data}, nil, b.nulls, 0)
- b.reset()
-
- if b.data != nil {
- b.data.Release()
- b.data = nil
- b.rawData = nil
- }
-
- return
-}
-
-func (b *TimestampBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
-
- loc, err := b.dtype.GetZone()
- if err != nil {
- return err
- }
-
- v, _, err := arrow.TimestampFromStringInLocation(s, b.dtype.Unit, loc)
- if err != nil {
- b.AppendNull()
- return err
- }
- b.Append(v)
- return nil
-}
-
-func (b *TimestampBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch v := t.(type) {
- case nil:
- b.AppendNull()
- case string:
- loc, _ := b.dtype.GetZone()
- tm, _, err := arrow.TimestampFromStringInLocation(v, b.dtype.Unit, loc)
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v,
- Type: reflect.TypeOf(arrow.Timestamp(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- b.Append(tm)
- case json.Number:
- n, err := v.Int64()
- if err != nil {
- return &json.UnmarshalTypeError{
- Value: v.String(),
- Type: reflect.TypeOf(arrow.Timestamp(0)),
- Offset: dec.InputOffset(),
- }
- }
- b.Append(arrow.Timestamp(n))
- case float64:
- b.Append(arrow.Timestamp(v))
-
- default:
- return &json.UnmarshalTypeError{
- Value: fmt.Sprint(t),
- Type: reflect.TypeOf(arrow.Timestamp(0)),
- Offset: dec.InputOffset(),
- }
- }
-
- return nil
-}
-
-func (b *TimestampBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *TimestampBuilder) UnmarshalJSON(data []byte) error {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("binary builder must unpack from json array, found %s", delim)
- }
-
- return b.Unmarshal(dec)
-}
-
-var (
- _ arrow.Array = (*Timestamp)(nil)
- _ Builder = (*TimestampBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/union.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/union.go
deleted file mode 100644
index 1af3e7047..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/union.go
+++ /dev/null
@@ -1,1370 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "bytes"
- "errors"
- "fmt"
- "math"
- "reflect"
- "strings"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/bitutils"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-// Union is a convenience interface to encompass both Sparse and Dense
-// union array types.
-type Union interface {
- arrow.Array
- // NumFields returns the number of child fields in this union.
- // Equivalent to len(UnionType().Fields())
- NumFields() int
- // Validate returns an error if there are any issues with the lengths
- // or types of the children arrays mismatching with the Type of the
- // Union Array. nil is returned if there are no problems.
- Validate() error
- // ValidateFull runs the same checks that Validate() does, but additionally
- // checks that all childIDs are valid (>= 0 || ==InvalidID) and for
- // dense unions validates that all offsets are within the bounds of their
- // respective child.
- ValidateFull() error
- // TypeCodes returns the type id buffer for the union Array, equivalent to
- // Data().Buffers()[1]. Note: This will not account for any slice offset.
- TypeCodes() *memory.Buffer
- // RawTypeCodes returns a slice of UnionTypeCodes properly accounting for
- // any slice offset.
- RawTypeCodes() []arrow.UnionTypeCode
- // TypeCode returns the logical type code of the value at the requested index
- TypeCode(i int) arrow.UnionTypeCode
- // ChildID returns the index of the physical child containing the value
- // at the requested index. Equivalent to:
- //
- // arr.UnionType().ChildIDs()[arr.RawTypeCodes()[i+arr.Data().Offset()]]
- ChildID(i int) int
- // UnionType is a convenience function to retrieve the properly typed UnionType
- // instead of having to call DataType() and manually assert the type.
- UnionType() arrow.UnionType
- // Mode returns the union mode of the underlying Array, either arrow.SparseMode
- // or arrow.DenseMode.
- Mode() arrow.UnionMode
- // Field returns the requested child array for this union. Returns nil if a
- // nonexistent position is passed in.
- //
- // The appropriate child for an index can be retrieved with Field(ChildID(index))
- Field(pos int) arrow.Array
-}
-
-const kMaxElems = math.MaxInt32
-
-type union struct {
- array
-
- unionType arrow.UnionType
- typecodes []arrow.UnionTypeCode
-
- children []arrow.Array
-}
-
-func (a *union) Retain() {
- a.array.Retain()
- for _, c := range a.children {
- c.Retain()
- }
-}
-
-func (a *union) Release() {
- a.array.Release()
- for _, c := range a.children {
- c.Release()
- }
-}
-
-func (a *union) NumFields() int { return len(a.unionType.Fields()) }
-
-func (a *union) Mode() arrow.UnionMode { return a.unionType.Mode() }
-
-func (a *union) UnionType() arrow.UnionType { return a.unionType }
-
-func (a *union) TypeCodes() *memory.Buffer {
- return a.data.buffers[1]
-}
-
-func (a *union) RawTypeCodes() []arrow.UnionTypeCode {
- if a.data.length > 0 {
- return a.typecodes[a.data.offset:]
- }
- return []arrow.UnionTypeCode{}
-}
-
-func (a *union) TypeCode(i int) arrow.UnionTypeCode {
- return a.typecodes[i+a.data.offset]
-}
-
-func (a *union) ChildID(i int) int {
- return a.unionType.ChildIDs()[a.typecodes[i+a.data.offset]]
-}
-
-func (a *union) setData(data *Data) {
- a.unionType = data.dtype.(arrow.UnionType)
- debug.Assert(len(data.buffers) >= 2, "arrow/array: invalid number of union array buffers")
-
- if data.length > 0 {
- a.typecodes = arrow.Int8Traits.CastFromBytes(data.buffers[1].Bytes())
- } else {
- a.typecodes = []int8{}
- }
- a.children = make([]arrow.Array, len(data.childData))
- for i, child := range data.childData {
- if a.unionType.Mode() == arrow.SparseMode && (data.offset != 0 || child.Len() != data.length) {
- child = NewSliceData(child, int64(data.offset), int64(data.offset+data.length))
- defer child.Release()
- }
- a.children[i] = MakeFromData(child)
- }
- a.array.setData(data)
-}
-
-func (a *union) Field(pos int) (result arrow.Array) {
- if pos < 0 || pos >= len(a.children) {
- return nil
- }
-
- return a.children[pos]
-}
-
-func (a *union) Validate() error {
- fields := a.unionType.Fields()
- for i, f := range fields {
- fieldData := a.data.childData[i]
- if a.unionType.Mode() == arrow.SparseMode && fieldData.Len() < a.data.length+a.data.offset {
- return fmt.Errorf("arrow/array: sparse union child array #%d has length smaller than expected for union array (%d < %d)",
- i, fieldData.Len(), a.data.length+a.data.offset)
- }
-
- if !arrow.TypeEqual(f.Type, fieldData.DataType()) {
- return fmt.Errorf("arrow/array: union child array #%d does not match type field %s vs %s",
- i, fieldData.DataType(), f.Type)
- }
- }
- return nil
-}
-
-func (a *union) ValidateFull() error {
- if err := a.Validate(); err != nil {
- return err
- }
-
- childIDs := a.unionType.ChildIDs()
- codesMap := a.unionType.TypeCodes()
- codes := a.RawTypeCodes()
-
- for i := 0; i < a.data.length; i++ {
- code := codes[i]
- if code < 0 || childIDs[code] == arrow.InvalidUnionChildID {
- return fmt.Errorf("arrow/array: union value at position %d has invalid type id %d", i, code)
- }
- }
-
- if a.unionType.Mode() == arrow.DenseMode {
- // validate offsets
-
- // map logical typeid to child length
- var childLengths [256]int64
- for i := range a.unionType.Fields() {
- childLengths[codesMap[i]] = int64(a.data.childData[i].Len())
- }
-
- // check offsets are in bounds
- var lastOffsets [256]int64
- offsets := arrow.Int32Traits.CastFromBytes(a.data.buffers[2].Bytes())[a.data.offset:]
- for i := int64(0); i < int64(a.data.length); i++ {
- code := codes[i]
- offset := offsets[i]
- switch {
- case offset < 0:
- return fmt.Errorf("arrow/array: union value at position %d has negative offset %d", i, offset)
- case offset >= int32(childLengths[code]):
- return fmt.Errorf("arrow/array: union value at position %d has offset larger than child length (%d >= %d)",
- i, offset, childLengths[code])
- case offset < int32(lastOffsets[code]):
- return fmt.Errorf("arrow/array: union value at position %d has non-monotonic offset %d", i, offset)
- }
- lastOffsets[code] = int64(offset)
- }
- }
-
- return nil
-}
-
-// SparseUnion represents an array where each logical value is taken from
-// a single child. A buffer of 8-bit type ids indicates which child a given
-// logical value is to be taken from. This is represented as the ChildID,
-// which is the index into the list of children.
-//
-// In a sparse union, each child array will have the same length as the
-// union array itself, regardless of how many values in the union actually
-// refer to it.
-//
-// Unlike most other arrays, unions do not have a top-level validity bitmap.
-type SparseUnion struct {
- union
-}
-
-// NewSparseUnion constructs a union array using the given type, length, list of
-// children and buffer of typeIDs with the given offset.
-func NewSparseUnion(dt *arrow.SparseUnionType, length int, children []arrow.Array, typeIDs *memory.Buffer, offset int) *SparseUnion {
- childData := make([]arrow.ArrayData, len(children))
- for i, c := range children {
- childData[i] = c.Data()
- }
- data := NewData(dt, length, []*memory.Buffer{nil, typeIDs}, childData, 0, offset)
- defer data.Release()
- return NewSparseUnionData(data)
-}
-
-// NewSparseUnionData constructs a SparseUnion array from the given ArrayData object.
-func NewSparseUnionData(data arrow.ArrayData) *SparseUnion {
- a := &SparseUnion{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// NewSparseUnionFromArrays constructs a new SparseUnion array with the provided
-// values.
-//
-// typeIDs *must* be an INT8 array with no nulls
-// len(codes) *must* be either 0 or equal to len(children). If len(codes) is 0,
-// the type codes used will be sequentially numeric starting at 0.
-func NewSparseUnionFromArrays(typeIDs arrow.Array, children []arrow.Array, codes ...arrow.UnionTypeCode) (*SparseUnion, error) {
- return NewSparseUnionFromArraysWithFieldCodes(typeIDs, children, []string{}, codes)
-}
-
-// NewSparseUnionFromArrayWithFields constructs a new SparseUnion array like
-// NewSparseUnionFromArrays, but allows specifying the field names. Type codes
-// will be auto-generated sequentially starting at 0.
-//
-// typeIDs *must* be an INT8 array with no nulls.
-// len(fields) *must* either be 0 or equal to len(children). If len(fields) is 0,
-// then the fields will be named sequentially starting at "0".
-func NewSparseUnionFromArraysWithFields(typeIDs arrow.Array, children []arrow.Array, fields []string) (*SparseUnion, error) {
- return NewSparseUnionFromArraysWithFieldCodes(typeIDs, children, fields, []arrow.UnionTypeCode{})
-}
-
-// NewSparseUnionFromArraysWithFieldCodes combines the other constructors
-// for constructing a new SparseUnion array with the provided field names
-// and type codes, along with children and type ids.
-//
-// All the requirements mentioned in NewSparseUnionFromArrays and
-// NewSparseUnionFromArraysWithFields apply.
-func NewSparseUnionFromArraysWithFieldCodes(typeIDs arrow.Array, children []arrow.Array, fields []string, codes []arrow.UnionTypeCode) (*SparseUnion, error) {
- switch {
- case typeIDs.DataType().ID() != arrow.INT8:
- return nil, errors.New("arrow/array: union array type ids must be signed int8")
- case typeIDs.NullN() != 0:
- return nil, errors.New("arrow/array: union type ids may not have nulls")
- case len(fields) > 0 && len(fields) != len(children):
- return nil, errors.New("arrow/array: field names must have the same length as children")
- case len(codes) > 0 && len(codes) != len(children):
- return nil, errors.New("arrow/array: type codes must have same length as children")
- }
-
- buffers := []*memory.Buffer{nil, typeIDs.Data().Buffers()[1]}
- ty := arrow.SparseUnionFromArrays(children, fields, codes)
-
- childData := make([]arrow.ArrayData, len(children))
- for i, c := range children {
- childData[i] = c.Data()
- if c.Len() != typeIDs.Len() {
- return nil, errors.New("arrow/array: sparse union array must have len(child) == len(typeids) for all children")
- }
- }
-
- data := NewData(ty, typeIDs.Len(), buffers, childData, 0, typeIDs.Data().Offset())
- defer data.Release()
- return NewSparseUnionData(data), nil
-}
-
-func (a *SparseUnion) setData(data *Data) {
- a.union.setData(data)
- debug.Assert(a.data.dtype.ID() == arrow.SPARSE_UNION, "arrow/array: invalid data type for SparseUnion")
- debug.Assert(len(a.data.buffers) == 2, "arrow/array: sparse unions should have exactly 2 buffers")
- debug.Assert(a.data.buffers[0] == nil, "arrow/array: validity bitmap for sparse unions should be nil")
-}
-
-func (a *SparseUnion) GetOneForMarshal(i int) interface{} {
- typeID := a.RawTypeCodes()[i]
-
- childID := a.ChildID(i)
- data := a.Field(childID)
-
- if data.IsNull(i) {
- return nil
- }
-
- return []interface{}{typeID, data.GetOneForMarshal(i)}
-}
-
-func (a *SparseUnion) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func (a *SparseUnion) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
-
- val := a.GetOneForMarshal(i)
- if val == nil {
- // child is nil
- return NullValueStr
- }
-
- data, err := json.Marshal(val)
- if err != nil {
- panic(err)
- }
- return string(data)
-}
-
-func (a *SparseUnion) String() string {
- var b strings.Builder
- b.WriteByte('[')
-
- fieldList := a.unionType.Fields()
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- b.WriteString(" ")
- }
-
- field := fieldList[a.ChildID(i)]
- f := a.Field(a.ChildID(i))
- fmt.Fprintf(&b, "{%s=%v}", field.Name, f.GetOneForMarshal(i))
- }
- b.WriteByte(']')
- return b.String()
-}
-
-// GetFlattenedField returns a child array, adjusting its validity bitmap
-// where the union array type codes don't match.
-//
-// ie: the returned array will have a null in every index that it is
-// not referenced by union.
-func (a *SparseUnion) GetFlattenedField(mem memory.Allocator, index int) (arrow.Array, error) {
- if index < 0 || index >= a.NumFields() {
- return nil, fmt.Errorf("arrow/array: index out of range: %d", index)
- }
-
- childData := a.data.childData[index]
- if a.data.offset != 0 || a.data.length != childData.Len() {
- childData = NewSliceData(childData, int64(a.data.offset), int64(a.data.offset+a.data.length))
- // NewSliceData doesn't break the slice reference for buffers
- // since we're going to replace the null bitmap buffer we need to break the
- // slice reference so that we don't affect a.children's references
- newBufs := make([]*memory.Buffer, len(childData.Buffers()))
- copy(newBufs, childData.(*Data).buffers)
- childData.(*Data).buffers = newBufs
- } else {
- childData = childData.(*Data).Copy()
- }
- defer childData.Release()
-
- // synthesize a null bitmap based on the union discriminant
- // make sure the bitmap has extra bits corresponding to the child's offset
- flattenedNullBitmap := memory.NewResizableBuffer(mem)
- flattenedNullBitmap.Resize(childData.Len() + childData.Offset())
-
- var (
- childNullBitmap = childData.Buffers()[0]
- childOffset = childData.Offset()
- typeCode = a.unionType.TypeCodes()[index]
- codes = a.RawTypeCodes()
- offset int64 = 0
- )
- bitutils.GenerateBitsUnrolled(flattenedNullBitmap.Bytes(), int64(childOffset), int64(a.data.length),
- func() bool {
- b := codes[offset] == typeCode
- offset++
- return b
- })
-
- if childNullBitmap != nil {
- defer childNullBitmap.Release()
- bitutil.BitmapAnd(flattenedNullBitmap.Bytes(), childNullBitmap.Bytes(),
- int64(childOffset), int64(childOffset), flattenedNullBitmap.Bytes(),
- int64(childOffset), int64(childData.Len()))
- }
- childData.(*Data).buffers[0] = flattenedNullBitmap
- childData.(*Data).nulls = childData.Len() - bitutil.CountSetBits(flattenedNullBitmap.Bytes(), childOffset, childData.Len())
- return MakeFromData(childData), nil
-}
-
-func arraySparseUnionEqual(l, r *SparseUnion) bool {
- childIDs := l.unionType.ChildIDs()
- leftCodes, rightCodes := l.RawTypeCodes(), r.RawTypeCodes()
-
- for i := 0; i < l.data.length; i++ {
- typeID := leftCodes[i]
- if typeID != rightCodes[i] {
- return false
- }
-
- childNum := childIDs[typeID]
- eq := SliceEqual(l.children[childNum], int64(i), int64(i+1),
- r.children[childNum], int64(i), int64(i+1))
- if !eq {
- return false
- }
- }
- return true
-}
-
-func arraySparseUnionApproxEqual(l, r *SparseUnion, opt equalOption) bool {
- childIDs := l.unionType.ChildIDs()
- leftCodes, rightCodes := l.RawTypeCodes(), r.RawTypeCodes()
-
- for i := 0; i < l.data.length; i++ {
- typeID := leftCodes[i]
- if typeID != rightCodes[i] {
- return false
- }
-
- childNum := childIDs[typeID]
- eq := sliceApproxEqual(l.children[childNum], int64(i+l.data.offset), int64(i+l.data.offset+1),
- r.children[childNum], int64(i+r.data.offset), int64(i+r.data.offset+1), opt)
- if !eq {
- return false
- }
- }
- return true
-}
-
-// DenseUnion represents an array where each logical value is taken from
-// a single child, at a specific offset. A buffer of 8-bit type ids
-// indicates which child a given logical value is to be taken from and
-// a buffer of 32-bit offsets indicating which physical position in the
-// given child array has the logical value for that index.
-//
-// Unlike a sparse union, a dense union allows encoding only the child values
-// which are actually referred to by the union array. This is counterbalanced
-// by the additional footprint of the offsets buffer, and the additional
-// indirection cost when looking up values.
-//
-// Unlike most other arrays, unions do not have a top-level validity bitmap.
-type DenseUnion struct {
- union
- offsets []int32
-}
-
-// NewDenseUnion constructs a union array using the given type, length, list of
-// children and buffers of typeIDs and offsets, with the given array offset.
-func NewDenseUnion(dt *arrow.DenseUnionType, length int, children []arrow.Array, typeIDs, valueOffsets *memory.Buffer, offset int) *DenseUnion {
- childData := make([]arrow.ArrayData, len(children))
- for i, c := range children {
- childData[i] = c.Data()
- }
-
- data := NewData(dt, length, []*memory.Buffer{nil, typeIDs, valueOffsets}, childData, 0, offset)
- defer data.Release()
- return NewDenseUnionData(data)
-}
-
-// NewDenseUnionData constructs a DenseUnion array from the given ArrayData object.
-func NewDenseUnionData(data arrow.ArrayData) *DenseUnion {
- a := &DenseUnion{}
- a.refCount = 1
- a.setData(data.(*Data))
- return a
-}
-
-// NewDenseUnionFromArrays constructs a new DenseUnion array with the provided
-// values.
-//
-// typeIDs *must* be an INT8 array with no nulls
-// offsets *must* be an INT32 array with no nulls
-// len(codes) *must* be either 0 or equal to len(children). If len(codes) is 0,
-// the type codes used will be sequentially numeric starting at 0.
-func NewDenseUnionFromArrays(typeIDs, offsets arrow.Array, children []arrow.Array, codes ...arrow.UnionTypeCode) (*DenseUnion, error) {
- return NewDenseUnionFromArraysWithFieldCodes(typeIDs, offsets, children, []string{}, codes)
-}
-
-// NewDenseUnionFromArrayWithFields constructs a new DenseUnion array like
-// NewDenseUnionFromArrays, but allows specifying the field names. Type codes
-// will be auto-generated sequentially starting at 0.
-//
-// typeIDs *must* be an INT8 array with no nulls.
-// offsets *must* be an INT32 array with no nulls.
-// len(fields) *must* either be 0 or equal to len(children). If len(fields) is 0,
-// then the fields will be named sequentially starting at "0".
-func NewDenseUnionFromArraysWithFields(typeIDs, offsets arrow.Array, children []arrow.Array, fields []string) (*DenseUnion, error) {
- return NewDenseUnionFromArraysWithFieldCodes(typeIDs, offsets, children, fields, []arrow.UnionTypeCode{})
-}
-
-// NewDenseUnionFromArraysWithFieldCodes combines the other constructors
-// for constructing a new DenseUnion array with the provided field names
-// and type codes, along with children and type ids.
-//
-// All the requirements mentioned in NewDenseUnionFromArrays and
-// NewDenseUnionFromArraysWithFields apply.
-func NewDenseUnionFromArraysWithFieldCodes(typeIDs, offsets arrow.Array, children []arrow.Array, fields []string, codes []arrow.UnionTypeCode) (*DenseUnion, error) {
- switch {
- case offsets.DataType().ID() != arrow.INT32:
- return nil, errors.New("arrow/array: union offsets must be signed int32")
- case typeIDs.DataType().ID() != arrow.INT8:
- return nil, errors.New("arrow/array: union type_ids must be signed int8")
- case typeIDs.NullN() != 0:
- return nil, errors.New("arrow/array: union typeIDs may not have nulls")
- case offsets.NullN() != 0:
- return nil, errors.New("arrow/array: nulls are not allowed in offsets for NewDenseUnionFromArrays*")
- case len(fields) > 0 && len(fields) != len(children):
- return nil, errors.New("arrow/array: fields must be the same length as children")
- case len(codes) > 0 && len(codes) != len(children):
- return nil, errors.New("arrow/array: typecodes must have the same length as children")
- }
-
- ty := arrow.DenseUnionFromArrays(children, fields, codes)
- buffers := []*memory.Buffer{nil, typeIDs.Data().Buffers()[1], offsets.Data().Buffers()[1]}
-
- childData := make([]arrow.ArrayData, len(children))
- for i, c := range children {
- childData[i] = c.Data()
- }
-
- data := NewData(ty, typeIDs.Len(), buffers, childData, 0, typeIDs.Data().Offset())
- defer data.Release()
- return NewDenseUnionData(data), nil
-}
-
-func (a *DenseUnion) ValueOffsets() *memory.Buffer { return a.data.buffers[2] }
-
-func (a *DenseUnion) ValueOffset(i int) int32 { return a.offsets[i+a.data.offset] }
-
-func (a *DenseUnion) RawValueOffsets() []int32 { return a.offsets[a.data.offset:] }
-
-func (a *DenseUnion) setData(data *Data) {
- a.union.setData(data)
- debug.Assert(a.data.dtype.ID() == arrow.DENSE_UNION, "arrow/array: invalid data type for DenseUnion")
- debug.Assert(len(a.data.buffers) == 3, "arrow/array: dense unions should have exactly 3 buffers")
- debug.Assert(a.data.buffers[0] == nil, "arrow/array: validity bitmap for dense unions should be nil")
-
- if data.length > 0 {
- a.offsets = arrow.Int32Traits.CastFromBytes(a.data.buffers[2].Bytes())
- } else {
- a.offsets = []int32{}
- }
-}
-
-func (a *DenseUnion) GetOneForMarshal(i int) interface{} {
- typeID := a.RawTypeCodes()[i]
-
- childID := a.ChildID(i)
- data := a.Field(childID)
-
- offset := int(a.RawValueOffsets()[i])
- if data.IsNull(offset) {
- return nil
- }
-
- return []interface{}{typeID, data.GetOneForMarshal(offset)}
-}
-
-func (a *DenseUnion) MarshalJSON() ([]byte, error) {
- var buf bytes.Buffer
- enc := json.NewEncoder(&buf)
-
- buf.WriteByte('[')
- for i := 0; i < a.Len(); i++ {
- if i != 0 {
- buf.WriteByte(',')
- }
- if err := enc.Encode(a.GetOneForMarshal(i)); err != nil {
- return nil, err
- }
- }
- buf.WriteByte(']')
- return buf.Bytes(), nil
-}
-
-func (a *DenseUnion) ValueStr(i int) string {
- if a.IsNull(i) {
- return NullValueStr
- }
-
- val := a.GetOneForMarshal(i)
- if val == nil {
- // child in nil
- return NullValueStr
- }
-
- data, err := json.Marshal(val)
- if err != nil {
- panic(err)
- }
- return string(data)
-}
-
-func (a *DenseUnion) String() string {
- var b strings.Builder
- b.WriteByte('[')
-
- offsets := a.RawValueOffsets()
-
- fieldList := a.unionType.Fields()
- for i := 0; i < a.Len(); i++ {
- if i > 0 {
- b.WriteString(" ")
- }
-
- field := fieldList[a.ChildID(i)]
- f := a.Field(a.ChildID(i))
- fmt.Fprintf(&b, "{%s=%v}", field.Name, f.GetOneForMarshal(int(offsets[i])))
- }
- b.WriteByte(']')
- return b.String()
-}
-
-func arrayDenseUnionEqual(l, r *DenseUnion) bool {
- childIDs := l.unionType.ChildIDs()
- leftCodes, rightCodes := l.RawTypeCodes(), r.RawTypeCodes()
- leftOffsets, rightOffsets := l.RawValueOffsets(), r.RawValueOffsets()
-
- for i := 0; i < l.data.length; i++ {
- typeID := leftCodes[i]
- if typeID != rightCodes[i] {
- return false
- }
-
- childNum := childIDs[typeID]
- eq := SliceEqual(l.children[childNum], int64(leftOffsets[i]), int64(leftOffsets[i]+1),
- r.children[childNum], int64(rightOffsets[i]), int64(rightOffsets[i]+1))
- if !eq {
- return false
- }
- }
- return true
-}
-
-func arrayDenseUnionApproxEqual(l, r *DenseUnion, opt equalOption) bool {
- childIDs := l.unionType.ChildIDs()
- leftCodes, rightCodes := l.RawTypeCodes(), r.RawTypeCodes()
- leftOffsets, rightOffsets := l.RawValueOffsets(), r.RawValueOffsets()
-
- for i := 0; i < l.data.length; i++ {
- typeID := leftCodes[i]
- if typeID != rightCodes[i] {
- return false
- }
-
- childNum := childIDs[typeID]
- eq := sliceApproxEqual(l.children[childNum], int64(leftOffsets[i]), int64(leftOffsets[i]+1),
- r.children[childNum], int64(rightOffsets[i]), int64(rightOffsets[i]+1), opt)
- if !eq {
- return false
- }
- }
- return true
-}
-
-// UnionBuilder is a convenience interface for building Union arrays of
-// either Dense or Sparse mode.
-type UnionBuilder interface {
- Builder
- // AppendChild allows constructing the union type on the fly by making new
- // new array builder available to the union builder. The type code (index)
- // of the new child is returned, which should be passed to the Append method
- // when adding a new element to the union array.
- AppendChild(newChild Builder, fieldName string) (newCode arrow.UnionTypeCode)
- // Append adds an element to the UnionArray indicating which typecode the
- // new element should use. This *must* be followed up by an append to the
- // appropriate child builder.
- Append(arrow.UnionTypeCode)
- // Mode returns what kind of Union is being built, either arrow.SparseMode
- // or arrow.DenseMode
- Mode() arrow.UnionMode
- // Child returns the builder for the requested child index.
- // If an invalid index is requested (e.g. <0 or >len(children))
- // then this will panic.
- Child(idx int) Builder
-}
-
-type unionBuilder struct {
- builder
-
- childFields []arrow.Field
- codes []arrow.UnionTypeCode
- mode arrow.UnionMode
-
- children []Builder
- typeIDtoBuilder []Builder
- typeIDtoChildID []int
- // for all typeID < denseTypeID, typeIDtoBuilder[typeID] != nil
- denseTypeID arrow.UnionTypeCode
- typesBuilder *int8BufferBuilder
-}
-
-func newUnionBuilder(mem memory.Allocator, children []Builder, typ arrow.UnionType) unionBuilder {
- if children == nil {
- children = make([]Builder, 0)
- }
- b := unionBuilder{
- builder: builder{refCount: 1, mem: mem},
- mode: typ.Mode(),
- codes: typ.TypeCodes(),
- children: children,
- typeIDtoChildID: make([]int, int(typ.MaxTypeCode())+1), // convert to int as int8(127) +1 panics
- typeIDtoBuilder: make([]Builder, int(typ.MaxTypeCode())+1), // convert to int as int8(127) +1 panics
- childFields: make([]arrow.Field, len(children)),
- typesBuilder: newInt8BufferBuilder(mem),
- }
-
- b.typeIDtoChildID[0] = arrow.InvalidUnionChildID
- for i := 1; i < len(b.typeIDtoChildID); i *= 2 {
- copy(b.typeIDtoChildID[i:], b.typeIDtoChildID[:i])
- }
-
- debug.Assert(len(children) == len(typ.TypeCodes()), "mismatched typecodes and children")
- debug.Assert(len(b.typeIDtoBuilder)-1 <= int(arrow.MaxUnionTypeCode), "too many typeids")
-
- copy(b.childFields, typ.Fields())
- for i, c := range children {
- c.Retain()
- typeID := typ.TypeCodes()[i]
- b.typeIDtoChildID[typeID] = i
- b.typeIDtoBuilder[typeID] = c
- }
-
- return b
-}
-
-func (b *unionBuilder) NumChildren() int {
- return len(b.children)
-}
-
-func (b *unionBuilder) Child(idx int) Builder {
- if idx < 0 || idx > len(b.children) {
- panic("arrow/array: invalid child index for union builder")
- }
- return b.children[idx]
-}
-
-// Len returns the current number of elements in the builder.
-func (b *unionBuilder) Len() int { return b.typesBuilder.Len() }
-
-func (b *unionBuilder) Mode() arrow.UnionMode { return b.mode }
-
-func (b *unionBuilder) reserve(elements int, resize func(int)) {
- // union has no null bitmap, ever so we can skip that handling
- if b.length+elements > b.capacity {
- b.capacity = bitutil.NextPowerOf2(b.length + elements)
- resize(b.capacity)
- }
-}
-
-func (b *unionBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- for _, c := range b.children {
- c.Release()
- }
- b.typesBuilder.Release()
- }
-}
-
-func (b *unionBuilder) Type() arrow.DataType {
- fields := make([]arrow.Field, len(b.childFields))
- for i, f := range b.childFields {
- fields[i] = f
- fields[i].Type = b.children[i].Type()
- }
-
- switch b.mode {
- case arrow.SparseMode:
- return arrow.SparseUnionOf(fields, b.codes)
- case arrow.DenseMode:
- return arrow.DenseUnionOf(fields, b.codes)
- default:
- panic("invalid union builder mode")
- }
-}
-
-func (b *unionBuilder) AppendChild(newChild Builder, fieldName string) arrow.UnionTypeCode {
- newChild.Retain()
- b.children = append(b.children, newChild)
- newType := b.nextTypeID()
-
- b.typeIDtoChildID[newType] = len(b.children) - 1
- b.typeIDtoBuilder[newType] = newChild
- b.childFields = append(b.childFields, arrow.Field{Name: fieldName, Nullable: true})
- b.codes = append(b.codes, newType)
-
- return newType
-}
-
-func (b *unionBuilder) nextTypeID() arrow.UnionTypeCode {
- // find typeID such that typeIDtoBuilder[typeID] == nil
- // use that for the new child. Start searching at denseTypeID
- // since typeIDtoBuilder is densely packed up at least to denseTypeID
- for ; int(b.denseTypeID) < len(b.typeIDtoBuilder); b.denseTypeID++ {
- if b.typeIDtoBuilder[b.denseTypeID] == nil {
- id := b.denseTypeID
- b.denseTypeID++
- return id
- }
- }
-
- debug.Assert(len(b.typeIDtoBuilder) < int(arrow.MaxUnionTypeCode), "too many children typeids")
- // typeIDtoBuilder is already densely packed, so just append the new child
- b.typeIDtoBuilder = append(b.typeIDtoBuilder, nil)
- b.typeIDtoChildID = append(b.typeIDtoChildID, arrow.InvalidUnionChildID)
- id := b.denseTypeID
- b.denseTypeID++
- return id
-
-}
-
-func (b *unionBuilder) newData() *Data {
- length := b.typesBuilder.Len()
- typesBuffer := b.typesBuilder.Finish()
- defer typesBuffer.Release()
- childData := make([]arrow.ArrayData, len(b.children))
- for i, b := range b.children {
- childData[i] = b.newData()
- defer childData[i].Release()
- }
-
- return NewData(b.Type(), length, []*memory.Buffer{nil, typesBuffer}, childData, 0, 0)
-}
-
-// SparseUnionBuilder is used to build a Sparse Union array using the Append
-// methods. You can also add new types to the union on the fly by using
-// AppendChild.
-//
-// Keep in mind: All children of a SparseUnion should be the same length
-// as the union itself. If you add new children with AppendChild, ensure
-// that they have the correct number of preceding elements that have been
-// added to the builder beforehand.
-type SparseUnionBuilder struct {
- unionBuilder
-}
-
-// NewEmptySparseUnionBuilder is a helper to construct a SparseUnionBuilder
-// without having to predefine the union types. It creates a builder with no
-// children and AppendChild will have to be called before appending any
-// elements to this builder.
-func NewEmptySparseUnionBuilder(mem memory.Allocator) *SparseUnionBuilder {
- return &SparseUnionBuilder{
- unionBuilder: newUnionBuilder(mem, nil, arrow.SparseUnionOf([]arrow.Field{}, []arrow.UnionTypeCode{})),
- }
-}
-
-// NewSparseUnionBuilder constructs a new SparseUnionBuilder with the provided
-// children and type codes. Builders will be constructed for each child
-// using the fields in typ
-func NewSparseUnionBuilder(mem memory.Allocator, typ *arrow.SparseUnionType) *SparseUnionBuilder {
- children := make([]Builder, typ.NumFields())
- for i, f := range typ.Fields() {
- children[i] = NewBuilder(mem, f.Type)
- defer children[i].Release()
- }
- return NewSparseUnionBuilderWithBuilders(mem, typ, children)
-}
-
-// NewSparseUnionWithBuilders returns a new SparseUnionBuilder using the
-// provided type and builders.
-func NewSparseUnionBuilderWithBuilders(mem memory.Allocator, typ *arrow.SparseUnionType, children []Builder) *SparseUnionBuilder {
- return &SparseUnionBuilder{
- unionBuilder: newUnionBuilder(mem, children, typ),
- }
-}
-
-func (b *SparseUnionBuilder) Reserve(n int) {
- b.reserve(n, b.Resize)
-}
-
-func (b *SparseUnionBuilder) Resize(n int) {
- b.typesBuilder.resize(n)
-}
-
-// AppendNull will append a null to the first child and an empty value
-// (implementation-defined) to the rest of the children.
-func (b *SparseUnionBuilder) AppendNull() {
- firstChildCode := b.codes[0]
- b.typesBuilder.AppendValue(firstChildCode)
- b.typeIDtoBuilder[firstChildCode].AppendNull()
- for _, c := range b.codes[1:] {
- b.typeIDtoBuilder[c].AppendEmptyValue()
- }
-}
-
-// AppendNulls is identical to calling AppendNull() n times, except
-// it will pre-allocate with reserve for all the nulls beforehand.
-func (b *SparseUnionBuilder) AppendNulls(n int) {
- firstChildCode := b.codes[0]
- b.Reserve(n)
- for _, c := range b.codes {
- b.typeIDtoBuilder[c].Reserve(n)
- }
- for i := 0; i < n; i++ {
- b.typesBuilder.AppendValue(firstChildCode)
- b.typeIDtoBuilder[firstChildCode].AppendNull()
- for _, c := range b.codes[1:] {
- b.typeIDtoBuilder[c].AppendEmptyValue()
- }
- }
-}
-
-// AppendEmptyValue appends an empty value (implementation defined)
-// to each child, and appends the type of the first typecode to the typeid
-// buffer.
-func (b *SparseUnionBuilder) AppendEmptyValue() {
- b.typesBuilder.AppendValue(b.codes[0])
- for _, c := range b.codes {
- b.typeIDtoBuilder[c].AppendEmptyValue()
- }
-}
-
-// AppendEmptyValues is identical to calling AppendEmptyValue() n times,
-// except it pre-allocates first so it is more efficient.
-func (b *SparseUnionBuilder) AppendEmptyValues(n int) {
- b.Reserve(n)
- firstChildCode := b.codes[0]
- for _, c := range b.codes {
- b.typeIDtoBuilder[c].Reserve(n)
- }
- for i := 0; i < n; i++ {
- b.typesBuilder.AppendValue(firstChildCode)
- for _, c := range b.codes {
- b.typeIDtoBuilder[c].AppendEmptyValue()
- }
- }
-}
-
-// Append appends an element to the UnionArray and must be followed up
-// by an append to the appropriate child builder. The parameter should
-// be the type id of the child to which the next value will be appended.
-//
-// After appending to the corresponding child builder, all other child
-// builders should have a null or empty value appended to them (although
-// this is not enforced and any value is theoretically allowed and will be
-// ignored).
-func (b *SparseUnionBuilder) Append(nextType arrow.UnionTypeCode) {
- b.typesBuilder.AppendValue(nextType)
-}
-
-func (b *SparseUnionBuilder) NewArray() arrow.Array {
- return b.NewSparseUnionArray()
-}
-
-func (b *SparseUnionBuilder) NewSparseUnionArray() (a *SparseUnion) {
- data := b.newData()
- a = NewSparseUnionData(data)
- data.Release()
- return
-}
-
-func (b *SparseUnionBuilder) UnmarshalJSON(data []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("sparse union builder must unpack from json array, found %s", t)
- }
- return b.Unmarshal(dec)
-}
-
-func (b *SparseUnionBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (b *SparseUnionBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- b.AppendNull()
- return nil
- }
- dec := json.NewDecoder(strings.NewReader(s))
- return b.UnmarshalOne(dec)
-}
-
-func (b *SparseUnionBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('['):
- // should be [type_id, Value]
- typeID, err := dec.Token()
- if err != nil {
- return err
- }
-
- var typeCode int8
-
- switch tid := typeID.(type) {
- case json.Number:
- id, err := tid.Int64()
- if err != nil {
- return err
- }
- typeCode = int8(id)
- case float64:
- if tid != float64(int64(tid)) {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Type: reflect.TypeOf(int8(0)),
- Struct: fmt.Sprint(b.Type()),
- Value: "float",
- }
- }
- typeCode = int8(tid)
- }
-
- childNum := b.typeIDtoChildID[typeCode]
- if childNum == arrow.InvalidUnionChildID {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: "invalid type code",
- }
- }
-
- for i, c := range b.children {
- if i != childNum {
- c.AppendNull()
- }
- }
-
- b.Append(typeCode)
- if err := b.children[childNum].UnmarshalOne(dec); err != nil {
- return err
- }
-
- endArr, err := dec.Token()
- if err != nil {
- return err
- }
-
- if endArr != json.Delim(']') {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: "union value array should have exactly 2 elements",
- }
- }
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: fmt.Sprint(t),
- Struct: fmt.Sprint(b.Type()),
- }
- }
- return nil
-}
-
-// DenseUnionBuilder is used to build a Dense Union array using the Append
-// methods. You can also add new types to the union on the fly by using
-// AppendChild.
-type DenseUnionBuilder struct {
- unionBuilder
-
- offsetsBuilder *int32BufferBuilder
-}
-
-// NewEmptyDenseUnionBuilder is a helper to construct a DenseUnionBuilder
-// without having to predefine the union types. It creates a builder with no
-// children and AppendChild will have to be called before appending any
-// elements to this builder.
-func NewEmptyDenseUnionBuilder(mem memory.Allocator) *DenseUnionBuilder {
- return &DenseUnionBuilder{
- unionBuilder: newUnionBuilder(mem, nil, arrow.DenseUnionOf([]arrow.Field{}, []arrow.UnionTypeCode{})),
- offsetsBuilder: newInt32BufferBuilder(mem),
- }
-}
-
-// NewDenseUnionBuilder constructs a new DenseUnionBuilder with the provided
-// children and type codes. Builders will be constructed for each child
-// using the fields in typ
-func NewDenseUnionBuilder(mem memory.Allocator, typ *arrow.DenseUnionType) *DenseUnionBuilder {
- children := make([]Builder, 0, typ.NumFields())
- defer func() {
- for _, child := range children {
- child.Release()
- }
- }()
-
- for _, f := range typ.Fields() {
- children = append(children, NewBuilder(mem, f.Type))
- }
- return NewDenseUnionBuilderWithBuilders(mem, typ, children)
-}
-
-// NewDenseUnionWithBuilders returns a new DenseUnionBuilder using the
-// provided type and builders.
-func NewDenseUnionBuilderWithBuilders(mem memory.Allocator, typ *arrow.DenseUnionType, children []Builder) *DenseUnionBuilder {
- return &DenseUnionBuilder{
- unionBuilder: newUnionBuilder(mem, children, typ),
- offsetsBuilder: newInt32BufferBuilder(mem),
- }
-}
-
-func (b *DenseUnionBuilder) Reserve(n int) {
- b.reserve(n, b.Resize)
-}
-
-func (b *DenseUnionBuilder) Resize(n int) {
- b.typesBuilder.resize(n)
- b.offsetsBuilder.resize(n * arrow.Int32SizeBytes)
-}
-
-// AppendNull will only append a null value arbitrarily to the first child
-// and use that offset for this element of the array.
-func (b *DenseUnionBuilder) AppendNull() {
- firstChildCode := b.codes[0]
- childBuilder := b.typeIDtoBuilder[firstChildCode]
- b.typesBuilder.AppendValue(firstChildCode)
- b.offsetsBuilder.AppendValue(int32(childBuilder.Len()))
- childBuilder.AppendNull()
-}
-
-// AppendNulls will only append a single null arbitrarily to the first child
-// and use the same offset multiple times to point to it. The result is that
-// for a DenseUnion this is more efficient than calling AppendNull multiple
-// times in a loop
-func (b *DenseUnionBuilder) AppendNulls(n int) {
- // only append 1 null to the child builder, use the same offset twice
- firstChildCode := b.codes[0]
- childBuilder := b.typeIDtoBuilder[firstChildCode]
- b.Reserve(n)
- for i := 0; i < n; i++ {
- b.typesBuilder.AppendValue(firstChildCode)
- b.offsetsBuilder.AppendValue(int32(childBuilder.Len()))
- }
- // only append a single null to the child builder, the offsets all refer to the same value
- childBuilder.AppendNull()
-}
-
-// AppendEmptyValue only appends an empty value arbitrarily to the first child,
-// and then uses that offset to identify the value.
-func (b *DenseUnionBuilder) AppendEmptyValue() {
- firstChildCode := b.codes[0]
- childBuilder := b.typeIDtoBuilder[firstChildCode]
- b.typesBuilder.AppendValue(firstChildCode)
- b.offsetsBuilder.AppendValue(int32(childBuilder.Len()))
- childBuilder.AppendEmptyValue()
-}
-
-// AppendEmptyValues, like AppendNulls, will only append a single empty value
-// (implementation defined) to the first child arbitrarily, and then point
-// at that value using the offsets n times. That makes this more efficient
-// than calling AppendEmptyValue multiple times.
-func (b *DenseUnionBuilder) AppendEmptyValues(n int) {
- // only append 1 null to the child builder, use the same offset twice
- firstChildCode := b.codes[0]
- childBuilder := b.typeIDtoBuilder[firstChildCode]
- b.Reserve(n)
- for i := 0; i < n; i++ {
- b.typesBuilder.AppendValue(firstChildCode)
- b.offsetsBuilder.AppendValue(int32(childBuilder.Len()))
- }
- // only append a single empty value to the child builder, the offsets all
- // refer to the same value
- childBuilder.AppendEmptyValue()
-}
-
-// Append appends the necessary offset and type code to the builder
-// and must be followed up with an append to the appropriate child builder
-func (b *DenseUnionBuilder) Append(nextType arrow.UnionTypeCode) {
- b.typesBuilder.AppendValue(nextType)
- bldr := b.typeIDtoBuilder[nextType]
- if bldr.Len() == kMaxElems {
- panic("a dense UnionArray cannot contain more than 2^31 - 1 elements from a single child")
- }
-
- b.offsetsBuilder.AppendValue(int32(bldr.Len()))
-}
-
-func (b *DenseUnionBuilder) Release() {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- for _, c := range b.children {
- c.Release()
- }
- b.typesBuilder.Release()
- b.offsetsBuilder.Release()
- }
-}
-
-func (b *DenseUnionBuilder) newData() *Data {
- data := b.unionBuilder.newData()
- data.buffers = append(data.buffers, b.offsetsBuilder.Finish())
- return data
-}
-
-func (b *DenseUnionBuilder) NewArray() arrow.Array {
- return b.NewDenseUnionArray()
-}
-
-func (b *DenseUnionBuilder) NewDenseUnionArray() (a *DenseUnion) {
- data := b.newData()
- a = NewDenseUnionData(data)
- data.Release()
- return
-}
-
-func (b *DenseUnionBuilder) UnmarshalJSON(data []byte) (err error) {
- dec := json.NewDecoder(bytes.NewReader(data))
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return fmt.Errorf("dense union builder must unpack from json array, found %s", t)
- }
- return b.Unmarshal(dec)
-}
-
-func (b *DenseUnionBuilder) Unmarshal(dec *json.Decoder) error {
- for dec.More() {
- if err := b.UnmarshalOne(dec); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (d *DenseUnionBuilder) AppendValueFromString(s string) error {
- if s == NullValueStr {
- d.AppendNull()
- return nil
- }
- dec := json.NewDecoder(strings.NewReader(s))
- return d.UnmarshalOne(dec)
-}
-
-func (b *DenseUnionBuilder) UnmarshalOne(dec *json.Decoder) error {
- t, err := dec.Token()
- if err != nil {
- return err
- }
-
- switch t {
- case json.Delim('['):
- // should be [type_id, Value]
- typeID, err := dec.Token()
- if err != nil {
- return err
- }
-
- var typeCode int8
-
- switch tid := typeID.(type) {
- case json.Number:
- id, err := tid.Int64()
- if err != nil {
- return err
- }
- typeCode = int8(id)
- case float64:
- if tid != float64(int64(tid)) {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Type: reflect.TypeOf(int8(0)),
- Struct: fmt.Sprint(b.Type()),
- Value: "float",
- }
- }
- typeCode = int8(tid)
- }
-
- childNum := b.typeIDtoChildID[typeCode]
- if childNum == arrow.InvalidUnionChildID {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: "invalid type code",
- }
- }
-
- b.Append(typeCode)
- if err := b.children[childNum].UnmarshalOne(dec); err != nil {
- return err
- }
-
- endArr, err := dec.Token()
- if err != nil {
- return err
- }
-
- if endArr != json.Delim(']') {
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: "union value array should have exactly 2 elements",
- }
- }
- case nil:
- b.AppendNull()
- default:
- return &json.UnmarshalTypeError{
- Offset: dec.InputOffset(),
- Value: fmt.Sprint(t),
- Struct: fmt.Sprint(b.Type()),
- }
- }
- return nil
-}
-
-var (
- _ arrow.Array = (*SparseUnion)(nil)
- _ arrow.Array = (*DenseUnion)(nil)
- _ Union = (*SparseUnion)(nil)
- _ Union = (*DenseUnion)(nil)
- _ Builder = (*SparseUnionBuilder)(nil)
- _ Builder = (*DenseUnionBuilder)(nil)
- _ UnionBuilder = (*SparseUnionBuilder)(nil)
- _ UnionBuilder = (*DenseUnionBuilder)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/array/util.go b/vendor/github.com/apache/arrow/go/v15/arrow/array/util.go
deleted file mode 100644
index c9b730b04..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/array/util.go
+++ /dev/null
@@ -1,523 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package array
-
-import (
- "errors"
- "fmt"
- "io"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/hashing"
- "github.com/apache/arrow/go/v15/internal/json"
-)
-
-func min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
-
-type fromJSONCfg struct {
- multiDocument bool
- startOffset int64
- useNumber bool
-}
-
-type FromJSONOption func(*fromJSONCfg)
-
-func WithMultipleDocs() FromJSONOption {
- return func(c *fromJSONCfg) {
- c.multiDocument = true
- }
-}
-
-// WithStartOffset attempts to start decoding from the reader at the offset
-// passed in. If using this option the reader must fulfill the io.ReadSeeker
-// interface, or else an error will be returned.
-//
-// It will call Seek(off, io.SeekStart) on the reader
-func WithStartOffset(off int64) FromJSONOption {
- return func(c *fromJSONCfg) {
- c.startOffset = off
- }
-}
-
-// WithUseNumber enables the 'UseNumber' option on the json decoder, using
-// the json.Number type instead of assuming float64 for numbers. This is critical
-// if you have numbers that are larger than what can fit into the 53 bits of
-// an IEEE float64 mantissa and want to preserve its value.
-func WithUseNumber() FromJSONOption {
- return func(c *fromJSONCfg) {
- c.useNumber = true
- }
-}
-
-// FromJSON creates an arrow.Array from a corresponding JSON stream and defined data type. If the types in the
-// json do not match the type provided, it will return errors. This is *not* the integration test format
-// and should not be used as such. This intended to be used by consumers more similarly to the current exposing of
-// the csv reader/writer. It also returns the input offset in the reader where it finished decoding since buffering
-// by the decoder could leave the reader's cursor past where the parsing finished if attempting to parse multiple json
-// arrays from one stream.
-//
-// All the Array types implement json.Marshaller and thus can be written to json
-// using the json.Marshal function
-//
-// The JSON provided must be formatted in one of two ways:
-//
-// Default: the top level of the json must be a list which matches the type specified exactly
-// Example: `[1, 2, 3, 4, 5]` for any integer type or `[[...], null, [], .....]` for a List type
-// Struct arrays are represented a list of objects: `[{"foo": 1, "bar": "moo"}, {"foo": 5, "bar": "baz"}]`
-//
-// Using WithMultipleDocs:
-// If the JSON provided is multiple newline separated json documents, then use this option
-// and each json document will be treated as a single row of the array. This is most useful for record batches
-// and interacting with other processes that use json. For example:
-// `{"col1": 1, "col2": "row1", "col3": ...}\n{"col1": 2, "col2": "row2", "col3": ...}\n.....`
-//
-// Duration values get formated upon marshalling as a string consisting of their numeric
-// value followed by the unit suffix such as "10s" for a value of 10 and unit of Seconds.
-// with "ms" for millisecond, "us" for microsecond, and "ns" for nanosecond as the suffixes.
-// Unmarshalling duration values is more permissive since it first tries to use Go's
-// time.ParseDuration function which means it allows values in the form 3h25m0.3s in addition
-// to the same values which are output.
-//
-// Interval types are marshalled / unmarshalled as follows:
-//
-// MonthInterval is marshalled as an object with the format:
-// { "months": #}
-// DayTimeInterval is marshalled using Go's regular marshalling of structs:
-// { "days": #, "milliseconds": # }
-// MonthDayNanoInterval values are marshalled the same as DayTime using Go's struct marshalling:
-// { "months": #, "days": #, "nanoseconds": # }
-//
-// Times use a format of HH:MM or HH:MM:SS[.zzz] where the fractions of a second cannot
-// exceed the precision allowed by the time unit, otherwise unmarshalling will error.
-//
-// # Dates use YYYY-MM-DD format
-//
-// Timestamps use RFC3339Nano format except without a timezone, all of the following are valid:
-//
-// YYYY-MM-DD
-// YYYY-MM-DD[T]HH
-// YYYY-MM-DD[T]HH:MM
-// YYYY-MM-DD[T]HH:MM:SS[.zzzzzzzzzz]
-//
-// The fractions of a second cannot exceed the precision allowed by the timeunit of the datatype.
-//
-// When processing structs as objects order of keys does not matter, but keys cannot be repeated.
-func FromJSON(mem memory.Allocator, dt arrow.DataType, r io.Reader, opts ...FromJSONOption) (arr arrow.Array, offset int64, err error) {
- var cfg fromJSONCfg
- for _, o := range opts {
- o(&cfg)
- }
-
- if cfg.startOffset != 0 {
- seeker, ok := r.(io.ReadSeeker)
- if !ok {
- return nil, 0, errors.New("using StartOffset option requires reader to be a ReadSeeker, cannot seek")
- }
-
- seeker.Seek(cfg.startOffset, io.SeekStart)
- }
-
- bldr := NewBuilder(mem, dt)
- defer bldr.Release()
-
- dec := json.NewDecoder(r)
- defer func() {
- if errors.Is(err, io.EOF) {
- err = fmt.Errorf("failed parsing json: %w", io.ErrUnexpectedEOF)
- }
- }()
-
- if cfg.useNumber {
- dec.UseNumber()
- }
-
- if !cfg.multiDocument {
- t, err := dec.Token()
- if err != nil {
- return nil, dec.InputOffset(), err
- }
-
- if delim, ok := t.(json.Delim); !ok || delim != '[' {
- return nil, dec.InputOffset(), fmt.Errorf("json doc must be an array, found %s", delim)
- }
- }
-
- if err = bldr.Unmarshal(dec); err != nil {
- return nil, dec.InputOffset(), err
- }
-
- if !cfg.multiDocument {
- // consume the last ']'
- if _, err = dec.Token(); err != nil {
- return nil, dec.InputOffset(), err
- }
- }
-
- return bldr.NewArray(), dec.InputOffset(), nil
-}
-
-// RecordToStructArray constructs a struct array from the columns of the record batch
-// by referencing them, zero-copy.
-func RecordToStructArray(rec arrow.Record) *Struct {
- cols := make([]arrow.ArrayData, rec.NumCols())
- for i, c := range rec.Columns() {
- cols[i] = c.Data()
- }
-
- data := NewData(arrow.StructOf(rec.Schema().Fields()...), int(rec.NumRows()), []*memory.Buffer{nil}, cols, 0, 0)
- defer data.Release()
-
- return NewStructData(data)
-}
-
-// RecordFromStructArray is a convenience function for converting a struct array into
-// a record batch without copying the data. If the passed in schema is nil, the fields
-// of the struct will be used to define the record batch. Otherwise the passed in
-// schema will be used to create the record batch. If passed in, the schema must match
-// the fields of the struct column.
-func RecordFromStructArray(in *Struct, schema *arrow.Schema) arrow.Record {
- if schema == nil {
- schema = arrow.NewSchema(in.DataType().(*arrow.StructType).Fields(), nil)
- }
-
- return NewRecord(schema, in.fields, int64(in.Len()))
-}
-
-// RecordFromJSON creates a record batch from JSON data. See array.FromJSON for the details
-// of formatting and logic.
-//
-// A record batch from JSON is equivalent to reading a struct array in from json and then
-// converting it to a record batch.
-func RecordFromJSON(mem memory.Allocator, schema *arrow.Schema, r io.Reader, opts ...FromJSONOption) (arrow.Record, int64, error) {
- st := arrow.StructOf(schema.Fields()...)
- arr, off, err := FromJSON(mem, st, r, opts...)
- if err != nil {
- return nil, off, err
- }
- defer arr.Release()
-
- return RecordFromStructArray(arr.(*Struct), schema), off, nil
-}
-
-// RecordToJSON writes out the given record following the format of each row is a single object
-// on a single line of the output.
-func RecordToJSON(rec arrow.Record, w io.Writer) error {
- enc := json.NewEncoder(w)
-
- fields := rec.Schema().Fields()
-
- cols := make(map[string]interface{})
- for i := 0; int64(i) < rec.NumRows(); i++ {
- for j, c := range rec.Columns() {
- cols[fields[j].Name] = c.GetOneForMarshal(i)
- }
- if err := enc.Encode(cols); err != nil {
- return err
- }
- }
- return nil
-}
-
-func TableFromJSON(mem memory.Allocator, sc *arrow.Schema, recJSON []string, opt ...FromJSONOption) (arrow.Table, error) {
- batches := make([]arrow.Record, len(recJSON))
- for i, batchJSON := range recJSON {
- batch, _, err := RecordFromJSON(mem, sc, strings.NewReader(batchJSON), opt...)
- if err != nil {
- return nil, err
- }
- defer batch.Release()
- batches[i] = batch
- }
- return NewTableFromRecords(sc, batches), nil
-}
-
-func GetDictArrayData(mem memory.Allocator, valueType arrow.DataType, memoTable hashing.MemoTable, startOffset int) (*Data, error) {
- dictLen := memoTable.Size() - startOffset
- buffers := []*memory.Buffer{nil, nil}
-
- buffers[1] = memory.NewResizableBuffer(mem)
- defer buffers[1].Release()
-
- switch tbl := memoTable.(type) {
- case hashing.NumericMemoTable:
- nbytes := tbl.TypeTraits().BytesRequired(dictLen)
- buffers[1].Resize(nbytes)
- tbl.WriteOutSubset(startOffset, buffers[1].Bytes())
- case *hashing.BinaryMemoTable:
- switch valueType.ID() {
- case arrow.BINARY, arrow.STRING:
- buffers = append(buffers, memory.NewResizableBuffer(mem))
- defer buffers[2].Release()
-
- buffers[1].Resize(arrow.Int32Traits.BytesRequired(dictLen + 1))
- offsets := arrow.Int32Traits.CastFromBytes(buffers[1].Bytes())
- tbl.CopyOffsetsSubset(startOffset, offsets)
-
- valuesz := offsets[len(offsets)-1] - offsets[0]
- buffers[2].Resize(int(valuesz))
- tbl.CopyValuesSubset(startOffset, buffers[2].Bytes())
- case arrow.LARGE_BINARY, arrow.LARGE_STRING:
- buffers = append(buffers, memory.NewResizableBuffer(mem))
- defer buffers[2].Release()
-
- buffers[1].Resize(arrow.Int64Traits.BytesRequired(dictLen + 1))
- offsets := arrow.Int64Traits.CastFromBytes(buffers[1].Bytes())
- tbl.CopyLargeOffsetsSubset(startOffset, offsets)
-
- valuesz := offsets[len(offsets)-1] - offsets[0]
- buffers[2].Resize(int(valuesz))
- tbl.CopyValuesSubset(startOffset, buffers[2].Bytes())
- default: // fixed size
- bw := int(bitutil.BytesForBits(int64(valueType.(arrow.FixedWidthDataType).BitWidth())))
- buffers[1].Resize(dictLen * bw)
- tbl.CopyFixedWidthValues(startOffset, bw, buffers[1].Bytes())
- }
- default:
- return nil, fmt.Errorf("arrow/array: dictionary unifier unimplemented type: %s", valueType)
- }
-
- var nullcount int
- if idx, ok := memoTable.GetNull(); ok && idx >= startOffset {
- buffers[0] = memory.NewResizableBuffer(mem)
- defer buffers[0].Release()
- nullcount = 1
- buffers[0].Resize(int(bitutil.BytesForBits(int64(dictLen))))
- memory.Set(buffers[0].Bytes(), 0xFF)
- bitutil.ClearBit(buffers[0].Bytes(), idx)
- }
-
- return NewData(valueType, dictLen, buffers, nil, nullcount, 0), nil
-}
-
-func DictArrayFromJSON(mem memory.Allocator, dt *arrow.DictionaryType, indicesJSON, dictJSON string) (arrow.Array, error) {
- indices, _, err := FromJSON(mem, dt.IndexType, strings.NewReader(indicesJSON))
- if err != nil {
- return nil, err
- }
- defer indices.Release()
-
- dict, _, err := FromJSON(mem, dt.ValueType, strings.NewReader(dictJSON))
- if err != nil {
- return nil, err
- }
- defer dict.Release()
-
- return NewDictionaryArray(dt, indices, dict), nil
-}
-
-func ChunkedFromJSON(mem memory.Allocator, dt arrow.DataType, chunkStrs []string, opts ...FromJSONOption) (*arrow.Chunked, error) {
- chunks := make([]arrow.Array, len(chunkStrs))
- defer func() {
- for _, c := range chunks {
- if c != nil {
- c.Release()
- }
- }
- }()
-
- var err error
- for i, c := range chunkStrs {
- chunks[i], _, err = FromJSON(mem, dt, strings.NewReader(c), opts...)
- if err != nil {
- return nil, err
- }
- }
-
- return arrow.NewChunked(dt, chunks), nil
-}
-
-func getMaxBufferLen(dt arrow.DataType, length int) int {
- bufferLen := int(bitutil.BytesForBits(int64(length)))
-
- maxOf := func(bl int) int {
- if bl > bufferLen {
- return bl
- }
- return bufferLen
- }
-
- switch dt := dt.(type) {
- case *arrow.DictionaryType:
- bufferLen = maxOf(getMaxBufferLen(dt.ValueType, length))
- return maxOf(getMaxBufferLen(dt.IndexType, length))
- case *arrow.FixedSizeBinaryType:
- return maxOf(dt.ByteWidth * length)
- case arrow.FixedWidthDataType:
- return maxOf(int(bitutil.BytesForBits(int64(dt.BitWidth()))) * length)
- case *arrow.StructType:
- for _, f := range dt.Fields() {
- bufferLen = maxOf(getMaxBufferLen(f.Type, length))
- }
- return bufferLen
- case *arrow.SparseUnionType:
- // type codes
- bufferLen = maxOf(length)
- // creates children of the same length of the union
- for _, f := range dt.Fields() {
- bufferLen = maxOf(getMaxBufferLen(f.Type, length))
- }
- return bufferLen
- case *arrow.DenseUnionType:
- // type codes
- bufferLen = maxOf(length)
- // offsets
- bufferLen = maxOf(arrow.Int32SizeBytes * length)
- // create children of length 1
- for _, f := range dt.Fields() {
- bufferLen = maxOf(getMaxBufferLen(f.Type, 1))
- }
- return bufferLen
- case arrow.OffsetsDataType:
- return maxOf(dt.OffsetTypeTraits().BytesRequired(length + 1))
- case *arrow.FixedSizeListType:
- return maxOf(getMaxBufferLen(dt.Elem(), int(dt.Len())*length))
- case arrow.ExtensionType:
- return maxOf(getMaxBufferLen(dt.StorageType(), length))
- default:
- panic(fmt.Errorf("arrow/array: arrayofnull not implemented for type %s", dt))
- }
-}
-
-type nullArrayFactory struct {
- mem memory.Allocator
- dt arrow.DataType
- len int
- buf *memory.Buffer
-}
-
-func (n *nullArrayFactory) create() *Data {
- if n.buf == nil {
- bufLen := getMaxBufferLen(n.dt, n.len)
- n.buf = memory.NewResizableBuffer(n.mem)
- n.buf.Resize(bufLen)
- defer n.buf.Release()
- }
-
- var (
- dt = n.dt
- bufs = []*memory.Buffer{memory.SliceBuffer(n.buf, 0, int(bitutil.BytesForBits(int64(n.len))))}
- childData []arrow.ArrayData
- dictData arrow.ArrayData
- )
- defer bufs[0].Release()
-
- if ex, ok := dt.(arrow.ExtensionType); ok {
- dt = ex.StorageType()
- }
-
- if nf, ok := dt.(arrow.NestedType); ok {
- childData = make([]arrow.ArrayData, nf.NumFields())
- }
-
- switch dt := dt.(type) {
- case *arrow.NullType:
- case *arrow.DictionaryType:
- bufs = append(bufs, n.buf)
- arr := MakeArrayOfNull(n.mem, dt.ValueType, 0)
- defer arr.Release()
- dictData = arr.Data()
- case arrow.FixedWidthDataType:
- bufs = append(bufs, n.buf)
- case arrow.BinaryDataType:
- bufs = append(bufs, n.buf, n.buf)
- case arrow.OffsetsDataType:
- bufs = append(bufs, n.buf)
- childData[0] = n.createChild(dt, 0, 0)
- defer childData[0].Release()
- case *arrow.FixedSizeListType:
- childData[0] = n.createChild(dt, 0, n.len*int(dt.Len()))
- defer childData[0].Release()
- case *arrow.StructType:
- for i := range dt.Fields() {
- childData[i] = n.createChild(dt, i, n.len)
- defer childData[i].Release()
- }
- case *arrow.RunEndEncodedType:
- bldr := NewBuilder(n.mem, dt.RunEnds())
- defer bldr.Release()
-
- switch b := bldr.(type) {
- case *Int16Builder:
- b.Append(int16(n.len))
- case *Int32Builder:
- b.Append(int32(n.len))
- case *Int64Builder:
- b.Append(int64(n.len))
- }
-
- childData[0] = bldr.newData()
- defer childData[0].Release()
- childData[1] = n.createChild(dt.Encoded(), 1, 1)
- defer childData[1].Release()
- case arrow.UnionType:
- bufs[0].Release()
- bufs[0] = nil
- bufs = append(bufs, n.buf)
- // buffer is zeroed, but 0 may not be a valid type code
- if dt.TypeCodes()[0] != 0 {
- bufs[1] = memory.NewResizableBuffer(n.mem)
- bufs[1].Resize(n.len)
- defer bufs[1].Release()
- memory.Set(bufs[1].Bytes(), byte(dt.TypeCodes()[0]))
- }
-
- // for sparse unions we create children with the same length
- childLen := n.len
- if dt.Mode() == arrow.DenseMode {
- // for dense unions, offsets are all 0 and make children
- // with length 1
- bufs = append(bufs, n.buf)
- childLen = 1
- }
- for i := range dt.Fields() {
- childData[i] = n.createChild(dt, i, childLen)
- defer childData[i].Release()
- }
- }
-
- out := NewData(n.dt, n.len, bufs, childData, n.len, 0)
- if dictData != nil {
- out.SetDictionary(dictData)
- }
- return out
-}
-
-func (n *nullArrayFactory) createChild(dt arrow.DataType, i, length int) *Data {
- childFactory := &nullArrayFactory{
- mem: n.mem, dt: n.dt.(arrow.NestedType).Fields()[i].Type,
- len: length, buf: n.buf}
- return childFactory.create()
-}
-
-// MakeArrayOfNull creates an array of size length which is all null of the given data type.
-func MakeArrayOfNull(mem memory.Allocator, dt arrow.DataType, length int) arrow.Array {
- if dt.ID() == arrow.NULL {
- return NewNull(length)
- }
-
- data := (&nullArrayFactory{mem: mem, dt: dt, len: length}).create()
- defer data.Release()
- return MakeFromData(data)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/arrio/arrio.go b/vendor/github.com/apache/arrow/go/v15/arrow/arrio/arrio.go
deleted file mode 100644
index 51cf6dc46..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/arrio/arrio.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package arrio exposes functions to manipulate records, exposing and using
-// interfaces not unlike the ones defined in the stdlib io package.
-package arrio
-
-import (
- "errors"
- "io"
-
- "github.com/apache/arrow/go/v15/arrow"
-)
-
-// Reader is the interface that wraps the Read method.
-type Reader interface {
- // Read reads the current record from the underlying stream and an error, if any.
- // When the Reader reaches the end of the underlying stream, it returns (nil, io.EOF).
- Read() (arrow.Record, error)
-}
-
-// ReaderAt is the interface that wraps the ReadAt method.
-type ReaderAt interface {
- // ReadAt reads the i-th record from the underlying stream and an error, if any.
- ReadAt(i int64) (arrow.Record, error)
-}
-
-// Writer is the interface that wraps the Write method.
-type Writer interface {
- Write(rec arrow.Record) error
-}
-
-// Copy copies all the records available from src to dst.
-// Copy returns the number of records copied and the first error
-// encountered while copying, if any.
-//
-// A successful Copy returns err == nil, not err == EOF. Because Copy is
-// defined to read from src until EOF, it does not treat an EOF from Read as an
-// error to be reported.
-func Copy(dst Writer, src Reader) (n int64, err error) {
- for {
- rec, err := src.Read()
- if err != nil {
- if errors.Is(err, io.EOF) {
- return n, nil
- }
- return n, err
- }
- err = dst.Write(rec)
- if err != nil {
- return n, err
- }
- n++
- }
-}
-
-// CopyN copies n records (or until an error) from src to dst. It returns the
-// number of records copied and the earliest error encountered while copying. On
-// return, written == n if and only if err == nil.
-func CopyN(dst Writer, src Reader, n int64) (written int64, err error) {
- for ; written < n; written++ {
- rec, err := src.Read()
- if err != nil {
- if errors.Is(err, io.EOF) && written == n {
- return written, nil
- }
- return written, err
- }
- err = dst.Write(rec)
- if err != nil {
- return written, err
- }
- }
-
- if written != n && err == nil {
- err = io.EOF
- }
- return written, err
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/Makefile b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/Makefile
deleted file mode 100644
index 12dd1d349..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/Makefile
+++ /dev/null
@@ -1,62 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# this converts rotate instructions from "ro[lr] <reg>" -> "ro[lr] <reg>, 1" for yasm compatibility
-PERL_FIXUP_ROTATE=perl -i -pe 's/(ro[rl]\s+\w{2,3})$$/\1, 1/'
-
-C2GOASM=c2goasm
-CC=clang-11
-C_FLAGS=-target x86_64-unknown-none -masm=intel -mno-red-zone -mstackrealign -mllvm -inline-threshold=1000 \
- -fno-asynchronous-unwind-tables -fno-exceptions -fno-rtti -O3 -fno-builtin -ffast-math -fno-jump-tables -I_lib
-ASM_FLAGS_AVX2=-mavx2 -mfma
-ASM_FLAGS_SSE4=-msse4
-ASM_FLAGS_BMI2=-mbmi2
-ASM_FLAGS_POPCNT=-mpopcnt
-
-C_FLAGS_NEON=-O3 -fvectorize -mllvm -force-vector-width=16 -fno-asynchronous-unwind-tables -mno-red-zone -mstackrealign -fno-exceptions \
- -fno-rtti -fno-builtin -ffast-math -fno-jump-tables -I_lib
-
-GO_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -not -name '*_test.go')
-ALL_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -name '*.s' -not -name '*_test.go')
-
-.PHONEY: assembly
-
-INTEL_SOURCES := \
- bitmap_ops_avx2_amd64.s bitmap_ops_sse4_amd64.s
-
-#
-# ARROW-15336: DO NOT add the assembly target for Arm64 (ARM_SOURCES) until c2goasm added the Arm64 support.
-# min_max_neon_arm64.s was generated by asm2plan9s.
-# And manually formatted it as the Arm64 Plan9.
-#
-
-assembly: $(INTEL_SOURCES)
-
-_lib/bitmap_ops_avx2_amd64.s: _lib/bitmap_ops.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_AVX2) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/bitmap_ops_sse4_amd64.s: _lib/bitmap_ops.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_SSE4) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-bitmap_ops_avx2_amd64.s: _lib/bitmap_ops_avx2_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-bitmap_ops_sse4_amd64.s: _lib/bitmap_ops_sse4_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-clean:
- rm -f $(INTEL_SOURCES)
- rm -f $(addprefix _lib/,$(INTEL_SOURCES))
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops.go
deleted file mode 100644
index 7db750a6d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutil
-
-func alignedBitAndGo(left, right, out []byte) {
- var (
- nbytes = len(out)
- i = 0
- )
- if nbytes > uint64SizeBytes {
- // case where we have enough bytes to operate on words
- leftWords := bytesToUint64(left[i:])
- rightWords := bytesToUint64(right[i:])
- outWords := bytesToUint64(out[i:])
-
- for w := range outWords {
- outWords[w] = leftWords[w] & rightWords[w]
- }
-
- i += len(outWords) * uint64SizeBytes
- }
- // grab any remaining bytes that were fewer than a word
- for ; i < nbytes; i++ {
- out[i] = left[i] & right[i]
- }
-}
-
-func alignedBitAndNotGo(left, right, out []byte) {
- var (
- nbytes = len(out)
- i = 0
- )
- if nbytes > uint64SizeBytes {
- // case where we have enough bytes to operate on words
- leftWords := bytesToUint64(left[i:])
- rightWords := bytesToUint64(right[i:])
- outWords := bytesToUint64(out[i:])
-
- for w := range outWords {
- outWords[w] = leftWords[w] &^ rightWords[w]
- }
-
- i += len(outWords) * uint64SizeBytes
- }
- // grab any remaining bytes that were fewer than a word
- for ; i < nbytes; i++ {
- out[i] = left[i] &^ right[i]
- }
-}
-
-func alignedBitOrGo(left, right, out []byte) {
- var (
- nbytes = len(out)
- i = 0
- )
- if nbytes > uint64SizeBytes {
- // case where we have enough bytes to operate on words
- leftWords := bytesToUint64(left[i:])
- rightWords := bytesToUint64(right[i:])
- outWords := bytesToUint64(out[i:])
-
- for w := range outWords {
- outWords[w] = leftWords[w] | rightWords[w]
- }
-
- i += len(outWords) * uint64SizeBytes
- }
- // grab any remaining bytes that were fewer than a word
- for ; i < nbytes; i++ {
- out[i] = left[i] | right[i]
- }
-}
-
-func alignedBitXorGo(left, right, out []byte) {
- var (
- nbytes = len(out)
- i = 0
- )
- if nbytes > uint64SizeBytes {
- // case where we have enough bytes to operate on words
- leftWords := bytesToUint64(left[i:])
- rightWords := bytesToUint64(right[i:])
- outWords := bytesToUint64(out[i:])
-
- for w := range outWords {
- outWords[w] = leftWords[w] ^ rightWords[w]
- }
-
- i += len(outWords) * uint64SizeBytes
- }
- // grab any remaining bytes that were fewer than a word
- for ; i < nbytes; i++ {
- out[i] = left[i] ^ right[i]
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_amd64.go
deleted file mode 100644
index ad0fd674a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_amd64.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-import "golang.org/x/sys/cpu"
-
-func init() {
- if cpu.X86.HasAVX2 {
- bitAndOp.opAligned = bitmapAlignedAndAVX2
- bitOrOp.opAligned = bitmapAlignedOrAVX2
- bitAndNotOp.opAligned = bitmapAlignedAndNotAVX2
- bitXorOp.opAligned = bitmapAlignedXorAVX2
- } else if cpu.X86.HasSSE42 {
- bitAndOp.opAligned = bitmapAlignedAndSSE4
- bitOrOp.opAligned = bitmapAlignedOrSSE4
- bitAndNotOp.opAligned = bitmapAlignedAndNotSSE4
- bitXorOp.opAligned = bitmapAlignedXorSSE4
- } else {
- bitAndOp.opAligned = alignedBitAndGo
- bitOrOp.opAligned = alignedBitOrGo
- bitAndNotOp.opAligned = alignedBitAndNotGo
- bitXorOp.opAligned = alignedBitXorGo
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_arm64.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_arm64.go
deleted file mode 100644
index 28d95d84a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_arm64.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-func init() {
- bitAndOp.opAligned = alignedBitAndGo
- bitOrOp.opAligned = alignedBitOrGo
- bitAndNotOp.opAligned = alignedBitAndNotGo
- bitXorOp.opAligned = alignedBitXorGo
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.go
deleted file mode 100644
index 1c01bd0f3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-import (
- "unsafe"
-)
-
-//go:noescape
-func _bitmap_aligned_and_avx2(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedAndAVX2(left, right, out []byte) {
- _bitmap_aligned_and_avx2(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_or_avx2(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedOrAVX2(left, right, out []byte) {
- _bitmap_aligned_or_avx2(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_and_not_avx2(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedAndNotAVX2(left, right, out []byte) {
- _bitmap_aligned_and_not_avx2(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_xor_avx2(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedXorAVX2(left, right, out []byte) {
- _bitmap_aligned_xor_avx2(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.s b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.s
deleted file mode 100644
index 00172e865..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_avx2_amd64.s
+++ /dev/null
@@ -1,373 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_bitmap_aligned_and_avx2(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB0_12
- LONG $0x7ff98348 // cmp rcx, 127
- JA LBB0_7
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB0_3
-
-LBB0_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd3970f41 // seta r11b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- WORD $0x8441; BYTE $0xdb // test r11b, bl
- JNE LBB0_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB0_3
- WORD $0x8949; BYTE $0xca // mov r10, rcx
- LONG $0x80e28349 // and r10, -128
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB0_10:
- LONG $0x107ca1c4; WORD $0x0604 // vmovups ymm0, yword [rsi + r8]
- LONG $0x107ca1c4; WORD $0x064c; BYTE $0x20 // vmovups ymm1, yword [rsi + r8 + 32]
- LONG $0x107ca1c4; WORD $0x0654; BYTE $0x40 // vmovups ymm2, yword [rsi + r8 + 64]
- LONG $0x107ca1c4; WORD $0x065c; BYTE $0x60 // vmovups ymm3, yword [rsi + r8 + 96]
- LONG $0x547ca1c4; WORD $0x0704 // vandps ymm0, ymm0, yword [rdi + r8]
- LONG $0x5474a1c4; WORD $0x074c; BYTE $0x20 // vandps ymm1, ymm1, yword [rdi + r8 + 32]
- LONG $0x546ca1c4; WORD $0x0754; BYTE $0x40 // vandps ymm2, ymm2, yword [rdi + r8 + 64]
- LONG $0x5464a1c4; WORD $0x075c; BYTE $0x60 // vandps ymm3, ymm3, yword [rdi + r8 + 96]
- LONG $0x117ca1c4; WORD $0x0204 // vmovups yword [rdx + r8], ymm0
- LONG $0x117ca1c4; WORD $0x024c; BYTE $0x20 // vmovups yword [rdx + r8 + 32], ymm1
- LONG $0x117ca1c4; WORD $0x0254; BYTE $0x40 // vmovups yword [rdx + r8 + 64], ymm2
- LONG $0x117ca1c4; WORD $0x025c; BYTE $0x60 // vmovups yword [rdx + r8 + 96], ymm3
- LONG $0x80e88349 // sub r8, -128
- WORD $0x394d; BYTE $0xc2 // cmp r10, r8
- JNE LBB0_10
- WORD $0x3949; BYTE $0xca // cmp r10, rcx
- JE LBB0_12
-
-LBB0_3:
- WORD $0x894d; BYTE $0xd0 // mov r8, r10
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB0_5
-
-LBB0_4:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17042242 // and al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x01c28349 // add r10, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB0_4
-
-LBB0_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB0_12
-
-LBB0_6:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17042242 // and al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x44b60f42; WORD $0x0116 // movzx eax, byte [rsi + r10 + 1]
- LONG $0x17442242; BYTE $0x01 // and al, byte [rdi + r10 + 1]
- LONG $0x12448842; BYTE $0x01 // mov byte [rdx + r10 + 1], al
- LONG $0x44b60f42; WORD $0x0216 // movzx eax, byte [rsi + r10 + 2]
- LONG $0x17442242; BYTE $0x02 // and al, byte [rdi + r10 + 2]
- LONG $0x12448842; BYTE $0x02 // mov byte [rdx + r10 + 2], al
- LONG $0x44b60f42; WORD $0x0316 // movzx eax, byte [rsi + r10 + 3]
- LONG $0x17442242; BYTE $0x03 // and al, byte [rdi + r10 + 3]
- LONG $0x12448842; BYTE $0x03 // mov byte [rdx + r10 + 3], al
- LONG $0x04c28349 // add r10, 4
- WORD $0x394c; BYTE $0xd1 // cmp rcx, r10
- JNE LBB0_6
-
-LBB0_12:
- VZEROUPPER
- RET
-
-TEXT ·_bitmap_aligned_or_avx2(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB1_12
- LONG $0x7ff98348 // cmp rcx, 127
- JA LBB1_7
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB1_3
-
-LBB1_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd3970f41 // seta r11b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- WORD $0x8441; BYTE $0xdb // test r11b, bl
- JNE LBB1_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB1_3
- WORD $0x8949; BYTE $0xca // mov r10, rcx
- LONG $0x80e28349 // and r10, -128
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB1_10:
- LONG $0x107ca1c4; WORD $0x0604 // vmovups ymm0, yword [rsi + r8]
- LONG $0x107ca1c4; WORD $0x064c; BYTE $0x20 // vmovups ymm1, yword [rsi + r8 + 32]
- LONG $0x107ca1c4; WORD $0x0654; BYTE $0x40 // vmovups ymm2, yword [rsi + r8 + 64]
- LONG $0x107ca1c4; WORD $0x065c; BYTE $0x60 // vmovups ymm3, yword [rsi + r8 + 96]
- LONG $0x567ca1c4; WORD $0x0704 // vorps ymm0, ymm0, yword [rdi + r8]
- LONG $0x5674a1c4; WORD $0x074c; BYTE $0x20 // vorps ymm1, ymm1, yword [rdi + r8 + 32]
- LONG $0x566ca1c4; WORD $0x0754; BYTE $0x40 // vorps ymm2, ymm2, yword [rdi + r8 + 64]
- LONG $0x5664a1c4; WORD $0x075c; BYTE $0x60 // vorps ymm3, ymm3, yword [rdi + r8 + 96]
- LONG $0x117ca1c4; WORD $0x0204 // vmovups yword [rdx + r8], ymm0
- LONG $0x117ca1c4; WORD $0x024c; BYTE $0x20 // vmovups yword [rdx + r8 + 32], ymm1
- LONG $0x117ca1c4; WORD $0x0254; BYTE $0x40 // vmovups yword [rdx + r8 + 64], ymm2
- LONG $0x117ca1c4; WORD $0x025c; BYTE $0x60 // vmovups yword [rdx + r8 + 96], ymm3
- LONG $0x80e88349 // sub r8, -128
- WORD $0x394d; BYTE $0xc2 // cmp r10, r8
- JNE LBB1_10
- WORD $0x3949; BYTE $0xca // cmp r10, rcx
- JE LBB1_12
-
-LBB1_3:
- WORD $0x894d; BYTE $0xd0 // mov r8, r10
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB1_5
-
-LBB1_4:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17040a42 // or al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x01c28349 // add r10, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB1_4
-
-LBB1_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB1_12
-
-LBB1_6:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17040a42 // or al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x44b60f42; WORD $0x0116 // movzx eax, byte [rsi + r10 + 1]
- LONG $0x17440a42; BYTE $0x01 // or al, byte [rdi + r10 + 1]
- LONG $0x12448842; BYTE $0x01 // mov byte [rdx + r10 + 1], al
- LONG $0x44b60f42; WORD $0x0216 // movzx eax, byte [rsi + r10 + 2]
- LONG $0x17440a42; BYTE $0x02 // or al, byte [rdi + r10 + 2]
- LONG $0x12448842; BYTE $0x02 // mov byte [rdx + r10 + 2], al
- LONG $0x44b60f42; WORD $0x0316 // movzx eax, byte [rsi + r10 + 3]
- LONG $0x17440a42; BYTE $0x03 // or al, byte [rdi + r10 + 3]
- LONG $0x12448842; BYTE $0x03 // mov byte [rdx + r10 + 3], al
- LONG $0x04c28349 // add r10, 4
- WORD $0x394c; BYTE $0xd1 // cmp rcx, r10
- JNE LBB1_6
-
-LBB1_12:
- VZEROUPPER
- RET
-
-TEXT ·_bitmap_aligned_and_not_avx2(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB2_12
- LONG $0x7ff98348 // cmp rcx, 127
- JA LBB2_7
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- JMP LBB2_3
-
-LBB2_7:
- LONG $0x0a048d4c // lea r8, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd3970f41 // seta r11b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf8 // cmp r8, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd2970f41 // seta r10b
- WORD $0x3949; BYTE $0xf0 // cmp r8, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- WORD $0x8441; BYTE $0xdb // test r11b, bl
- JNE LBB2_3
- WORD $0x2045; BYTE $0xca // and r10b, r9b
- JNE LBB2_3
- WORD $0x8949; BYTE $0xc8 // mov r8, rcx
- LONG $0x80e08349 // and r8, -128
- WORD $0xc031 // xor eax, eax
-
-LBB2_10:
- LONG $0x0410fcc5; BYTE $0x06 // vmovups ymm0, yword [rsi + rax]
- LONG $0x4c10fcc5; WORD $0x2006 // vmovups ymm1, yword [rsi + rax + 32]
- LONG $0x5410fcc5; WORD $0x4006 // vmovups ymm2, yword [rsi + rax + 64]
- LONG $0x5c10fcc5; WORD $0x6006 // vmovups ymm3, yword [rsi + rax + 96]
- LONG $0x0455fcc5; BYTE $0x07 // vandnps ymm0, ymm0, yword [rdi + rax]
- LONG $0x4c55f4c5; WORD $0x2007 // vandnps ymm1, ymm1, yword [rdi + rax + 32]
- LONG $0x5455ecc5; WORD $0x4007 // vandnps ymm2, ymm2, yword [rdi + rax + 64]
- LONG $0x5c55e4c5; WORD $0x6007 // vandnps ymm3, ymm3, yword [rdi + rax + 96]
- LONG $0x0411fcc5; BYTE $0x02 // vmovups yword [rdx + rax], ymm0
- LONG $0x4c11fcc5; WORD $0x2002 // vmovups yword [rdx + rax + 32], ymm1
- LONG $0x5411fcc5; WORD $0x4002 // vmovups yword [rdx + rax + 64], ymm2
- LONG $0x5c11fcc5; WORD $0x6002 // vmovups yword [rdx + rax + 96], ymm3
- LONG $0x80e88348 // sub rax, -128
- WORD $0x3949; BYTE $0xc0 // cmp r8, rax
- JNE LBB2_10
- WORD $0x3949; BYTE $0xc8 // cmp r8, rcx
- JE LBB2_12
-
-LBB2_3:
- WORD $0x894d; BYTE $0xc1 // mov r9, r8
- WORD $0xf749; BYTE $0xd1 // not r9
- WORD $0xc1f6; BYTE $0x01 // test cl, 1
- JE LBB2_5
- LONG $0x06048a42 // mov al, byte [rsi + r8]
- WORD $0xd0f6 // not al
- LONG $0x07042242 // and al, byte [rdi + r8]
- LONG $0x02048842 // mov byte [rdx + r8], al
- LONG $0x01c88349 // or r8, 1
-
-LBB2_5:
- WORD $0x0149; BYTE $0xc9 // add r9, rcx
- JE LBB2_12
-
-LBB2_6:
- LONG $0x04b60f42; BYTE $0x06 // movzx eax, byte [rsi + r8]
- WORD $0xd0f6 // not al
- LONG $0x07042242 // and al, byte [rdi + r8]
- LONG $0x02048842 // mov byte [rdx + r8], al
- LONG $0x44b60f42; WORD $0x0106 // movzx eax, byte [rsi + r8 + 1]
- WORD $0xd0f6 // not al
- LONG $0x07442242; BYTE $0x01 // and al, byte [rdi + r8 + 1]
- LONG $0x02448842; BYTE $0x01 // mov byte [rdx + r8 + 1], al
- LONG $0x02c08349 // add r8, 2
- WORD $0x394c; BYTE $0xc1 // cmp rcx, r8
- JNE LBB2_6
-
-LBB2_12:
- VZEROUPPER
- RET
-
-TEXT ·_bitmap_aligned_xor_avx2(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB3_12
- LONG $0x7ff98348 // cmp rcx, 127
- JA LBB3_7
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB3_3
-
-LBB3_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd3970f41 // seta r11b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- WORD $0x8441; BYTE $0xdb // test r11b, bl
- JNE LBB3_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB3_3
- WORD $0x8949; BYTE $0xca // mov r10, rcx
- LONG $0x80e28349 // and r10, -128
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB3_10:
- LONG $0x107ca1c4; WORD $0x0604 // vmovups ymm0, yword [rsi + r8]
- LONG $0x107ca1c4; WORD $0x064c; BYTE $0x20 // vmovups ymm1, yword [rsi + r8 + 32]
- LONG $0x107ca1c4; WORD $0x0654; BYTE $0x40 // vmovups ymm2, yword [rsi + r8 + 64]
- LONG $0x107ca1c4; WORD $0x065c; BYTE $0x60 // vmovups ymm3, yword [rsi + r8 + 96]
- LONG $0x577ca1c4; WORD $0x0704 // vxorps ymm0, ymm0, yword [rdi + r8]
- LONG $0x5774a1c4; WORD $0x074c; BYTE $0x20 // vxorps ymm1, ymm1, yword [rdi + r8 + 32]
- LONG $0x576ca1c4; WORD $0x0754; BYTE $0x40 // vxorps ymm2, ymm2, yword [rdi + r8 + 64]
- LONG $0x5764a1c4; WORD $0x075c; BYTE $0x60 // vxorps ymm3, ymm3, yword [rdi + r8 + 96]
- LONG $0x117ca1c4; WORD $0x0204 // vmovups yword [rdx + r8], ymm0
- LONG $0x117ca1c4; WORD $0x024c; BYTE $0x20 // vmovups yword [rdx + r8 + 32], ymm1
- LONG $0x117ca1c4; WORD $0x0254; BYTE $0x40 // vmovups yword [rdx + r8 + 64], ymm2
- LONG $0x117ca1c4; WORD $0x025c; BYTE $0x60 // vmovups yword [rdx + r8 + 96], ymm3
- LONG $0x80e88349 // sub r8, -128
- WORD $0x394d; BYTE $0xc2 // cmp r10, r8
- JNE LBB3_10
- WORD $0x3949; BYTE $0xca // cmp r10, rcx
- JE LBB3_12
-
-LBB3_3:
- WORD $0x894d; BYTE $0xd0 // mov r8, r10
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB3_5
-
-LBB3_4:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17043242 // xor al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x01c28349 // add r10, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB3_4
-
-LBB3_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB3_12
-
-LBB3_6:
- LONG $0x04b60f42; BYTE $0x16 // movzx eax, byte [rsi + r10]
- LONG $0x17043242 // xor al, byte [rdi + r10]
- LONG $0x12048842 // mov byte [rdx + r10], al
- LONG $0x44b60f42; WORD $0x0116 // movzx eax, byte [rsi + r10 + 1]
- LONG $0x17443242; BYTE $0x01 // xor al, byte [rdi + r10 + 1]
- LONG $0x12448842; BYTE $0x01 // mov byte [rdx + r10 + 1], al
- LONG $0x44b60f42; WORD $0x0216 // movzx eax, byte [rsi + r10 + 2]
- LONG $0x17443242; BYTE $0x02 // xor al, byte [rdi + r10 + 2]
- LONG $0x12448842; BYTE $0x02 // mov byte [rdx + r10 + 2], al
- LONG $0x44b60f42; WORD $0x0316 // movzx eax, byte [rsi + r10 + 3]
- LONG $0x17443242; BYTE $0x03 // xor al, byte [rdi + r10 + 3]
- LONG $0x12448842; BYTE $0x03 // mov byte [rdx + r10 + 3], al
- LONG $0x04c28349 // add r10, 4
- WORD $0x394c; BYTE $0xd1 // cmp rcx, r10
- JNE LBB3_6
-
-LBB3_12:
- VZEROUPPER
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_noasm.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_noasm.go
deleted file mode 100644
index e25347791..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_noasm.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build noasm
-// +build noasm
-
-package bitutil
-
-func init() {
- bitAndOp.opAligned = alignedBitAndGo
- bitOrOp.opAligned = alignedBitOrGo
- bitAndNotOp.opAligned = alignedBitAndNotGo
- bitXorOp.opAligned = alignedBitXorGo
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_ppc64le.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_ppc64le.go
deleted file mode 100644
index 28d95d84a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_ppc64le.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-func init() {
- bitAndOp.opAligned = alignedBitAndGo
- bitOrOp.opAligned = alignedBitOrGo
- bitAndNotOp.opAligned = alignedBitAndNotGo
- bitXorOp.opAligned = alignedBitXorGo
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_s390x.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_s390x.go
deleted file mode 100644
index 28d95d84a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_s390x.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-func init() {
- bitAndOp.opAligned = alignedBitAndGo
- bitOrOp.opAligned = alignedBitOrGo
- bitAndNotOp.opAligned = alignedBitAndNotGo
- bitXorOp.opAligned = alignedBitXorGo
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.go
deleted file mode 100644
index f16bce12b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package bitutil
-
-import (
- "unsafe"
-)
-
-//go:noescape
-func _bitmap_aligned_and_sse4(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedAndSSE4(left, right, out []byte) {
- _bitmap_aligned_and_sse4(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_or_sse4(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedOrSSE4(left, right, out []byte) {
- _bitmap_aligned_or_sse4(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_and_not_sse4(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedAndNotSSE4(left, right, out []byte) {
- _bitmap_aligned_and_not_sse4(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
-
-//go:noescape
-func _bitmap_aligned_xor_sse4(left, right, out unsafe.Pointer, length int64)
-
-func bitmapAlignedXorSSE4(left, right, out []byte) {
- _bitmap_aligned_xor_sse4(unsafe.Pointer(&left[0]), unsafe.Pointer(&right[0]), unsafe.Pointer(&out[0]), int64(len(out)))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.s b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.s
deleted file mode 100644
index c15e18625..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmap_ops_sse4_amd64.s
+++ /dev/null
@@ -1,501 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_bitmap_aligned_and_sse4(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB0_16
- LONG $0x1ff98348 // cmp rcx, 31
- JA LBB0_7
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
-
-LBB0_3:
- WORD $0x894d; BYTE $0xd8 // mov r8, r11
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB0_5
-
-LBB0_4:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f042242 // and al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x01c38349 // add r11, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB0_4
-
-LBB0_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB0_16
-
-LBB0_6:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f042242 // and al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x44b60f42; WORD $0x011e // movzx eax, byte [rsi + r11 + 1]
- LONG $0x1f442242; BYTE $0x01 // and al, byte [rdi + r11 + 1]
- LONG $0x1a448842; BYTE $0x01 // mov byte [rdx + r11 + 1], al
- LONG $0x44b60f42; WORD $0x021e // movzx eax, byte [rsi + r11 + 2]
- LONG $0x1f442242; BYTE $0x02 // and al, byte [rdi + r11 + 2]
- LONG $0x1a448842; BYTE $0x02 // mov byte [rdx + r11 + 2], al
- LONG $0x44b60f42; WORD $0x031e // movzx eax, byte [rsi + r11 + 3]
- LONG $0x1f442242; BYTE $0x03 // and al, byte [rdi + r11 + 3]
- LONG $0x1a448842; BYTE $0x03 // mov byte [rdx + r11 + 3], al
- LONG $0x04c38349 // add r11, 4
- WORD $0x394c; BYTE $0xd9 // cmp rcx, r11
- JNE LBB0_6
- JMP LBB0_16
-
-LBB0_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd2970f41 // seta r10b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0x8441; BYTE $0xda // test r10b, bl
- JNE LBB0_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB0_3
- WORD $0x8949; BYTE $0xcb // mov r11, rcx
- LONG $0xe0e38349 // and r11, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc1 // mov r9, rax
- LONG $0x05e9c149 // shr r9, 5
- LONG $0x01c18349 // add r9, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB0_10
- WORD $0x894d; BYTE $0xca // mov r10, r9
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB0_12:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x540f; BYTE $0xd0 // andps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x540f; BYTE $0xc1 // andps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
- LONG $0x44100f42; WORD $0x2007 // movups xmm0, oword [rdi + r8 + 32]
- LONG $0x4c100f42; WORD $0x3007 // movups xmm1, oword [rdi + r8 + 48]
- LONG $0x54100f42; WORD $0x2006 // movups xmm2, oword [rsi + r8 + 32]
- WORD $0x540f; BYTE $0xd0 // andps xmm2, xmm0
- LONG $0x44100f42; WORD $0x3006 // movups xmm0, oword [rsi + r8 + 48]
- WORD $0x540f; BYTE $0xc1 // andps xmm0, xmm1
- LONG $0x54110f42; WORD $0x2002 // movups oword [rdx + r8 + 32], xmm2
- LONG $0x44110f42; WORD $0x3002 // movups oword [rdx + r8 + 48], xmm0
- LONG $0x40c08349 // add r8, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB0_12
- LONG $0x01c1f641 // test r9b, 1
- JE LBB0_15
-
-LBB0_14:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x540f; BYTE $0xd0 // andps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x540f; BYTE $0xc1 // andps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
-
-LBB0_15:
- WORD $0x3949; BYTE $0xcb // cmp r11, rcx
- JNE LBB0_3
-
-LBB0_16:
- RET
-
-LBB0_10:
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- LONG $0x01c1f641 // test r9b, 1
- JNE LBB0_14
- JMP LBB0_15
-
-TEXT ·_bitmap_aligned_or_sse4(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB1_16
- LONG $0x1ff98348 // cmp rcx, 31
- JA LBB1_7
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
-
-LBB1_3:
- WORD $0x894d; BYTE $0xd8 // mov r8, r11
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB1_5
-
-LBB1_4:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f040a42 // or al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x01c38349 // add r11, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB1_4
-
-LBB1_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB1_16
-
-LBB1_6:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f040a42 // or al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x44b60f42; WORD $0x011e // movzx eax, byte [rsi + r11 + 1]
- LONG $0x1f440a42; BYTE $0x01 // or al, byte [rdi + r11 + 1]
- LONG $0x1a448842; BYTE $0x01 // mov byte [rdx + r11 + 1], al
- LONG $0x44b60f42; WORD $0x021e // movzx eax, byte [rsi + r11 + 2]
- LONG $0x1f440a42; BYTE $0x02 // or al, byte [rdi + r11 + 2]
- LONG $0x1a448842; BYTE $0x02 // mov byte [rdx + r11 + 2], al
- LONG $0x44b60f42; WORD $0x031e // movzx eax, byte [rsi + r11 + 3]
- LONG $0x1f440a42; BYTE $0x03 // or al, byte [rdi + r11 + 3]
- LONG $0x1a448842; BYTE $0x03 // mov byte [rdx + r11 + 3], al
- LONG $0x04c38349 // add r11, 4
- WORD $0x394c; BYTE $0xd9 // cmp rcx, r11
- JNE LBB1_6
- JMP LBB1_16
-
-LBB1_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd2970f41 // seta r10b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0x8441; BYTE $0xda // test r10b, bl
- JNE LBB1_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB1_3
- WORD $0x8949; BYTE $0xcb // mov r11, rcx
- LONG $0xe0e38349 // and r11, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc1 // mov r9, rax
- LONG $0x05e9c149 // shr r9, 5
- LONG $0x01c18349 // add r9, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB1_10
- WORD $0x894d; BYTE $0xca // mov r10, r9
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB1_12:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x560f; BYTE $0xd0 // orps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x560f; BYTE $0xc1 // orps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
- LONG $0x44100f42; WORD $0x2007 // movups xmm0, oword [rdi + r8 + 32]
- LONG $0x4c100f42; WORD $0x3007 // movups xmm1, oword [rdi + r8 + 48]
- LONG $0x54100f42; WORD $0x2006 // movups xmm2, oword [rsi + r8 + 32]
- WORD $0x560f; BYTE $0xd0 // orps xmm2, xmm0
- LONG $0x44100f42; WORD $0x3006 // movups xmm0, oword [rsi + r8 + 48]
- WORD $0x560f; BYTE $0xc1 // orps xmm0, xmm1
- LONG $0x54110f42; WORD $0x2002 // movups oword [rdx + r8 + 32], xmm2
- LONG $0x44110f42; WORD $0x3002 // movups oword [rdx + r8 + 48], xmm0
- LONG $0x40c08349 // add r8, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB1_12
- LONG $0x01c1f641 // test r9b, 1
- JE LBB1_15
-
-LBB1_14:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x560f; BYTE $0xd0 // orps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x560f; BYTE $0xc1 // orps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
-
-LBB1_15:
- WORD $0x3949; BYTE $0xcb // cmp r11, rcx
- JNE LBB1_3
-
-LBB1_16:
- RET
-
-LBB1_10:
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- LONG $0x01c1f641 // test r9b, 1
- JNE LBB1_14
- JMP LBB1_15
-
-TEXT ·_bitmap_aligned_and_not_sse4(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB2_16
- LONG $0x1ff98348 // cmp rcx, 31
- JA LBB2_7
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
-
-LBB2_3:
- WORD $0x894d; BYTE $0xd8 // mov r8, r11
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0xc1f6; BYTE $0x01 // test cl, 1
- JE LBB2_5
- LONG $0x1e048a42 // mov al, byte [rsi + r11]
- WORD $0xd0f6 // not al
- LONG $0x1f042242 // and al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x01cb8349 // or r11, 1
-
-LBB2_5:
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- JE LBB2_16
-
-LBB2_6:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- WORD $0xd0f6 // not al
- LONG $0x1f042242 // and al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x44b60f42; WORD $0x011e // movzx eax, byte [rsi + r11 + 1]
- WORD $0xd0f6 // not al
- LONG $0x1f442242; BYTE $0x01 // and al, byte [rdi + r11 + 1]
- LONG $0x1a448842; BYTE $0x01 // mov byte [rdx + r11 + 1], al
- LONG $0x02c38349 // add r11, 2
- WORD $0x394c; BYTE $0xd9 // cmp rcx, r11
- JNE LBB2_6
- JMP LBB2_16
-
-LBB2_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd2970f41 // seta r10b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0x8441; BYTE $0xda // test r10b, bl
- JNE LBB2_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB2_3
- WORD $0x8949; BYTE $0xcb // mov r11, rcx
- LONG $0xe0e38349 // and r11, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc1 // mov r9, rax
- LONG $0x05e9c149 // shr r9, 5
- LONG $0x01c18349 // add r9, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB2_10
- WORD $0x894d; BYTE $0xca // mov r10, r9
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB2_12:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x550f; BYTE $0xd0 // andnps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x550f; BYTE $0xc1 // andnps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
- LONG $0x44100f42; WORD $0x2007 // movups xmm0, oword [rdi + r8 + 32]
- LONG $0x4c100f42; WORD $0x3007 // movups xmm1, oword [rdi + r8 + 48]
- LONG $0x54100f42; WORD $0x2006 // movups xmm2, oword [rsi + r8 + 32]
- WORD $0x550f; BYTE $0xd0 // andnps xmm2, xmm0
- LONG $0x44100f42; WORD $0x3006 // movups xmm0, oword [rsi + r8 + 48]
- WORD $0x550f; BYTE $0xc1 // andnps xmm0, xmm1
- LONG $0x54110f42; WORD $0x2002 // movups oword [rdx + r8 + 32], xmm2
- LONG $0x44110f42; WORD $0x3002 // movups oword [rdx + r8 + 48], xmm0
- LONG $0x40c08349 // add r8, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB2_12
- LONG $0x01c1f641 // test r9b, 1
- JE LBB2_15
-
-LBB2_14:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x550f; BYTE $0xd0 // andnps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x550f; BYTE $0xc1 // andnps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
-
-LBB2_15:
- WORD $0x3949; BYTE $0xcb // cmp r11, rcx
- JNE LBB2_3
-
-LBB2_16:
- RET
-
-LBB2_10:
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- LONG $0x01c1f641 // test r9b, 1
- JNE LBB2_14
- JMP LBB2_15
-
-TEXT ·_bitmap_aligned_xor_sse4(SB), $0-32
-
- MOVQ left+0(FP), DI
- MOVQ right+8(FP), SI
- MOVQ out+16(FP), DX
- MOVQ length+24(FP), CX
-
- WORD $0x8548; BYTE $0xc9 // test rcx, rcx
- JLE LBB3_16
- LONG $0x1ff98348 // cmp rcx, 31
- JA LBB3_7
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
-
-LBB3_3:
- WORD $0x894d; BYTE $0xd8 // mov r8, r11
- WORD $0xf749; BYTE $0xd0 // not r8
- WORD $0x0149; BYTE $0xc8 // add r8, rcx
- WORD $0x8949; BYTE $0xc9 // mov r9, rcx
- LONG $0x03e18349 // and r9, 3
- JE LBB3_5
-
-LBB3_4:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f043242 // xor al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x01c38349 // add r11, 1
- LONG $0xffc18349 // add r9, -1
- JNE LBB3_4
-
-LBB3_5:
- LONG $0x03f88349 // cmp r8, 3
- JB LBB3_16
-
-LBB3_6:
- LONG $0x04b60f42; BYTE $0x1e // movzx eax, byte [rsi + r11]
- LONG $0x1f043242 // xor al, byte [rdi + r11]
- LONG $0x1a048842 // mov byte [rdx + r11], al
- LONG $0x44b60f42; WORD $0x011e // movzx eax, byte [rsi + r11 + 1]
- LONG $0x1f443242; BYTE $0x01 // xor al, byte [rdi + r11 + 1]
- LONG $0x1a448842; BYTE $0x01 // mov byte [rdx + r11 + 1], al
- LONG $0x44b60f42; WORD $0x021e // movzx eax, byte [rsi + r11 + 2]
- LONG $0x1f443242; BYTE $0x02 // xor al, byte [rdi + r11 + 2]
- LONG $0x1a448842; BYTE $0x02 // mov byte [rdx + r11 + 2], al
- LONG $0x44b60f42; WORD $0x031e // movzx eax, byte [rsi + r11 + 3]
- LONG $0x1f443242; BYTE $0x03 // xor al, byte [rdi + r11 + 3]
- LONG $0x1a448842; BYTE $0x03 // mov byte [rdx + r11 + 3], al
- LONG $0x04c38349 // add r11, 4
- WORD $0x394c; BYTE $0xd9 // cmp rcx, r11
- JNE LBB3_6
- JMP LBB3_16
-
-LBB3_7:
- LONG $0x0a0c8d4c // lea r9, [rdx + rcx]
- LONG $0x0f048d48 // lea rax, [rdi + rcx]
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd2970f41 // seta r10b
- LONG $0x0e048d48 // lea rax, [rsi + rcx]
- WORD $0x3949; BYTE $0xf9 // cmp r9, rdi
- WORD $0x970f; BYTE $0xd3 // seta bl
- WORD $0x3948; BYTE $0xd0 // cmp rax, rdx
- LONG $0xd0970f41 // seta r8b
- WORD $0x3949; BYTE $0xf1 // cmp r9, rsi
- LONG $0xd1970f41 // seta r9b
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0x8441; BYTE $0xda // test r10b, bl
- JNE LBB3_3
- WORD $0x2045; BYTE $0xc8 // and r8b, r9b
- JNE LBB3_3
- WORD $0x8949; BYTE $0xcb // mov r11, rcx
- LONG $0xe0e38349 // and r11, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc1 // mov r9, rax
- LONG $0x05e9c149 // shr r9, 5
- LONG $0x01c18349 // add r9, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB3_10
- WORD $0x894d; BYTE $0xca // mov r10, r9
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB3_12:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x570f; BYTE $0xd0 // xorps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x570f; BYTE $0xc1 // xorps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
- LONG $0x44100f42; WORD $0x2007 // movups xmm0, oword [rdi + r8 + 32]
- LONG $0x4c100f42; WORD $0x3007 // movups xmm1, oword [rdi + r8 + 48]
- LONG $0x54100f42; WORD $0x2006 // movups xmm2, oword [rsi + r8 + 32]
- WORD $0x570f; BYTE $0xd0 // xorps xmm2, xmm0
- LONG $0x44100f42; WORD $0x3006 // movups xmm0, oword [rsi + r8 + 48]
- WORD $0x570f; BYTE $0xc1 // xorps xmm0, xmm1
- LONG $0x54110f42; WORD $0x2002 // movups oword [rdx + r8 + 32], xmm2
- LONG $0x44110f42; WORD $0x3002 // movups oword [rdx + r8 + 48], xmm0
- LONG $0x40c08349 // add r8, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB3_12
- LONG $0x01c1f641 // test r9b, 1
- JE LBB3_15
-
-LBB3_14:
- LONG $0x04100f42; BYTE $0x07 // movups xmm0, oword [rdi + r8]
- LONG $0x4c100f42; WORD $0x1007 // movups xmm1, oword [rdi + r8 + 16]
- LONG $0x14100f42; BYTE $0x06 // movups xmm2, oword [rsi + r8]
- WORD $0x570f; BYTE $0xd0 // xorps xmm2, xmm0
- LONG $0x44100f42; WORD $0x1006 // movups xmm0, oword [rsi + r8 + 16]
- WORD $0x570f; BYTE $0xc1 // xorps xmm0, xmm1
- LONG $0x14110f42; BYTE $0x02 // movups oword [rdx + r8], xmm2
- LONG $0x44110f42; WORD $0x1002 // movups oword [rdx + r8 + 16], xmm0
-
-LBB3_15:
- WORD $0x3949; BYTE $0xcb // cmp r11, rcx
- JNE LBB3_3
-
-LBB3_16:
- RET
-
-LBB3_10:
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
- LONG $0x01c1f641 // test r9b, 1
- JNE LBB3_14
- JMP LBB3_15
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmaps.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmaps.go
deleted file mode 100644
index 887a1920b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitmaps.go
+++ /dev/null
@@ -1,747 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutil
-
-import (
- "bytes"
- "errors"
- "math/bits"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// BitmapReader is a simple bitmap reader for a byte slice.
-type BitmapReader struct {
- bitmap []byte
- pos int
- len int
-
- current byte
- byteOffset int
- bitOffset int
-}
-
-// NewBitmapReader creates and returns a new bitmap reader for the given bitmap
-func NewBitmapReader(bitmap []byte, offset, length int) *BitmapReader {
- curbyte := byte(0)
- if length > 0 && bitmap != nil {
- curbyte = bitmap[offset/8]
- }
- return &BitmapReader{
- bitmap: bitmap,
- byteOffset: offset / 8,
- bitOffset: offset % 8,
- current: curbyte,
- len: length,
- }
-}
-
-// Set returns true if the current bit is set
-func (b *BitmapReader) Set() bool {
- return (b.current & (1 << b.bitOffset)) != 0
-}
-
-// NotSet returns true if the current bit is not set
-func (b *BitmapReader) NotSet() bool {
- return (b.current & (1 << b.bitOffset)) == 0
-}
-
-// Next advances the reader to the next bit in the bitmap.
-func (b *BitmapReader) Next() {
- b.bitOffset++
- b.pos++
- if b.bitOffset == 8 {
- b.bitOffset = 0
- b.byteOffset++
- if b.pos < b.len {
- b.current = b.bitmap[int(b.byteOffset)]
- }
- }
-}
-
-// Pos returns the current bit position in the bitmap that the reader is looking at
-func (b *BitmapReader) Pos() int { return b.pos }
-
-// Len returns the total number of bits in the bitmap
-func (b *BitmapReader) Len() int { return b.len }
-
-// BitmapWriter is a simple writer for writing bitmaps to byte slices
-type BitmapWriter struct {
- buf []byte
- pos int
- length int
-
- curByte uint8
- bitMask uint8
- byteOffset int
-}
-
-// NewBitmapWriter returns a sequential bitwise writer that preserves surrounding
-// bit values as it writes.
-func NewBitmapWriter(bitmap []byte, start, length int) *BitmapWriter {
- ret := &BitmapWriter{
- buf: bitmap,
- length: length,
- byteOffset: start / 8,
- bitMask: BitMask[start%8],
- }
- if length > 0 {
- ret.curByte = bitmap[int(ret.byteOffset)]
- }
- return ret
-}
-
-// Reset resets the position and view of the slice to restart writing a bitmap
-// to the same byte slice.
-func (b *BitmapWriter) Reset(start, length int) {
- b.pos = 0
- b.byteOffset = start / 8
- b.bitMask = BitMask[start%8]
- b.length = length
- if b.length > 0 {
- b.curByte = b.buf[int(b.byteOffset)]
- }
-}
-
-func (b *BitmapWriter) Pos() int { return b.pos }
-func (b *BitmapWriter) Set() { b.curByte |= b.bitMask }
-func (b *BitmapWriter) Clear() { b.curByte &= ^b.bitMask }
-
-// Next increments the writer to the next bit for writing.
-func (b *BitmapWriter) Next() {
- b.bitMask = b.bitMask << 1
- b.pos++
- if b.bitMask == 0 {
- b.bitMask = 0x01
- b.buf[b.byteOffset] = b.curByte
- b.byteOffset++
- if b.pos < b.length {
- b.curByte = b.buf[int(b.byteOffset)]
- }
- }
-}
-
-// AppendBools writes a series of booleans to the bitmapwriter and returns
-// the number of remaining bytes left in the buffer for writing.
-func (b *BitmapWriter) AppendBools(in []bool) int {
- space := min(b.length-b.pos, len(in))
- if space == 0 {
- return 0
- }
-
- bitOffset := bits.TrailingZeros32(uint32(b.bitMask))
- // location that the first byte needs to be written to for appending
- appslice := b.buf[int(b.byteOffset) : b.byteOffset+int(BytesForBits(int64(bitOffset+space)))]
- // update everything but curByte
- appslice[0] = b.curByte
- for i, b := range in[:space] {
- if b {
- SetBit(appslice, i+bitOffset)
- } else {
- ClearBit(appslice, i+bitOffset)
- }
- }
-
- b.pos += space
- b.bitMask = BitMask[(bitOffset+space)%8]
- b.byteOffset += (bitOffset + space) / 8
- b.curByte = appslice[len(appslice)-1]
-
- return space
-}
-
-// Finish flushes the final byte out to the byteslice in case it was not already
-// on a byte aligned boundary.
-func (b *BitmapWriter) Finish() {
- if b.length > 0 && (b.bitMask != 0x01 || b.pos < b.length) {
- b.buf[int(b.byteOffset)] = b.curByte
- }
-}
-
-// BitmapWordReader is a reader for bitmaps that reads a word at a time (a word being an 8 byte uint64)
-// and then provides functions to grab the individual trailing bytes after the last word
-type BitmapWordReader struct {
- bitmap []byte
- offset int
- nwords int
- trailingBits int
- trailingBytes int
- curword uint64
-}
-
-// NewBitmapWordReader sets up a word reader, calculates the number of trailing bits and
-// number of trailing bytes, along with the number of words.
-func NewBitmapWordReader(bitmap []byte, offset, length int) *BitmapWordReader {
- bitoffset := offset % 8
- byteOffset := offset / 8
- bm := &BitmapWordReader{
- offset: bitoffset,
- bitmap: bitmap[byteOffset : byteOffset+int(BytesForBits(int64(bitoffset+length)))],
- // decrement wordcount by 1 as we may touch two adjacent words in one iteration
- nwords: length/int(unsafe.Sizeof(uint64(0))*8) - 1,
- }
- if bm.nwords < 0 {
- bm.nwords = 0
- }
- bm.trailingBits = length - bm.nwords*int(unsafe.Sizeof(uint64(0)))*8
- bm.trailingBytes = int(BytesForBits(int64(bm.trailingBits)))
-
- if bm.nwords > 0 {
- bm.curword = toFromLEFunc(endian.Native.Uint64(bm.bitmap))
- } else if length > 0 {
- setLSB(&bm.curword, bm.bitmap[0])
- }
- return bm
-}
-
-// NextWord returns the next full word read from the bitmap, should not be called
-// if Words() is 0 as it will step outside of the bounds of the bitmap slice and panic.
-//
-// We don't perform the bounds checking in order to improve performance.
-func (bm *BitmapWordReader) NextWord() uint64 {
- bm.bitmap = bm.bitmap[unsafe.Sizeof(bm.curword):]
- word := bm.curword
- nextWord := toFromLEFunc(endian.Native.Uint64(bm.bitmap))
- if bm.offset != 0 {
- // combine two adjacent words into one word
- // |<------ next ----->|<---- current ---->|
- // +-------------+-----+-------------+-----+
- // | --- | A | B | --- |
- // +-------------+-----+-------------+-----+
- // | | offset
- // v v
- // +-----+-------------+
- // | A | B |
- // +-----+-------------+
- // |<------ word ----->|
- word >>= uint64(bm.offset)
- word |= nextWord << (int64(unsafe.Sizeof(uint64(0))*8) - int64(bm.offset))
- }
- bm.curword = nextWord
- return word
-}
-
-// NextTrailingByte returns the next trailing byte of the bitmap after the last word
-// along with the number of valid bits in that byte. When validBits < 8, that
-// is the last byte.
-//
-// If the bitmap ends on a byte alignment, then the last byte can also return 8 valid bits.
-// Thus the TrailingBytes function should be used to know how many trailing bytes to read.
-func (bm *BitmapWordReader) NextTrailingByte() (val byte, validBits int) {
- debug.Assert(bm.trailingBits > 0, "next trailing byte called with no trailing bits")
-
- if bm.trailingBits <= 8 {
- // last byte
- validBits = bm.trailingBits
- bm.trailingBits = 0
- rdr := NewBitmapReader(bm.bitmap, bm.offset, validBits)
- for i := 0; i < validBits; i++ {
- val >>= 1
- if rdr.Set() {
- val |= 0x80
- }
- rdr.Next()
- }
- val >>= (8 - validBits)
- return
- }
-
- bm.bitmap = bm.bitmap[1:]
- nextByte := bm.bitmap[0]
- val = getLSB(bm.curword)
- if bm.offset != 0 {
- val >>= byte(bm.offset)
- val |= nextByte << (8 - bm.offset)
- }
- setLSB(&bm.curword, nextByte)
- bm.trailingBits -= 8
- bm.trailingBytes--
- validBits = 8
- return
-}
-
-func (bm *BitmapWordReader) Words() int { return bm.nwords }
-func (bm *BitmapWordReader) TrailingBytes() int { return bm.trailingBytes }
-
-// BitmapWordWriter is a bitmap writer for writing a full word at a time (a word being
-// a uint64). After the last full word is written, PutNextTrailingByte can be used to
-// write the remaining trailing bytes.
-type BitmapWordWriter struct {
- bitmap []byte
- offset int
- len int
-
- bitMask uint64
- currentWord uint64
-}
-
-// NewBitmapWordWriter initializes a new bitmap word writer which will start writing
-// into the byte slice at bit offset start, expecting to write len bits.
-func NewBitmapWordWriter(bitmap []byte, start, len int) *BitmapWordWriter {
- ret := &BitmapWordWriter{
- bitmap: bitmap[start/8:],
- len: len,
- offset: start % 8,
- bitMask: (uint64(1) << uint64(start%8)) - 1,
- }
-
- if ret.offset != 0 {
- if ret.len >= int(unsafe.Sizeof(uint64(0))*8) {
- ret.currentWord = toFromLEFunc(endian.Native.Uint64(ret.bitmap))
- } else if ret.len > 0 {
- setLSB(&ret.currentWord, ret.bitmap[0])
- }
- }
- return ret
-}
-
-// PutNextWord writes the given word to the bitmap, potentially splitting across
-// two adjacent words.
-func (bm *BitmapWordWriter) PutNextWord(word uint64) {
- sz := int(unsafe.Sizeof(word))
- if bm.offset != 0 {
- // split one word into two adjacent words, don't touch unused bits
- // |<------ word ----->|
- // +-----+-------------+
- // | A | B |
- // +-----+-------------+
- // | |
- // v v offset
- // +-------------+-----+-------------+-----+
- // | --- | A | B | --- |
- // +-------------+-----+-------------+-----+
- // |<------ next ----->|<---- current ---->|
- word = (word << uint64(bm.offset)) | (word >> (int64(sz*8) - int64(bm.offset)))
- next := toFromLEFunc(endian.Native.Uint64(bm.bitmap[sz:]))
- bm.currentWord = (bm.currentWord & bm.bitMask) | (word &^ bm.bitMask)
- next = (next &^ bm.bitMask) | (word & bm.bitMask)
- endian.Native.PutUint64(bm.bitmap, toFromLEFunc(bm.currentWord))
- endian.Native.PutUint64(bm.bitmap[sz:], toFromLEFunc(next))
- bm.currentWord = next
- } else {
- endian.Native.PutUint64(bm.bitmap, toFromLEFunc(word))
- }
- bm.bitmap = bm.bitmap[sz:]
-}
-
-// PutNextTrailingByte writes the number of bits indicated by validBits from b to
-// the bitmap.
-func (bm *BitmapWordWriter) PutNextTrailingByte(b byte, validBits int) {
- curbyte := getLSB(bm.currentWord)
- if validBits == 8 {
- if bm.offset != 0 {
- b = (b << bm.offset) | (b >> (8 - bm.offset))
- next := bm.bitmap[1]
- curbyte = (curbyte & byte(bm.bitMask)) | (b &^ byte(bm.bitMask))
- next = (next &^ byte(bm.bitMask)) | (b & byte(bm.bitMask))
- bm.bitmap[0] = curbyte
- bm.bitmap[1] = next
- bm.currentWord = uint64(next)
- } else {
- bm.bitmap[0] = b
- }
- bm.bitmap = bm.bitmap[1:]
- } else {
- debug.Assert(validBits > 0 && validBits < 8, "invalid valid bits in bitmap word writer")
- debug.Assert(BytesForBits(int64(bm.offset+validBits)) <= int64(len(bm.bitmap)), "writing trailing byte outside of bounds of bitmap")
- wr := NewBitmapWriter(bm.bitmap, int(bm.offset), validBits)
- for i := 0; i < validBits; i++ {
- if b&0x01 != 0 {
- wr.Set()
- } else {
- wr.Clear()
- }
- wr.Next()
- b >>= 1
- }
- wr.Finish()
- }
-}
-
-type transferMode int8
-
-const (
- transferCopy transferMode = iota
- transferInvert
-)
-
-func transferBitmap(mode transferMode, src []byte, srcOffset, length int, dst []byte, dstOffset int) {
- if length == 0 {
- // if there's nothing to write, end early.
- return
- }
-
- bitOffset := srcOffset % 8
- destBitOffset := dstOffset % 8
-
- // slow path, one of the bitmaps are not byte aligned.
- if bitOffset != 0 || destBitOffset != 0 {
- rdr := NewBitmapWordReader(src, srcOffset, length)
- wr := NewBitmapWordWriter(dst, dstOffset, length)
-
- nwords := rdr.Words()
- for nwords > 0 {
- nwords--
- if mode == transferInvert {
- wr.PutNextWord(^rdr.NextWord())
- } else {
- wr.PutNextWord(rdr.NextWord())
- }
- }
- nbytes := rdr.TrailingBytes()
- for nbytes > 0 {
- nbytes--
- bt, validBits := rdr.NextTrailingByte()
- if mode == transferInvert {
- bt = ^bt
- }
- wr.PutNextTrailingByte(bt, validBits)
- }
- return
- }
-
- // fast path, both are starting with byte-aligned bitmaps
- nbytes := int(BytesForBits(int64(length)))
-
- // shift by its byte offset
- src = src[srcOffset/8:]
- dst = dst[dstOffset/8:]
-
- // Take care of the trailing bits in the last byte
- // E.g., if trailing_bits = 5, last byte should be
- // - low 3 bits: new bits from last byte of data buffer
- // - high 5 bits: old bits from last byte of dest buffer
- trailingBits := nbytes*8 - length
- trailMask := byte(uint(1)<<(8-trailingBits)) - 1
- var lastData byte
- if mode == transferInvert {
- for i, b := range src[:nbytes-1] {
- dst[i] = ^b
- }
- lastData = ^src[nbytes-1]
- } else {
- copy(dst, src[:nbytes-1])
- lastData = src[nbytes-1]
- }
-
- dst[nbytes-1] &= ^trailMask
- dst[nbytes-1] |= lastData & trailMask
-}
-
-// CopyBitmap copies the bitmap indicated by src, starting at bit offset srcOffset,
-// and copying length bits into dst, starting at bit offset dstOffset.
-func CopyBitmap(src []byte, srcOffset, length int, dst []byte, dstOffset int) {
- transferBitmap(transferCopy, src, srcOffset, length, dst, dstOffset)
-}
-
-// InvertBitmap copies a bit range of a bitmap, inverting it as it copies
-// over into the destination.
-func InvertBitmap(src []byte, srcOffset, length int, dst []byte, dstOffset int) {
- transferBitmap(transferInvert, src, srcOffset, length, dst, dstOffset)
-}
-
-type bitOp struct {
- opWord func(uint64, uint64) uint64
- opByte func(byte, byte) byte
- opAligned func(l, r, o []byte)
-}
-
-var (
- bitAndOp = bitOp{
- opWord: func(l, r uint64) uint64 { return l & r },
- opByte: func(l, r byte) byte { return l & r },
- }
- bitOrOp = bitOp{
- opWord: func(l, r uint64) uint64 { return l | r },
- opByte: func(l, r byte) byte { return l | r },
- }
- bitAndNotOp = bitOp{
- opWord: func(l, r uint64) uint64 { return l &^ r },
- opByte: func(l, r byte) byte { return l &^ r },
- }
- bitXorOp = bitOp{
- opWord: func(l, r uint64) uint64 { return l ^ r },
- opByte: func(l, r byte) byte { return l ^ r },
- }
-)
-
-func alignedBitmapOp(op bitOp, left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- debug.Assert(lOffset%8 == rOffset%8, "aligned bitmap op called with unaligned offsets")
- debug.Assert(lOffset%8 == outOffset%8, "aligned bitmap op called with unaligned output offset")
-
- nbytes := BytesForBits(length + lOffset%8)
- left = left[lOffset/8:]
- right = right[rOffset/8:]
- out = out[outOffset/8:]
- endMask := (lOffset + length%8)
- switch nbytes {
- case 0:
- return
- case 1: // everything within a single byte
- // (length+lOffset%8) <= 8
- mask := PrecedingBitmask[lOffset%8]
- if endMask != 0 {
- mask |= TrailingBitmask[(lOffset+length)%8]
- }
- out[0] = (out[0] & mask) | (op.opByte(left[0], right[0]) &^ mask)
- case 2: // don't send zero length to opAligned
- firstByteMask := PrecedingBitmask[lOffset%8]
- out[0] = (out[0] & firstByteMask) | (op.opByte(left[0], right[0]) &^ firstByteMask)
- lastByteMask := byte(0)
- if endMask != 0 {
- lastByteMask = TrailingBitmask[(lOffset+length)%8]
- }
- out[1] = (out[1] & lastByteMask) | (op.opByte(left[1], right[1]) &^ lastByteMask)
- default:
- firstByteMask := PrecedingBitmask[lOffset%8]
- out[0] = (out[0] & firstByteMask) | (op.opByte(left[0], right[0]) &^ firstByteMask)
-
- op.opAligned(left[1:nbytes-1], right[1:nbytes-1], out[1:nbytes-1])
-
- lastByteMask := byte(0)
- if endMask != 0 {
- lastByteMask = TrailingBitmask[(lOffset+length)%8]
- }
- out[nbytes-1] = (out[nbytes-1] & lastByteMask) | (op.opByte(left[nbytes-1], right[nbytes-1]) &^ lastByteMask)
- }
-}
-
-func unalignedBitmapOp(op bitOp, left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- leftRdr := NewBitmapWordReader(left, int(lOffset), int(length))
- rightRdr := NewBitmapWordReader(right, int(rOffset), int(length))
- writer := NewBitmapWordWriter(out, int(outOffset), int(length))
-
- for nwords := leftRdr.Words(); nwords > 0; nwords-- {
- writer.PutNextWord(op.opWord(leftRdr.NextWord(), rightRdr.NextWord()))
- }
- for nbytes := leftRdr.TrailingBytes(); nbytes > 0; nbytes-- {
- leftByte, leftValid := leftRdr.NextTrailingByte()
- rightByte, rightValid := rightRdr.NextTrailingByte()
- debug.Assert(leftValid == rightValid, "unexpected mismatch of valid bits")
- writer.PutNextTrailingByte(op.opByte(leftByte, rightByte), leftValid)
- }
-}
-
-func BitmapOp(op bitOp, left, right []byte, lOffset, rOffset int64, out []byte, outOffset, length int64) {
- if (outOffset%8 == lOffset%8) && (outOffset%8 == rOffset%8) {
- // fastcase!
- alignedBitmapOp(op, left, right, lOffset, rOffset, out, outOffset, length)
- } else {
- unalignedBitmapOp(op, left, right, lOffset, rOffset, out, outOffset, length)
- }
-}
-
-func BitmapOpAlloc(mem memory.Allocator, op bitOp, left, right []byte, lOffset, rOffset int64, length int64, outOffset int64) *memory.Buffer {
- bits := length + outOffset
- buf := memory.NewResizableBuffer(mem)
- buf.Resize(int(BytesForBits(bits)))
- BitmapOp(op, left, right, lOffset, rOffset, buf.Bytes(), outOffset, length)
- return buf
-}
-
-func BitmapAnd(left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- BitmapOp(bitAndOp, left, right, lOffset, rOffset, out, outOffset, length)
-}
-
-func BitmapOr(left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- BitmapOp(bitOrOp, left, right, lOffset, rOffset, out, outOffset, length)
-}
-
-func BitmapAndAlloc(mem memory.Allocator, left, right []byte, lOffset, rOffset int64, length, outOffset int64) *memory.Buffer {
- return BitmapOpAlloc(mem, bitAndOp, left, right, lOffset, rOffset, length, outOffset)
-}
-
-func BitmapOrAlloc(mem memory.Allocator, left, right []byte, lOffset, rOffset int64, length, outOffset int64) *memory.Buffer {
- return BitmapOpAlloc(mem, bitOrOp, left, right, lOffset, rOffset, length, outOffset)
-}
-
-func BitmapAndNot(left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- BitmapOp(bitAndNotOp, left, right, lOffset, rOffset, out, outOffset, length)
-}
-
-func BitmapAndNotAlloc(mem memory.Allocator, left, right []byte, lOffset, rOffset int64, length, outOffset int64) *memory.Buffer {
- return BitmapOpAlloc(mem, bitAndNotOp, left, right, lOffset, rOffset, length, outOffset)
-}
-
-func BitmapXor(left, right []byte, lOffset, rOffset int64, out []byte, outOffset int64, length int64) {
- BitmapOp(bitXorOp, left, right, lOffset, rOffset, out, outOffset, length)
-}
-
-func BitmapXorAlloc(mem memory.Allocator, left, right []byte, lOffset, rOffset int64, length, outOffset int64) *memory.Buffer {
- return BitmapOpAlloc(mem, bitXorOp, left, right, lOffset, rOffset, length, outOffset)
-}
-
-func BitmapEquals(left, right []byte, lOffset, rOffset int64, length int64) bool {
- if lOffset%8 == 0 && rOffset%8 == 0 {
- // byte aligned, fast path, can use bytes.Equal (memcmp)
- byteLen := length / 8
- lStart := lOffset / 8
- rStart := rOffset / 8
- if !bytes.Equal(left[lStart:lStart+byteLen], right[rStart:rStart+byteLen]) {
- return false
- }
-
- // check trailing bits
- for i := (length / 8) * 8; i < length; i++ {
- if BitIsSet(left, int(lOffset+i)) != BitIsSet(right, int(rOffset+i)) {
- return false
- }
- }
- return true
- }
-
- lrdr := NewBitmapWordReader(left, int(lOffset), int(length))
- rrdr := NewBitmapWordReader(right, int(rOffset), int(length))
-
- nwords := lrdr.Words()
- for nwords > 0 {
- nwords--
- if lrdr.NextWord() != rrdr.NextWord() {
- return false
- }
- }
-
- nbytes := lrdr.TrailingBytes()
- for nbytes > 0 {
- nbytes--
- lbt, _ := lrdr.NextTrailingByte()
- rbt, _ := rrdr.NextTrailingByte()
- if lbt != rbt {
- return false
- }
- }
- return true
-}
-
-// OptionalBitIndexer is a convenience wrapper for getting bits from
-// a bitmap which may or may not be nil.
-type OptionalBitIndexer struct {
- Bitmap []byte
- Offset int
-}
-
-func (b *OptionalBitIndexer) GetBit(i int) bool {
- return b.Bitmap == nil || BitIsSet(b.Bitmap, b.Offset+i)
-}
-
-type Bitmap struct {
- Data []byte
- Offset, Len int64
-}
-
-func bitLength(bitmaps []Bitmap) (int64, error) {
- for _, b := range bitmaps[1:] {
- if b.Len != bitmaps[0].Len {
- return -1, errors.New("bitmaps must be same length")
- }
- }
- return bitmaps[0].Len, nil
-}
-
-func runVisitWordsAndWriteLoop(bitLen int64, rdrs []*BitmapWordReader, wrs []*BitmapWordWriter, visitor func(in, out []uint64)) {
- const bitWidth int64 = int64(uint64SizeBits)
-
- visited := make([]uint64, len(rdrs))
- output := make([]uint64, len(wrs))
-
- // every reader will have same number of words, since they are same
- // length'ed. This will be inefficient in some cases. When there's
- // offsets beyond the Word boundary, every word would have to be
- // created from 2 adjoining words
- nwords := int64(rdrs[0].Words())
- bitLen -= nwords * bitWidth
- for nwords > 0 {
- nwords--
- for i := range visited {
- visited[i] = rdrs[i].NextWord()
- }
- visitor(visited, output)
- for i := range output {
- wrs[i].PutNextWord(output[i])
- }
- }
-
- // every reader will have the same number of trailing bytes, because
- // we already confirmed they have the same length. Because
- // offsets beyond the Word boundary can cause adjoining words, the
- // tailing portion could be more than one word remaining full/partial
- // words to write.
- if bitLen == 0 {
- return
- }
-
- // convert the word visitor to a bytevisitor
- byteVisitor := func(in, out []byte) {
- for i, w := range in {
- visited[i] = uint64(w)
- }
- visitor(visited, output)
- for i, w := range output {
- out[i] = byte(w)
- }
- }
-
- visitedBytes := make([]byte, len(rdrs))
- outputBytes := make([]byte, len(wrs))
- nbytes := rdrs[0].trailingBytes
- for nbytes > 0 {
- nbytes--
- memory.Set(visitedBytes, 0)
- memory.Set(outputBytes, 0)
-
- var validBits int
- for i := range rdrs {
- visitedBytes[i], validBits = rdrs[i].NextTrailingByte()
- }
- byteVisitor(visitedBytes, outputBytes)
- for i, w := range outputBytes {
- wrs[i].PutNextTrailingByte(w, validBits)
- }
- }
-}
-
-// VisitWordsAndWrite visits words of bits from each input bitmap and
-// collects outputs to a slice of output Bitmaps.
-//
-// All bitmaps must have identical lengths. The first bit in a visited
-// bitmap may be offset within the first visited word, but words will
-// otherwise contain densely packed bits loaded from the bitmap. That
-// offset within the first word is returned.
-//
-// NOTE: this function is efficient on 3+ sufficiently large bitmaps.
-// It also has a large prolog/epilog overhead and should be used
-// carefully in other cases. For 2 or fewer bitmaps, and/or smaller
-// bitmaps, try BitmapReader and or other utilities.
-func VisitWordsAndWrite(args []Bitmap, out []Bitmap, visitor func(in, out []uint64)) error {
- bitLen, err := bitLength(args)
- if err != nil {
- return err
- }
-
- rdrs, wrs := make([]*BitmapWordReader, len(args)), make([]*BitmapWordWriter, len(out))
- for i, in := range args {
- rdrs[i] = NewBitmapWordReader(in.Data, int(in.Offset), int(in.Len))
- }
- for i, o := range out {
- wrs[i] = NewBitmapWordWriter(o.Data, int(o.Offset), int(o.Len))
- }
- runVisitWordsAndWriteLoop(bitLen, rdrs, wrs, visitor)
- return nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitutil.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitutil.go
deleted file mode 100644
index dc510a8b3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/bitutil.go
+++ /dev/null
@@ -1,217 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutil
-
-import (
- "math"
- "math/bits"
- "reflect"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-var (
- BitMask = [8]byte{1, 2, 4, 8, 16, 32, 64, 128}
- FlippedBitMask = [8]byte{254, 253, 251, 247, 239, 223, 191, 127}
-)
-
-// IsMultipleOf8 returns whether v is a multiple of 8.
-func IsMultipleOf8(v int64) bool { return v&7 == 0 }
-
-// IsMultipleOf64 returns whether v is a multiple of 64
-func IsMultipleOf64(v int64) bool { return v&63 == 0 }
-
-func BytesForBits(bits int64) int64 { return (bits + 7) >> 3 }
-
-// NextPowerOf2 rounds x to the next power of two.
-func NextPowerOf2(x int) int { return 1 << uint(bits.Len(uint(x))) }
-
-// CeilByte rounds size to the next multiple of 8.
-func CeilByte(size int) int { return (size + 7) &^ 7 }
-
-// CeilByte64 rounds size to the next multiple of 8.
-func CeilByte64(size int64) int64 { return (size + 7) &^ 7 }
-
-// BitIsSet returns true if the bit at index i in buf is set (1).
-func BitIsSet(buf []byte, i int) bool { return (buf[uint(i)/8] & BitMask[byte(i)%8]) != 0 }
-
-// BitIsNotSet returns true if the bit at index i in buf is not set (0).
-func BitIsNotSet(buf []byte, i int) bool { return (buf[uint(i)/8] & BitMask[byte(i)%8]) == 0 }
-
-// SetBit sets the bit at index i in buf to 1.
-func SetBit(buf []byte, i int) { buf[uint(i)/8] |= BitMask[byte(i)%8] }
-
-// ClearBit sets the bit at index i in buf to 0.
-func ClearBit(buf []byte, i int) { buf[uint(i)/8] &= FlippedBitMask[byte(i)%8] }
-
-// SetBitTo sets the bit at index i in buf to val.
-func SetBitTo(buf []byte, i int, val bool) {
- if val {
- SetBit(buf, i)
- } else {
- ClearBit(buf, i)
- }
-}
-
-// CountSetBits counts the number of 1's in buf up to n bits.
-func CountSetBits(buf []byte, offset, n int) int {
- if offset > 0 {
- return countSetBitsWithOffset(buf, offset, n)
- }
-
- count := 0
-
- uint64Bytes := n / uint64SizeBits * 8
- for _, v := range bytesToUint64(buf[:uint64Bytes]) {
- count += bits.OnesCount64(v)
- }
-
- for _, v := range buf[uint64Bytes : n/8] {
- count += bits.OnesCount8(v)
- }
-
- // tail bits
- for i := n &^ 0x7; i < n; i++ {
- if BitIsSet(buf, i) {
- count++
- }
- }
-
- return count
-}
-
-func countSetBitsWithOffset(buf []byte, offset, n int) int {
- count := 0
-
- beg := offset
- end := offset + n
-
- begU8 := roundUp(beg, uint64SizeBits)
-
- init := min(n, begU8-beg)
- for i := offset; i < beg+init; i++ {
- if BitIsSet(buf, i) {
- count++
- }
- }
-
- nU64 := (n - init) / uint64SizeBits
- begU64 := begU8 / uint64SizeBits
- endU64 := begU64 + nU64
- bufU64 := bytesToUint64(buf)
- if begU64 < len(bufU64) {
- for _, v := range bufU64[begU64:endU64] {
- count += bits.OnesCount64(v)
- }
- }
-
- // FIXME: use a fallback to bits.OnesCount8
- // before counting the tail bits.
-
- tail := beg + init + nU64*uint64SizeBits
- for i := tail; i < end; i++ {
- if BitIsSet(buf, i) {
- count++
- }
- }
-
- return count
-}
-
-func roundUp(v, f int) int {
- return (v + (f - 1)) / f * f
-}
-
-func min(a, b int) int {
- if a < b {
- return a
- }
- return b
-}
-
-const (
- uint64SizeBytes = int(unsafe.Sizeof(uint64(0)))
- uint64SizeBits = uint64SizeBytes * 8
-)
-
-func bytesToUint64(b []byte) []uint64 {
- if cap(b) < uint64SizeBytes {
- return nil
- }
-
- h := (*reflect.SliceHeader)(unsafe.Pointer(&b))
- return unsafe.Slice((*uint64)(unsafe.Pointer(h.Data)), cap(b)/uint64SizeBytes)[:len(b)/uint64SizeBytes]
-}
-
-var (
- // PrecedingBitmask is a convenience set of values as bitmasks for checking
- // prefix bits of a byte
- PrecedingBitmask = [8]byte{0, 1, 3, 7, 15, 31, 63, 127}
- // TrailingBitmask is the bitwise complement version of kPrecedingBitmask
- TrailingBitmask = [8]byte{255, 254, 252, 248, 240, 224, 192, 128}
-)
-
-// SetBitsTo is a convenience function to quickly set or unset all the bits
-// in a bitmap starting at startOffset for length bits.
-func SetBitsTo(bits []byte, startOffset, length int64, areSet bool) {
- if length == 0 {
- return
- }
-
- beg := startOffset
- end := startOffset + length
- var fill uint8 = 0
- if areSet {
- fill = math.MaxUint8
- }
-
- byteBeg := beg / 8
- byteEnd := end/8 + 1
-
- // don't modify bits before the startOffset by using this mask
- firstByteMask := PrecedingBitmask[beg%8]
- // don't modify bits past the length by using this mask
- lastByteMask := TrailingBitmask[end%8]
-
- if byteEnd == byteBeg+1 {
- // set bits within a single byte
- onlyByteMask := firstByteMask
- if end%8 != 0 {
- onlyByteMask = firstByteMask | lastByteMask
- }
-
- bits[byteBeg] &= onlyByteMask
- bits[byteBeg] |= fill &^ onlyByteMask
- return
- }
-
- // set/clear trailing bits of first byte
- bits[byteBeg] &= firstByteMask
- bits[byteBeg] |= fill &^ firstByteMask
-
- if byteEnd-byteBeg > 2 {
- memory.Set(bits[byteBeg+1:byteEnd-1], fill)
- }
-
- if end%8 == 0 {
- return
- }
-
- bits[byteEnd-1] &= lastByteMask
- bits[byteEnd-1] |= fill &^ lastByteMask
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_default.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_default.go
deleted file mode 100644
index ecbbaa70d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_default.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !s390x
-// +build !s390x
-
-package bitutil
-
-import (
- "unsafe"
-)
-
-var toFromLEFunc = func(in uint64) uint64 { return in }
-
-func getLSB(v uint64) byte {
- return (*[8]byte)(unsafe.Pointer(&v))[0]
-}
-
-func setLSB(v *uint64, b byte) {
- (*[8]byte)(unsafe.Pointer(v))[0] = b
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_s390x.go b/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_s390x.go
deleted file mode 100644
index e99605f58..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/bitutil/endian_s390x.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutil
-
-import (
- "math/bits"
- "unsafe"
-)
-
-var toFromLEFunc = bits.ReverseBytes64
-
-func getLSB(v uint64) byte {
- return (*[8]byte)(unsafe.Pointer(&v))[7]
-}
-
-func setLSB(v *uint64, b byte) {
- (*[8]byte)(unsafe.Pointer(v))[7] = b
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/compare.go b/vendor/github.com/apache/arrow/go/v15/arrow/compare.go
deleted file mode 100644
index 58569b332..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/compare.go
+++ /dev/null
@@ -1,153 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "reflect"
-)
-
-type typeEqualsConfig struct {
- metadata bool
-}
-
-// TypeEqualOption is a functional option type used for configuring type
-// equality checks.
-type TypeEqualOption func(*typeEqualsConfig)
-
-// CheckMetadata is an option for TypeEqual that allows checking for metadata
-// equality besides type equality. It only makes sense for types with metadata.
-func CheckMetadata() TypeEqualOption {
- return func(cfg *typeEqualsConfig) {
- cfg.metadata = true
- }
-}
-
-// TypeEqual checks if two DataType are the same, optionally checking metadata
-// equality for STRUCT types.
-func TypeEqual(left, right DataType, opts ...TypeEqualOption) bool {
- var cfg typeEqualsConfig
- for _, opt := range opts {
- opt(&cfg)
- }
-
- switch {
- case left == nil || right == nil:
- return left == nil && right == nil
- case left.ID() != right.ID():
- return false
- }
-
- switch l := left.(type) {
- case ExtensionType:
- return l.ExtensionEquals(right.(ExtensionType))
- case *ListType:
- if !TypeEqual(l.Elem(), right.(*ListType).Elem(), opts...) {
- return false
- }
- if cfg.metadata && !l.elem.Metadata.Equal(right.(*ListType).elem.Metadata) {
- return false
- }
- return l.elem.Nullable == right.(*ListType).elem.Nullable
- case *FixedSizeListType:
- if !TypeEqual(l.Elem(), right.(*FixedSizeListType).Elem(), opts...) {
- return false
- }
- if cfg.metadata && !l.elem.Metadata.Equal(right.(*FixedSizeListType).elem.Metadata) {
- return false
- }
- return l.n == right.(*FixedSizeListType).n && l.elem.Nullable == right.(*FixedSizeListType).elem.Nullable
- case *MapType:
- if !TypeEqual(l.KeyType(), right.(*MapType).KeyType(), opts...) {
- return false
- }
- if !TypeEqual(l.ItemType(), right.(*MapType).ItemType(), opts...) {
- return false
- }
- if l.KeyField().Nullable != right.(*MapType).KeyField().Nullable {
- return false
- }
- if l.ItemField().Nullable != right.(*MapType).ItemField().Nullable {
- return false
- }
- if cfg.metadata {
- if !l.KeyField().Metadata.Equal(right.(*MapType).KeyField().Metadata) {
- return false
- }
- if !l.ItemField().Metadata.Equal(right.(*MapType).ItemField().Metadata) {
- return false
- }
- }
- return true
- case *StructType:
- r := right.(*StructType)
- switch {
- case len(l.fields) != len(r.fields):
- return false
- case !reflect.DeepEqual(l.index, r.index):
- return false
- }
- for i := range l.fields {
- leftField, rightField := l.fields[i], r.fields[i]
- switch {
- case leftField.Name != rightField.Name:
- return false
- case leftField.Nullable != rightField.Nullable:
- return false
- case !TypeEqual(leftField.Type, rightField.Type, opts...):
- return false
- case cfg.metadata && !leftField.Metadata.Equal(rightField.Metadata):
- return false
- }
- }
- return true
- case UnionType:
- r := right.(UnionType)
- if l.Mode() != r.Mode() {
- return false
- }
-
- if !reflect.DeepEqual(l.ChildIDs(), r.ChildIDs()) {
- return false
- }
-
- for i := range l.Fields() {
- leftField, rightField := l.Fields()[i], r.Fields()[i]
- switch {
- case leftField.Name != rightField.Name:
- return false
- case leftField.Nullable != rightField.Nullable:
- return false
- case !TypeEqual(leftField.Type, rightField.Type, opts...):
- return false
- case cfg.metadata && !leftField.Metadata.Equal(rightField.Metadata):
- return false
- case l.TypeCodes()[i] != r.TypeCodes()[i]:
- return false
- }
- }
- return true
- case *TimestampType:
- r := right.(*TimestampType)
- return l.Unit == r.Unit && l.TimeZone == r.TimeZone
- case *RunEndEncodedType:
- r := right.(*RunEndEncodedType)
- return TypeEqual(l.Encoded(), r.Encoded(), opts...) &&
- TypeEqual(l.runEnds, r.runEnds, opts...)
- default:
- return reflect.DeepEqual(left, right)
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype.go
deleted file mode 100644
index b2f2329e5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype.go
+++ /dev/null
@@ -1,411 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
- "hash/maphash"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-// Type is a logical type. They can be expressed as
-// either a primitive physical type (bytes or bits of some fixed size), a
-// nested type consisting of other data types, or another data type (e.g. a
-// timestamp encoded as an int64)
-type Type int
-
-const (
- // NULL type having no physical storage
- NULL Type = iota
-
- // BOOL is a 1 bit, LSB bit-packed ordering
- BOOL
-
- // UINT8 is an Unsigned 8-bit little-endian integer
- UINT8
-
- // INT8 is a Signed 8-bit little-endian integer
- INT8
-
- // UINT16 is an Unsigned 16-bit little-endian integer
- UINT16
-
- // INT16 is a Signed 16-bit little-endian integer
- INT16
-
- // UINT32 is an Unsigned 32-bit little-endian integer
- UINT32
-
- // INT32 is a Signed 32-bit little-endian integer
- INT32
-
- // UINT64 is an Unsigned 64-bit little-endian integer
- UINT64
-
- // INT64 is a Signed 64-bit little-endian integer
- INT64
-
- // FLOAT16 is a 2-byte floating point value
- FLOAT16
-
- // FLOAT32 is a 4-byte floating point value
- FLOAT32
-
- // FLOAT64 is an 8-byte floating point value
- FLOAT64
-
- // STRING is a UTF8 variable-length string
- STRING
-
- // BINARY is a Variable-length byte type (no guarantee of UTF8-ness)
- BINARY
-
- // FIXED_SIZE_BINARY is a binary where each value occupies the same number of bytes
- FIXED_SIZE_BINARY
-
- // DATE32 is int32 days since the UNIX epoch
- DATE32
-
- // DATE64 is int64 milliseconds since the UNIX epoch
- DATE64
-
- // TIMESTAMP is an exact timestamp encoded with int64 since UNIX epoch
- // Default unit millisecond
- TIMESTAMP
-
- // TIME32 is a signed 32-bit integer, representing either seconds or
- // milliseconds since midnight
- TIME32
-
- // TIME64 is a signed 64-bit integer, representing either microseconds or
- // nanoseconds since midnight
- TIME64
-
- // INTERVAL_MONTHS is YEAR_MONTH interval in SQL style
- INTERVAL_MONTHS
-
- // INTERVAL_DAY_TIME is DAY_TIME in SQL Style
- INTERVAL_DAY_TIME
-
- // DECIMAL128 is a precision- and scale-based decimal type. Storage type depends on the
- // parameters.
- DECIMAL128
-
- // DECIMAL256 is a precision and scale based decimal type, with 256 bit max. not yet implemented
- DECIMAL256
-
- // LIST is a list of some logical data type
- LIST
-
- // STRUCT of logical types
- STRUCT
-
- // SPARSE_UNION of logical types. not yet implemented
- SPARSE_UNION
-
- // DENSE_UNION of logical types. not yet implemented
- DENSE_UNION
-
- // DICTIONARY aka Category type
- DICTIONARY
-
- // MAP is a repeated struct logical type
- MAP
-
- // Custom data type, implemented by user
- EXTENSION
-
- // Fixed size list of some logical type
- FIXED_SIZE_LIST
-
- // Measure of elapsed time in either seconds, milliseconds, microseconds
- // or nanoseconds.
- DURATION
-
- // like STRING, but 64-bit offsets. not yet implemented
- LARGE_STRING
-
- // like BINARY but with 64-bit offsets, not yet implemented
- LARGE_BINARY
-
- // like LIST but with 64-bit offsets. not yet implemented
- LARGE_LIST
-
- // calendar interval with three fields
- INTERVAL_MONTH_DAY_NANO
-
- RUN_END_ENCODED
-
- // String (UTF8) view type with 4-byte prefix and inline
- // small string optimizations
- STRING_VIEW
-
- // Bytes view with 4-byte prefix and inline small byte arrays optimization
- BINARY_VIEW
-
- // LIST_VIEW is a list of some logical data type represented with offsets and sizes
- LIST_VIEW
-
- // like LIST but with 64-bit offsets
- LARGE_LIST_VIEW
-
- // Alias to ensure we do not break any consumers
- DECIMAL = DECIMAL128
-)
-
-// DataType is the representation of an Arrow type.
-type DataType interface {
- fmt.Stringer
- ID() Type
- // Name is name of the data type.
- Name() string
- Fingerprint() string
- Layout() DataTypeLayout
-}
-
-// TypesToString is a convenience function to create a list of types
-// which are comma delimited as a string
-func TypesToString(types []DataType) string {
- var b strings.Builder
- b.WriteByte('(')
- for i, t := range types {
- if i != 0 {
- b.WriteString(", ")
- }
- b.WriteString(t.String())
- }
- b.WriteByte(')')
- return b.String()
-}
-
-// FixedWidthDataType is the representation of an Arrow type that
-// requires a fixed number of bits in memory for each element.
-type FixedWidthDataType interface {
- DataType
- // BitWidth returns the number of bits required to store a single element of this data type in memory.
- BitWidth() int
- // Bytes returns the number of bytes required to store a single element of this data type in memory.
- Bytes() int
-}
-
-type BinaryDataType interface {
- DataType
- IsUtf8() bool
- binary()
-}
-
-type BinaryViewDataType interface {
- BinaryDataType
- view()
-}
-
-type OffsetsDataType interface {
- DataType
- OffsetTypeTraits() OffsetTraits
-}
-
-func HashType(seed maphash.Seed, dt DataType) uint64 {
- var h maphash.Hash
- h.SetSeed(seed)
- h.WriteString(dt.Fingerprint())
- return h.Sum64()
-}
-
-func typeIDFingerprint(id Type) string {
- c := string(rune(int(id) + int('A')))
- return "@" + c
-}
-
-func typeFingerprint(typ DataType) string { return typeIDFingerprint(typ.ID()) }
-
-func timeUnitFingerprint(unit TimeUnit) rune {
- switch unit {
- case Second:
- return 's'
- case Millisecond:
- return 'm'
- case Microsecond:
- return 'u'
- case Nanosecond:
- return 'n'
- default:
- debug.Assert(false, "unexpected time unit")
- return rune(0)
- }
-}
-
-// BufferKind describes the type of buffer expected when defining a layout specification
-type BufferKind int8
-
-// The expected types of buffers
-const (
- KindFixedWidth BufferKind = iota
- KindVarWidth
- KindBitmap
- KindAlwaysNull
-)
-
-// BufferSpec provides a specification for the buffers of a particular datatype
-type BufferSpec struct {
- Kind BufferKind
- ByteWidth int // for KindFixedWidth
-}
-
-func (b BufferSpec) Equals(other BufferSpec) bool {
- return b.Kind == other.Kind && (b.Kind != KindFixedWidth || b.ByteWidth == other.ByteWidth)
-}
-
-// DataTypeLayout represents the physical layout of a datatype's buffers including
-// the number of and types of those binary buffers. This will correspond
-// with the buffers in the ArrayData for an array of that type.
-type DataTypeLayout struct {
- Buffers []BufferSpec
- HasDict bool
- // VariadicSpec is what the buffers beyond len(Buffers) are expected to conform to.
- VariadicSpec *BufferSpec
-}
-
-func SpecFixedWidth(w int) BufferSpec { return BufferSpec{KindFixedWidth, w} }
-func SpecVariableWidth() BufferSpec { return BufferSpec{KindVarWidth, -1} }
-func SpecBitmap() BufferSpec { return BufferSpec{KindBitmap, -1} }
-func SpecAlwaysNull() BufferSpec { return BufferSpec{KindAlwaysNull, -1} }
-
-// IsInteger is a helper to return true if the type ID provided is one of the
-// integral types of uint or int with the varying sizes.
-func IsInteger(t Type) bool {
- switch t {
- case UINT8, INT8, UINT16, INT16, UINT32, INT32, UINT64, INT64:
- return true
- }
- return false
-}
-
-// IsUnsignedInteger is a helper that returns true if the type ID provided is
-// one of the uint integral types (uint8, uint16, uint32, uint64)
-func IsUnsignedInteger(t Type) bool {
- switch t {
- case UINT8, UINT16, UINT32, UINT64:
- return true
- }
- return false
-}
-
-// IsSignedInteger is a helper that returns true if the type ID provided is
-// one of the int integral types (int8, int16, int32, int64)
-func IsSignedInteger(t Type) bool {
- switch t {
- case INT8, INT16, INT32, INT64:
- return true
- }
- return false
-}
-
-// IsFloating is a helper that returns true if the type ID provided is
-// one of Float16, Float32, or Float64
-func IsFloating(t Type) bool {
- switch t {
- case FLOAT16, FLOAT32, FLOAT64:
- return true
- }
- return false
-}
-
-// IsPrimitive returns true if the provided type ID represents a fixed width
-// primitive type.
-func IsPrimitive(t Type) bool {
- switch t {
- case BOOL, UINT8, INT8, UINT16, INT16, UINT32, INT32, UINT64, INT64,
- FLOAT16, FLOAT32, FLOAT64, DATE32, DATE64, TIME32, TIME64, TIMESTAMP,
- DURATION, INTERVAL_MONTHS, INTERVAL_DAY_TIME, INTERVAL_MONTH_DAY_NANO:
- return true
- }
- return false
-}
-
-// IsBaseBinary returns true for Binary/String and their LARGE variants
-func IsBaseBinary(t Type) bool {
- switch t {
- case BINARY, STRING, LARGE_BINARY, LARGE_STRING:
- return true
- }
- return false
-}
-
-// IsBinaryLike returns true for only BINARY and STRING
-func IsBinaryLike(t Type) bool {
- switch t {
- case BINARY, STRING:
- return true
- }
- return false
-}
-
-// IsLargeBinaryLike returns true for only LARGE_BINARY and LARGE_STRING
-func IsLargeBinaryLike(t Type) bool {
- switch t {
- case LARGE_BINARY, LARGE_STRING:
- return true
- }
- return false
-}
-
-// IsFixedSizeBinary returns true for Decimal128/256 and FixedSizeBinary
-func IsFixedSizeBinary(t Type) bool {
- switch t {
- case DECIMAL128, DECIMAL256, FIXED_SIZE_BINARY:
- return true
- }
- return false
-}
-
-// IsDecimal returns true for Decimal128 and Decimal256
-func IsDecimal(t Type) bool {
- switch t {
- case DECIMAL128, DECIMAL256:
- return true
- }
- return false
-}
-
-// IsUnion returns true for Sparse and Dense Unions
-func IsUnion(t Type) bool {
- switch t {
- case DENSE_UNION, SPARSE_UNION:
- return true
- }
- return false
-}
-
-// IsListLike returns true for List, LargeList, FixedSizeList, and Map
-func IsListLike(t Type) bool {
- switch t {
- case LIST, LARGE_LIST, FIXED_SIZE_LIST, MAP:
- return true
- }
- return false
-}
-
-// IsNested returns true for List, LargeList, FixedSizeList, Map, Struct, and Unions
-func IsNested(t Type) bool {
- switch t {
- case LIST, LARGE_LIST, FIXED_SIZE_LIST, MAP, LIST_VIEW, LARGE_LIST_VIEW, STRUCT, SPARSE_UNION, DENSE_UNION:
- return true
- }
- return false
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_binary.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_binary.go
deleted file mode 100644
index f3e601f08..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_binary.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-// OffsetTraits is a convenient interface over the various type traits
-// constants such as arrow.Int32Traits allowing types with offsets, like
-// BinaryType, StringType, LargeBinaryType and LargeStringType to have
-// a method to return information about their offset type and how many bytes
-// would be required to allocate an offset buffer for them.
-type OffsetTraits interface {
- // BytesRequired returns the number of bytes required to be allocated
- // in order to hold the passed in number of elements of this type.
- BytesRequired(int) int
-}
-
-type BinaryType struct{}
-
-func (t *BinaryType) ID() Type { return BINARY }
-func (t *BinaryType) Name() string { return "binary" }
-func (t *BinaryType) String() string { return "binary" }
-func (t *BinaryType) binary() {}
-func (t *BinaryType) Fingerprint() string { return typeFingerprint(t) }
-func (t *BinaryType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(),
- SpecFixedWidth(Int32SizeBytes), SpecVariableWidth()}}
-}
-func (t *BinaryType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-func (BinaryType) IsUtf8() bool { return false }
-
-type StringType struct{}
-
-func (t *StringType) ID() Type { return STRING }
-func (t *StringType) Name() string { return "utf8" }
-func (t *StringType) String() string { return "utf8" }
-func (t *StringType) binary() {}
-func (t *StringType) Fingerprint() string { return typeFingerprint(t) }
-func (t *StringType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(),
- SpecFixedWidth(Int32SizeBytes), SpecVariableWidth()}}
-}
-func (t *StringType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-func (StringType) IsUtf8() bool { return true }
-
-type LargeBinaryType struct{}
-
-func (t *LargeBinaryType) ID() Type { return LARGE_BINARY }
-func (t *LargeBinaryType) Name() string { return "large_binary" }
-func (t *LargeBinaryType) String() string { return "large_binary" }
-func (t *LargeBinaryType) binary() {}
-func (t *LargeBinaryType) Fingerprint() string { return typeFingerprint(t) }
-func (t *LargeBinaryType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(),
- SpecFixedWidth(Int64SizeBytes), SpecVariableWidth()}}
-}
-func (t *LargeBinaryType) OffsetTypeTraits() OffsetTraits { return Int64Traits }
-func (LargeBinaryType) IsUtf8() bool { return false }
-
-type LargeStringType struct{}
-
-func (t *LargeStringType) ID() Type { return LARGE_STRING }
-func (t *LargeStringType) Name() string { return "large_utf8" }
-func (t *LargeStringType) String() string { return "large_utf8" }
-func (t *LargeStringType) binary() {}
-func (t *LargeStringType) Fingerprint() string { return typeFingerprint(t) }
-func (t *LargeStringType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(),
- SpecFixedWidth(Int64SizeBytes), SpecVariableWidth()}}
-}
-func (t *LargeStringType) OffsetTypeTraits() OffsetTraits { return Int64Traits }
-func (LargeStringType) IsUtf8() bool { return true }
-
-type BinaryViewType struct{}
-
-func (*BinaryViewType) ID() Type { return BINARY_VIEW }
-func (*BinaryViewType) Name() string { return "binary_view" }
-func (*BinaryViewType) String() string { return "binary_view" }
-func (*BinaryViewType) IsUtf8() bool { return false }
-func (*BinaryViewType) binary() {}
-func (*BinaryViewType) view() {}
-func (t *BinaryViewType) Fingerprint() string { return typeFingerprint(t) }
-func (*BinaryViewType) Layout() DataTypeLayout {
- variadic := SpecVariableWidth()
- return DataTypeLayout{
- Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(ViewHeaderSizeBytes)},
- VariadicSpec: &variadic,
- }
-}
-
-type StringViewType struct{}
-
-func (*StringViewType) ID() Type { return STRING_VIEW }
-func (*StringViewType) Name() string { return "string_view" }
-func (*StringViewType) String() string { return "string_view" }
-func (*StringViewType) IsUtf8() bool { return true }
-func (*StringViewType) binary() {}
-func (*StringViewType) view() {}
-func (t *StringViewType) Fingerprint() string { return typeFingerprint(t) }
-func (*StringViewType) Layout() DataTypeLayout {
- variadic := SpecVariableWidth()
- return DataTypeLayout{
- Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(ViewHeaderSizeBytes)},
- VariadicSpec: &variadic,
- }
-}
-
-var (
- BinaryTypes = struct {
- Binary BinaryDataType
- String BinaryDataType
- LargeBinary BinaryDataType
- LargeString BinaryDataType
- BinaryView BinaryDataType
- StringView BinaryDataType
- }{
- Binary: &BinaryType{},
- String: &StringType{},
- LargeBinary: &LargeBinaryType{},
- LargeString: &LargeStringType{},
- BinaryView: &BinaryViewType{},
- StringView: &StringViewType{},
- }
-
- _ BinaryViewDataType = (*StringViewType)(nil)
- _ BinaryViewDataType = (*BinaryViewType)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_encoded.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_encoded.go
deleted file mode 100644
index 749f03a58..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_encoded.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-type EncodedType interface {
- DataType
- Encoded() DataType
-}
-
-// RunEndEncodedType is the datatype to represent a run-end encoded
-// array of data. ValueNullable defaults to true, but can be set false
-// if this should represent a type with a non-nullable value field.
-type RunEndEncodedType struct {
- runEnds DataType
- values DataType
- ValueNullable bool
-}
-
-func RunEndEncodedOf(runEnds, values DataType) *RunEndEncodedType {
- return &RunEndEncodedType{runEnds: runEnds, values: values, ValueNullable: true}
-}
-
-func (*RunEndEncodedType) ID() Type { return RUN_END_ENCODED }
-func (*RunEndEncodedType) Name() string { return "run_end_encoded" }
-func (*RunEndEncodedType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecAlwaysNull()}}
-}
-
-func (t *RunEndEncodedType) String() string {
- return t.Name() + "<run_ends: " + t.runEnds.String() + ", values: " + t.values.String() + ">"
-}
-
-func (t *RunEndEncodedType) Fingerprint() string {
- return typeFingerprint(t) + "{" + t.runEnds.Fingerprint() + ";" + t.values.Fingerprint() + ";}"
-}
-
-func (t *RunEndEncodedType) RunEnds() DataType { return t.runEnds }
-func (t *RunEndEncodedType) Encoded() DataType { return t.values }
-
-func (t *RunEndEncodedType) Fields() []Field {
- return []Field{
- {Name: "run_ends", Type: t.runEnds},
- {Name: "values", Type: t.values, Nullable: t.ValueNullable},
- }
-}
-
-func (t *RunEndEncodedType) NumFields() int { return 2 }
-
-func (*RunEndEncodedType) ValidRunEndsType(dt DataType) bool {
- switch dt.ID() {
- case INT16, INT32, INT64:
- return true
- }
- return false
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_extension.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_extension.go
deleted file mode 100644
index f0bcccdf2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_extension.go
+++ /dev/null
@@ -1,180 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
- "reflect"
- "sync"
-)
-
-var (
- // global extension type registry, initially left null to avoid paying
- // the cost if no extension types are used.
- // the choice to use a sync.Map here is because it's expected that most
- // use cases would be to register some number of types at initialization
- // or otherwise and leave them rather than a pattern of repeatedly registering
- // and unregistering types. As per the documentation for sync.Map
- // (https://pkg.go.dev/sync#Map), it is specialized for the case where an entry
- // is written once but read many times which fits our case here as we register
- // a type once and then have to read it many times when deserializing messages
- // with that type.
- extTypeRegistry *sync.Map
- // used for initializing the registry once and only once
- initReg sync.Once
-)
-
-// convenience function to ensure that the type registry is initialized once
-// and only once in a goroutine-safe manner.
-func getExtTypeRegistry() *sync.Map {
- initReg.Do(func() { extTypeRegistry = &sync.Map{} })
- return extTypeRegistry
-}
-
-// RegisterExtensionType registers the provided ExtensionType by calling ExtensionName
-// to use as a Key for registering the type. If a type with the same name is already
-// registered then this will return an error saying so, otherwise it will return nil
-// if successful registering the type.
-// This function is safe to call from multiple goroutines simultaneously.
-func RegisterExtensionType(typ ExtensionType) error {
- name := typ.ExtensionName()
- registry := getExtTypeRegistry()
- if _, existed := registry.LoadOrStore(name, typ); existed {
- return fmt.Errorf("arrow: type extension with name %s already defined", name)
- }
- return nil
-}
-
-// UnregisterExtensionType removes the type with the given name from the registry
-// causing any messages with that type which come in to be expressed with their
-// metadata and underlying type instead of the extension type that isn't known.
-// This function is safe to call from multiple goroutines simultaneously.
-func UnregisterExtensionType(typName string) error {
- registry := getExtTypeRegistry()
- if _, loaded := registry.LoadAndDelete(typName); !loaded {
- return fmt.Errorf("arrow: no type extension with name %s found", typName)
- }
- return nil
-}
-
-// GetExtensionType retrieves and returns the extension type of the given name
-// from the global extension type registry. If the type isn't found it will return
-// nil. This function is safe to call from multiple goroutines concurrently.
-func GetExtensionType(typName string) ExtensionType {
- registry := getExtTypeRegistry()
- if val, ok := registry.Load(typName); ok {
- return val.(ExtensionType)
- }
- return nil
-}
-
-// ExtensionType is an interface for handling user-defined types. They must be
-// DataTypes and must embed arrow.ExtensionBase in them in order to work properly
-// ensuring that they always have the expected base behavior.
-//
-// The arrow.ExtensionBase that needs to be embedded implements the DataType interface
-// leaving the remaining functions having to be implemented by the actual user-defined
-// type in order to be handled properly.
-type ExtensionType interface {
- DataType
- // ArrayType should return the reflect.TypeOf(ExtensionArrayType{}) where the
- // ExtensionArrayType is a type that implements the array.ExtensionArray interface.
- // Such a type must also embed the array.ExtensionArrayBase in it. This will be used
- // when creating arrays of this ExtensionType by using reflect.New
- ArrayType() reflect.Type
- // ExtensionName is what will be used when registering / unregistering this extension
- // type. Multiple user-defined types can be defined with a parameterized ExtensionType
- // as long as the parameter is used in the ExtensionName to distinguish the instances
- // in the global Extension Type registry.
- // The return from this is also what will be placed in the metadata for IPC communication
- // under the key ARROW:extension:name
- ExtensionName() string
- // StorageType returns the underlying storage type which is used by this extension
- // type. It is already implemented by the ExtensionBase struct and thus does not need
- // to be re-implemented by a user-defined type.
- StorageType() DataType
- // ExtensionEquals is used to tell whether two ExtensionType instances are equal types.
- ExtensionEquals(ExtensionType) bool
- // Serialize should produce any extra metadata necessary for initializing an instance of
- // this user-defined type. Not all user-defined types require this and it is valid to return
- // nil from this function or an empty slice. This is used for the IPC format and will be
- // added to metadata for IPC communication under the key ARROW:extension:metadata
- // This should be implemented such that it is valid to be called by multiple goroutines
- // concurrently.
- Serialize() string
- // Deserialize is called when reading in extension arrays and types via the IPC format
- // in order to construct an instance of the appropriate extension type. The passed in data
- // is pulled from the ARROW:extension:metadata key and may be nil or an empty slice.
- // If the storage type is incorrect or something else is invalid with the data this should
- // return nil and an appropriate error.
- Deserialize(storageType DataType, data string) (ExtensionType, error)
-
- mustEmbedExtensionBase()
-}
-
-// ExtensionBase is the base struct for user-defined Extension Types which must be
-// embedded in any user-defined types like so:
-//
-// type UserDefinedType struct {
-// arrow.ExtensionBase
-// // any other data
-// }
-type ExtensionBase struct {
- // Storage is the underlying storage type
- Storage DataType
-}
-
-// ID always returns arrow.EXTENSION and should not be overridden
-func (*ExtensionBase) ID() Type { return EXTENSION }
-
-// Name should always return "extension" and should not be overridden
-func (*ExtensionBase) Name() string { return "extension" }
-
-// String by default will return "extension_type<storage=storage_type>" by can be overridden
-// to customize what is printed out when printing this extension type.
-func (e *ExtensionBase) String() string { return fmt.Sprintf("extension_type<storage=%s>", e.Storage) }
-
-// StorageType returns the underlying storage type and exists so that functions
-// written against the ExtensionType interface can access the storage type.
-func (e *ExtensionBase) StorageType() DataType { return e.Storage }
-
-func (e *ExtensionBase) Fingerprint() string { return typeFingerprint(e) + e.Storage.Fingerprint() }
-
-func (e *ExtensionBase) Fields() []Field {
- if nested, ok := e.Storage.(NestedType); ok {
- return nested.Fields()
- }
- return nil
-}
-
-func (e *ExtensionBase) NumFields() int {
- if nested, ok := e.Storage.(NestedType); ok {
- return nested.NumFields()
- }
- return 0
-}
-
-func (e *ExtensionBase) Layout() DataTypeLayout { return e.Storage.Layout() }
-
-// this no-op exists to ensure that this type must be embedded in any user-defined extension type.
-//
-//lint:ignore U1000 this function is intentionally unused as it only exists to ensure embedding happens
-func (ExtensionBase) mustEmbedExtensionBase() {}
-
-var (
- _ DataType = (*ExtensionBase)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_fixedwidth.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_fixedwidth.go
deleted file mode 100644
index 6a7071422..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_fixedwidth.go
+++ /dev/null
@@ -1,823 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
- "strconv"
- "sync"
- "time"
-
- "github.com/apache/arrow/go/v15/internal/json"
-
- "golang.org/x/xerrors"
-)
-
-type BooleanType struct{}
-
-func (t *BooleanType) ID() Type { return BOOL }
-func (t *BooleanType) Name() string { return "bool" }
-func (t *BooleanType) String() string { return "bool" }
-func (t *BooleanType) Fingerprint() string { return typeFingerprint(t) }
-func (BooleanType) Bytes() int { return 1 }
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (t *BooleanType) BitWidth() int { return 1 }
-
-func (BooleanType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecBitmap()}}
-}
-
-type FixedSizeBinaryType struct {
- ByteWidth int
-}
-
-func (*FixedSizeBinaryType) ID() Type { return FIXED_SIZE_BINARY }
-func (*FixedSizeBinaryType) Name() string { return "fixed_size_binary" }
-func (t *FixedSizeBinaryType) BitWidth() int { return 8 * t.ByteWidth }
-func (t *FixedSizeBinaryType) Bytes() int { return t.ByteWidth }
-func (t *FixedSizeBinaryType) Fingerprint() string { return typeFingerprint(t) }
-func (t *FixedSizeBinaryType) String() string {
- return "fixed_size_binary[" + strconv.Itoa(t.ByteWidth) + "]"
-}
-func (t *FixedSizeBinaryType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(t.ByteWidth)}}
-}
-
-type (
- Timestamp int64
- Time32 int32
- Time64 int64
- TimeUnit int
- Date32 int32
- Date64 int64
- Duration int64
-)
-
-// Date32FromTime returns a Date32 value from a time object
-func Date32FromTime(t time.Time) Date32 {
- return Date32(t.Truncate(24*time.Hour).Unix() / int64((time.Hour * 24).Seconds()))
-}
-
-func (d Date32) ToTime() time.Time {
- return time.Unix(0, 0).UTC().AddDate(0, 0, int(d))
-}
-
-func (d Date32) FormattedString() string {
- return d.ToTime().Format("2006-01-02")
-}
-
-// Date64FromTime returns a Date64 value from a time object
-func Date64FromTime(t time.Time) Date64 {
- // truncate to the start of the day to get the correct value
- t = t.Truncate(24 * time.Hour)
- return Date64(t.Unix()*1e3 + int64(t.Nanosecond())/1e6)
-}
-
-func (d Date64) ToTime() time.Time {
- days := int(int64(d) / (time.Hour * 24).Milliseconds())
- return time.Unix(0, 0).UTC().AddDate(0, 0, days)
-}
-
-func (d Date64) FormattedString() string {
- return d.ToTime().Format("2006-01-02")
-}
-
-// TimestampFromStringInLocation is like TimestampFromString, but treats the time instant
-// as if it were in the provided timezone before converting to UTC for internal representation.
-func TimestampFromStringInLocation(val string, unit TimeUnit, loc *time.Location) (Timestamp, bool, error) {
- if len(val) < 10 {
- return 0, false, fmt.Errorf("%w: invalid timestamp string", ErrInvalid)
- }
-
- var (
- format = "2006-01-02"
- zoneFmt string
- lenWithoutZone = len(val)
- )
-
- if lenWithoutZone > 10 {
- switch {
- case val[len(val)-1] == 'Z':
- zoneFmt = "Z"
- lenWithoutZone--
- case val[len(val)-3] == '+' || val[len(val)-3] == '-':
- zoneFmt = "-07"
- lenWithoutZone -= 3
- case val[len(val)-5] == '+' || val[len(val)-5] == '-':
- zoneFmt = "-0700"
- lenWithoutZone -= 5
- case val[len(val)-6] == '+' || val[len(val)-6] == '-':
- zoneFmt = "-07:00"
- lenWithoutZone -= 6
- }
- }
-
- switch {
- case lenWithoutZone == 13:
- format += string(val[10]) + "15"
- case lenWithoutZone == 16:
- format += string(val[10]) + "15:04"
- case lenWithoutZone >= 19:
- format += string(val[10]) + "15:04:05.999999999"
- }
-
- // error if we're truncating precision
- // don't need a case for nano as time.Parse will already error if
- // more than nanosecond precision is provided
- switch {
- case unit == Second && lenWithoutZone > 19:
- return 0, zoneFmt != "", xerrors.New("provided more than second precision for timestamp[s]")
- case unit == Millisecond && lenWithoutZone > 23:
- return 0, zoneFmt != "", xerrors.New("provided more than millisecond precision for timestamp[ms]")
- case unit == Microsecond && lenWithoutZone > 26:
- return 0, zoneFmt != "", xerrors.New("provided more than microsecond precision for timestamp[us]")
- }
-
- format += zoneFmt
- out, err := time.Parse(format, val)
- if err != nil {
- return 0, zoneFmt != "", fmt.Errorf("%w: %s", ErrInvalid, err)
- }
- if loc != time.UTC {
- // convert to UTC by putting the same time instant in the desired location
- // before converting to UTC
- out = out.In(loc).UTC()
- }
-
- ts, err := TimestampFromTime(out, unit)
- return ts, zoneFmt != "", err
-}
-
-// TimestampFromString parses a string and returns a timestamp for the given unit
-// level.
-//
-// The timestamp should be in one of the following forms, [T] can be either T
-// or a space, and [.zzzzzzzzz] can be either left out or up to 9 digits of
-// fractions of a second.
-//
-// YYYY-MM-DD
-// YYYY-MM-DD[T]HH
-// YYYY-MM-DD[T]HH:MM
-// YYYY-MM-DD[T]HH:MM:SS[.zzzzzzzz]
-//
-// You can also optionally have an ending Z to indicate UTC or indicate a specific
-// timezone using ±HH, ±HHMM or ±HH:MM at the end of the string.
-func TimestampFromString(val string, unit TimeUnit) (Timestamp, error) {
- tm, _, err := TimestampFromStringInLocation(val, unit, time.UTC)
- return tm, err
-}
-
-func (t Timestamp) ToTime(unit TimeUnit) time.Time {
- switch unit {
- case Second:
- return time.Unix(int64(t), 0).UTC()
- case Millisecond:
- return time.UnixMilli(int64(t)).UTC()
- case Microsecond:
- return time.UnixMicro(int64(t)).UTC()
- default:
- return time.Unix(0, int64(t)).UTC()
- }
-}
-
-// TimestampFromTime allows converting time.Time to Timestamp
-func TimestampFromTime(val time.Time, unit TimeUnit) (Timestamp, error) {
- switch unit {
- case Second:
- return Timestamp(val.Unix()), nil
- case Millisecond:
- return Timestamp(val.Unix()*1e3 + int64(val.Nanosecond())/1e6), nil
- case Microsecond:
- return Timestamp(val.Unix()*1e6 + int64(val.Nanosecond())/1e3), nil
- case Nanosecond:
- return Timestamp(val.UnixNano()), nil
- default:
- return 0, fmt.Errorf("%w: unexpected timestamp unit: %s", ErrInvalid, unit)
- }
-}
-
-// Time32FromString parses a string to return a Time32 value in the given unit,
-// unit needs to be only seconds or milliseconds and the string should be in the
-// form of HH:MM or HH:MM:SS[.zzz] where the fractions of a second are optional.
-func Time32FromString(val string, unit TimeUnit) (Time32, error) {
- switch unit {
- case Second:
- if len(val) > 8 {
- return 0, xerrors.New("cannot convert larger than second precision to time32s")
- }
- case Millisecond:
- if len(val) > 12 {
- return 0, xerrors.New("cannot convert larger than millisecond precision to time32ms")
- }
- case Microsecond, Nanosecond:
- return 0, xerrors.New("time32 can only be seconds or milliseconds")
- }
-
- var (
- out time.Time
- err error
- )
- switch {
- case len(val) == 5:
- out, err = time.Parse("15:04", val)
- default:
- out, err = time.Parse("15:04:05.999", val)
- }
- if err != nil {
- return 0, err
- }
- t := out.Sub(time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC))
- if unit == Second {
- return Time32(t.Seconds()), nil
- }
- return Time32(t.Milliseconds()), nil
-}
-
-func (t Time32) ToTime(unit TimeUnit) time.Time {
- return time.Unix(0, int64(t)*int64(unit.Multiplier())).UTC()
-}
-
-func (t Time32) FormattedString(unit TimeUnit) string {
- const baseFmt = "15:04:05"
- tm := t.ToTime(unit)
- switch unit {
- case Second:
- return tm.Format(baseFmt)
- case Millisecond:
- return tm.Format(baseFmt + ".000")
- }
- return ""
-}
-
-// Time64FromString parses a string to return a Time64 value in the given unit,
-// unit needs to be only microseconds or nanoseconds and the string should be in the
-// form of HH:MM or HH:MM:SS[.zzzzzzzzz] where the fractions of a second are optional.
-func Time64FromString(val string, unit TimeUnit) (Time64, error) {
- // don't need to check length for nanoseconds as Parse will already error
- // if more than 9 digits are provided for the fractional second
- switch unit {
- case Microsecond:
- if len(val) > 15 {
- return 0, xerrors.New("cannot convert larger than microsecond precision to time64us")
- }
- case Second, Millisecond:
- return 0, xerrors.New("time64 should only be microseconds or nanoseconds")
- }
-
- var (
- out time.Time
- err error
- )
- switch {
- case len(val) == 5:
- out, err = time.Parse("15:04", val)
- default:
- out, err = time.Parse("15:04:05.999999999", val)
- }
- if err != nil {
- return 0, err
- }
- t := out.Sub(time.Date(0, 1, 1, 0, 0, 0, 0, time.UTC))
- if unit == Microsecond {
- return Time64(t.Microseconds()), nil
- }
- return Time64(t.Nanoseconds()), nil
-}
-
-func (t Time64) ToTime(unit TimeUnit) time.Time {
- return time.Unix(0, int64(t)*int64(unit.Multiplier())).UTC()
-}
-
-func (t Time64) FormattedString(unit TimeUnit) string {
- const baseFmt = "15:04:05.000000"
- tm := t.ToTime(unit)
- switch unit {
- case Microsecond:
- return tm.Format(baseFmt)
- case Nanosecond:
- return tm.Format(baseFmt + "000")
- }
- return ""
-}
-
-const (
- Second TimeUnit = iota
- Millisecond
- Microsecond
- Nanosecond
-)
-
-var TimeUnitValues = []TimeUnit{Second, Millisecond, Microsecond, Nanosecond}
-
-// Multiplier returns a time.Duration value to multiply by in order to
-// convert the value into nanoseconds
-func (u TimeUnit) Multiplier() time.Duration {
- return [...]time.Duration{time.Second, time.Millisecond, time.Microsecond, time.Nanosecond}[uint(u)&3]
-}
-
-func (u TimeUnit) String() string { return [...]string{"s", "ms", "us", "ns"}[uint(u)&3] }
-
-type TemporalWithUnit interface {
- FixedWidthDataType
- TimeUnit() TimeUnit
-}
-
-// TimestampType is encoded as a 64-bit signed integer since the UNIX epoch (2017-01-01T00:00:00Z).
-// The zero-value is a second and time zone neutral. Time zone neutral can be
-// considered UTC without having "UTC" as a time zone.
-type TimestampType struct {
- Unit TimeUnit
- TimeZone string
-
- loc *time.Location
- mx sync.RWMutex
-}
-
-func (*TimestampType) ID() Type { return TIMESTAMP }
-func (*TimestampType) Name() string { return "timestamp" }
-func (t *TimestampType) String() string {
- switch len(t.TimeZone) {
- case 0:
- return "timestamp[" + t.Unit.String() + "]"
- default:
- return "timestamp[" + t.Unit.String() + ", tz=" + t.TimeZone + "]"
- }
-}
-
-func (t *TimestampType) Fingerprint() string {
- return fmt.Sprintf("%s%d:%s", typeFingerprint(t)+string(timeUnitFingerprint(t.Unit)), len(t.TimeZone), t.TimeZone)
-}
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (*TimestampType) BitWidth() int { return 64 }
-
-func (*TimestampType) Bytes() int { return Int64SizeBytes }
-
-func (*TimestampType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(TimestampSizeBytes)}}
-}
-
-func (t *TimestampType) TimeUnit() TimeUnit { return t.Unit }
-
-// ClearCachedLocation clears the cached time.Location object in the type.
-// This should be called if you change the value of the TimeZone after having
-// potentially called GetZone.
-func (t *TimestampType) ClearCachedLocation() {
- t.mx.Lock()
- defer t.mx.Unlock()
- t.loc = nil
-}
-
-// GetZone returns a *time.Location that represents the current TimeZone member
-// of the TimestampType. If it is "", "UTC", or "utc", you'll get time.UTC.
-// Otherwise it must either be a valid tzdata string such as "America/New_York"
-// or of the format +HH:MM or -HH:MM indicating an absolute offset.
-//
-// The location object will be cached in the TimestampType for subsequent calls
-// so if you change the value of TimeZone after calling this, make sure to call
-// ClearCachedLocation.
-func (t *TimestampType) GetZone() (*time.Location, error) {
- t.mx.RLock()
- if t.loc != nil {
- defer t.mx.RUnlock()
- return t.loc, nil
- }
-
- t.mx.RUnlock()
- t.mx.Lock()
- defer t.mx.Unlock()
- // in case GetZone() was called in between releasing the read lock and
- // getting the write lock
- if t.loc != nil {
- return t.loc, nil
- }
- // the TimeZone string is allowed to be either a valid tzdata string
- // such as "America/New_York" or an absolute offset of the form -XX:XX
- // or +XX:XX
- //
- // As such we have two methods we can try, first we'll try LoadLocation
- // and if that fails, we'll test for an absolute offset.
- if t.TimeZone == "" || t.TimeZone == "UTC" || t.TimeZone == "utc" {
- t.loc = time.UTC
- return time.UTC, nil
- }
-
- if loc, err := time.LoadLocation(t.TimeZone); err == nil {
- t.loc = loc
- return loc, err
- }
-
- // at this point we know that the timezone isn't empty, and didn't match
- // anything in the tzdata names. So either it's an absolute offset
- // or it's invalid.
- timetz, err := time.Parse("-07:00", t.TimeZone)
- if err != nil {
- return time.UTC, fmt.Errorf("could not find timezone location for '%s'", t.TimeZone)
- }
-
- _, offset := timetz.Zone()
- t.loc = time.FixedZone(t.TimeZone, offset)
- return t.loc, nil
-}
-
-// GetToTimeFunc returns a function for converting an arrow.Timestamp value into a
-// time.Time object with proper TimeZone and precision. If the TimeZone is invalid
-// this will return an error. It calls GetZone to get the timezone for consistency.
-func (t *TimestampType) GetToTimeFunc() (func(Timestamp) time.Time, error) {
- tz, err := t.GetZone()
- if err != nil {
- return nil, err
- }
-
- switch t.Unit {
- case Second:
- return func(v Timestamp) time.Time { return time.Unix(int64(v), 0).In(tz) }, nil
- case Millisecond:
- return func(v Timestamp) time.Time { return time.UnixMilli(int64(v)).In(tz) }, nil
- case Microsecond:
- return func(v Timestamp) time.Time { return time.UnixMicro(int64(v)).In(tz) }, nil
- case Nanosecond:
- return func(v Timestamp) time.Time { return time.Unix(0, int64(v)).In(tz) }, nil
- }
- return nil, fmt.Errorf("invalid timestamp unit: %s", t.Unit)
-}
-
-// Time32Type is encoded as a 32-bit signed integer, representing either seconds or milliseconds since midnight.
-type Time32Type struct {
- Unit TimeUnit
-}
-
-func (*Time32Type) ID() Type { return TIME32 }
-func (*Time32Type) Name() string { return "time32" }
-func (*Time32Type) BitWidth() int { return 32 }
-func (*Time32Type) Bytes() int { return Int32SizeBytes }
-func (t *Time32Type) String() string { return "time32[" + t.Unit.String() + "]" }
-func (t *Time32Type) Fingerprint() string {
- return typeFingerprint(t) + string(timeUnitFingerprint(t.Unit))
-}
-
-func (Time32Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Time32SizeBytes)}}
-}
-
-func (t *Time32Type) TimeUnit() TimeUnit { return t.Unit }
-
-// Time64Type is encoded as a 64-bit signed integer, representing either microseconds or nanoseconds since midnight.
-type Time64Type struct {
- Unit TimeUnit
-}
-
-func (*Time64Type) ID() Type { return TIME64 }
-func (*Time64Type) Name() string { return "time64" }
-func (*Time64Type) BitWidth() int { return 64 }
-func (*Time64Type) Bytes() int { return Int64SizeBytes }
-func (t *Time64Type) String() string { return "time64[" + t.Unit.String() + "]" }
-func (t *Time64Type) Fingerprint() string {
- return typeFingerprint(t) + string(timeUnitFingerprint(t.Unit))
-}
-
-func (Time64Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Time64SizeBytes)}}
-}
-
-func (t *Time64Type) TimeUnit() TimeUnit { return t.Unit }
-
-// DurationType is encoded as a 64-bit signed integer, representing an amount
-// of elapsed time without any relation to a calendar artifact.
-type DurationType struct {
- Unit TimeUnit
-}
-
-func (*DurationType) ID() Type { return DURATION }
-func (*DurationType) Name() string { return "duration" }
-func (*DurationType) BitWidth() int { return 64 }
-func (*DurationType) Bytes() int { return Int64SizeBytes }
-func (t *DurationType) String() string { return "duration[" + t.Unit.String() + "]" }
-func (t *DurationType) Fingerprint() string {
- return typeFingerprint(t) + string(timeUnitFingerprint(t.Unit))
-}
-
-func (DurationType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(DurationSizeBytes)}}
-}
-
-func (t *DurationType) TimeUnit() TimeUnit { return t.Unit }
-
-// Float16Type represents a floating point value encoded with a 16-bit precision.
-type Float16Type struct{}
-
-func (t *Float16Type) ID() Type { return FLOAT16 }
-func (t *Float16Type) Name() string { return "float16" }
-func (t *Float16Type) String() string { return "float16" }
-func (t *Float16Type) Fingerprint() string { return typeFingerprint(t) }
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (t *Float16Type) BitWidth() int { return 16 }
-
-func (Float16Type) Bytes() int { return Float16SizeBytes }
-
-func (Float16Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Float16SizeBytes)}}
-}
-
-type DecimalType interface {
- DataType
- GetPrecision() int32
- GetScale() int32
-}
-
-func NewDecimalType(id Type, prec, scale int32) (DecimalType, error) {
- switch id {
- case DECIMAL128:
- return &Decimal128Type{Precision: prec, Scale: scale}, nil
- case DECIMAL256:
- return &Decimal256Type{Precision: prec, Scale: scale}, nil
- default:
- return nil, fmt.Errorf("%w: must use DECIMAL128 or DECIMAL256 to create a DecimalType", ErrInvalid)
- }
-}
-
-// Decimal128Type represents a fixed-size 128-bit decimal type.
-type Decimal128Type struct {
- Precision int32
- Scale int32
-}
-
-func (*Decimal128Type) ID() Type { return DECIMAL128 }
-func (*Decimal128Type) Name() string { return "decimal" }
-func (*Decimal128Type) BitWidth() int { return 128 }
-func (*Decimal128Type) Bytes() int { return Decimal128SizeBytes }
-func (t *Decimal128Type) String() string {
- return fmt.Sprintf("%s(%d, %d)", t.Name(), t.Precision, t.Scale)
-}
-func (t *Decimal128Type) Fingerprint() string {
- return fmt.Sprintf("%s[%d,%d,%d]", typeFingerprint(t), t.BitWidth(), t.Precision, t.Scale)
-}
-func (t *Decimal128Type) GetPrecision() int32 { return t.Precision }
-func (t *Decimal128Type) GetScale() int32 { return t.Scale }
-
-func (Decimal128Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Decimal128SizeBytes)}}
-}
-
-// Decimal256Type represents a fixed-size 256-bit decimal type.
-type Decimal256Type struct {
- Precision int32
- Scale int32
-}
-
-func (*Decimal256Type) ID() Type { return DECIMAL256 }
-func (*Decimal256Type) Name() string { return "decimal256" }
-func (*Decimal256Type) BitWidth() int { return 256 }
-func (*Decimal256Type) Bytes() int { return Decimal256SizeBytes }
-func (t *Decimal256Type) String() string {
- return fmt.Sprintf("%s(%d, %d)", t.Name(), t.Precision, t.Scale)
-}
-func (t *Decimal256Type) Fingerprint() string {
- return fmt.Sprintf("%s[%d,%d,%d]", typeFingerprint(t), t.BitWidth(), t.Precision, t.Scale)
-}
-func (t *Decimal256Type) GetPrecision() int32 { return t.Precision }
-func (t *Decimal256Type) GetScale() int32 { return t.Scale }
-
-func (Decimal256Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Decimal256SizeBytes)}}
-}
-
-// MonthInterval represents a number of months.
-type MonthInterval int32
-
-func (m *MonthInterval) UnmarshalJSON(data []byte) error {
- var val struct {
- Months int32 `json:"months"`
- }
- if err := json.Unmarshal(data, &val); err != nil {
- return err
- }
-
- *m = MonthInterval(val.Months)
- return nil
-}
-
-func (m MonthInterval) MarshalJSON() ([]byte, error) {
- return json.Marshal(struct {
- Months int32 `json:"months"`
- }{int32(m)})
-}
-
-// MonthIntervalType is encoded as a 32-bit signed integer,
-// representing a number of months.
-type MonthIntervalType struct{}
-
-func (*MonthIntervalType) ID() Type { return INTERVAL_MONTHS }
-func (*MonthIntervalType) Name() string { return "month_interval" }
-func (*MonthIntervalType) String() string { return "month_interval" }
-func (*MonthIntervalType) Fingerprint() string { return typeIDFingerprint(INTERVAL_MONTHS) + "M" }
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (t *MonthIntervalType) BitWidth() int { return 32 }
-
-func (MonthIntervalType) Bytes() int { return Int32SizeBytes }
-func (MonthIntervalType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(MonthIntervalSizeBytes)}}
-}
-
-// DayTimeInterval represents a number of days and milliseconds (fraction of day).
-type DayTimeInterval struct {
- Days int32 `json:"days"`
- Milliseconds int32 `json:"milliseconds"`
-}
-
-// DayTimeIntervalType is encoded as a pair of 32-bit signed integer,
-// representing a number of days and milliseconds (fraction of day).
-type DayTimeIntervalType struct{}
-
-func (*DayTimeIntervalType) ID() Type { return INTERVAL_DAY_TIME }
-func (*DayTimeIntervalType) Name() string { return "day_time_interval" }
-func (*DayTimeIntervalType) String() string { return "day_time_interval" }
-func (*DayTimeIntervalType) Fingerprint() string { return typeIDFingerprint(INTERVAL_DAY_TIME) + "d" }
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (t *DayTimeIntervalType) BitWidth() int { return 64 }
-
-func (DayTimeIntervalType) Bytes() int { return DayTimeIntervalSizeBytes }
-func (DayTimeIntervalType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(DayTimeIntervalSizeBytes)}}
-}
-
-// MonthDayNanoInterval represents a number of months, days and nanoseconds (fraction of day).
-type MonthDayNanoInterval struct {
- Months int32 `json:"months"`
- Days int32 `json:"days"`
- Nanoseconds int64 `json:"nanoseconds"`
-}
-
-// MonthDayNanoIntervalType is encoded as two signed 32-bit integers representing
-// a number of months and a number of days, followed by a 64-bit integer representing
-// the number of nanoseconds since midnight for fractions of a day.
-type MonthDayNanoIntervalType struct{}
-
-func (*MonthDayNanoIntervalType) ID() Type { return INTERVAL_MONTH_DAY_NANO }
-func (*MonthDayNanoIntervalType) Name() string { return "month_day_nano_interval" }
-func (*MonthDayNanoIntervalType) String() string { return "month_day_nano_interval" }
-func (*MonthDayNanoIntervalType) Fingerprint() string {
- return typeIDFingerprint(INTERVAL_MONTH_DAY_NANO) + "N"
-}
-
-// BitWidth returns the number of bits required to store a single element of this data type in memory.
-func (*MonthDayNanoIntervalType) BitWidth() int { return 128 }
-func (*MonthDayNanoIntervalType) Bytes() int { return MonthDayNanoIntervalSizeBytes }
-func (MonthDayNanoIntervalType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(MonthDayNanoIntervalSizeBytes)}}
-}
-
-type TimestampConvertOp int8
-
-const (
- ConvDIVIDE = iota
- ConvMULTIPLY
-)
-
-var timestampConversion = [...][4]struct {
- op TimestampConvertOp
- factor int64
-}{
- Nanosecond: {
- Nanosecond: {ConvMULTIPLY, int64(time.Nanosecond)},
- Microsecond: {ConvDIVIDE, int64(time.Microsecond)},
- Millisecond: {ConvDIVIDE, int64(time.Millisecond)},
- Second: {ConvDIVIDE, int64(time.Second)},
- },
- Microsecond: {
- Nanosecond: {ConvMULTIPLY, int64(time.Microsecond)},
- Microsecond: {ConvMULTIPLY, 1},
- Millisecond: {ConvDIVIDE, int64(time.Millisecond / time.Microsecond)},
- Second: {ConvDIVIDE, int64(time.Second / time.Microsecond)},
- },
- Millisecond: {
- Nanosecond: {ConvMULTIPLY, int64(time.Millisecond)},
- Microsecond: {ConvMULTIPLY, int64(time.Millisecond / time.Microsecond)},
- Millisecond: {ConvMULTIPLY, 1},
- Second: {ConvDIVIDE, int64(time.Second / time.Millisecond)},
- },
- Second: {
- Nanosecond: {ConvMULTIPLY, int64(time.Second)},
- Microsecond: {ConvMULTIPLY, int64(time.Second / time.Microsecond)},
- Millisecond: {ConvMULTIPLY, int64(time.Second / time.Millisecond)},
- Second: {ConvMULTIPLY, 1},
- },
-}
-
-func GetTimestampConvert(in, out TimeUnit) (op TimestampConvertOp, factor int64) {
- conv := timestampConversion[int(in)][int(out)]
- return conv.op, conv.factor
-}
-
-func ConvertTimestampValue(in, out TimeUnit, value int64) int64 {
- conv := timestampConversion[int(in)][int(out)]
- switch conv.op {
- case ConvMULTIPLY:
- return value * conv.factor
- case ConvDIVIDE:
- return value / conv.factor
- }
-
- return 0
-}
-
-// DictionaryType represents categorical or dictionary-encoded in-memory data
-// It contains a dictionary-encoded value type (any type) and an index type
-// (any integer type).
-type DictionaryType struct {
- IndexType DataType
- ValueType DataType
- Ordered bool
-}
-
-func (*DictionaryType) ID() Type { return DICTIONARY }
-func (*DictionaryType) Name() string { return "dictionary" }
-func (d *DictionaryType) BitWidth() int { return d.IndexType.(FixedWidthDataType).BitWidth() }
-func (d *DictionaryType) Bytes() int { return d.IndexType.(FixedWidthDataType).Bytes() }
-func (d *DictionaryType) String() string {
- return fmt.Sprintf("%s<values=%s, indices=%s, ordered=%t>",
- d.Name(), d.ValueType, d.IndexType, d.Ordered)
-}
-func (d *DictionaryType) Fingerprint() string {
- indexFingerprint := d.IndexType.Fingerprint()
- valueFingerprint := d.ValueType.Fingerprint()
- ordered := "1"
- if !d.Ordered {
- ordered = "0"
- }
-
- if len(valueFingerprint) > 0 {
- return typeFingerprint(d) + indexFingerprint + valueFingerprint + ordered
- }
- return ordered
-}
-
-func (d *DictionaryType) Layout() DataTypeLayout {
- layout := d.IndexType.Layout()
- layout.HasDict = true
- return layout
-}
-
-var (
- FixedWidthTypes = struct {
- Boolean FixedWidthDataType
- Date32 FixedWidthDataType
- Date64 FixedWidthDataType
- DayTimeInterval FixedWidthDataType
- Duration_s FixedWidthDataType
- Duration_ms FixedWidthDataType
- Duration_us FixedWidthDataType
- Duration_ns FixedWidthDataType
- Float16 FixedWidthDataType
- MonthInterval FixedWidthDataType
- Time32s FixedWidthDataType
- Time32ms FixedWidthDataType
- Time64us FixedWidthDataType
- Time64ns FixedWidthDataType
- Timestamp_s FixedWidthDataType
- Timestamp_ms FixedWidthDataType
- Timestamp_us FixedWidthDataType
- Timestamp_ns FixedWidthDataType
- MonthDayNanoInterval FixedWidthDataType
- }{
- Boolean: &BooleanType{},
- Date32: &Date32Type{},
- Date64: &Date64Type{},
- DayTimeInterval: &DayTimeIntervalType{},
- Duration_s: &DurationType{Unit: Second},
- Duration_ms: &DurationType{Unit: Millisecond},
- Duration_us: &DurationType{Unit: Microsecond},
- Duration_ns: &DurationType{Unit: Nanosecond},
- Float16: &Float16Type{},
- MonthInterval: &MonthIntervalType{},
- Time32s: &Time32Type{Unit: Second},
- Time32ms: &Time32Type{Unit: Millisecond},
- Time64us: &Time64Type{Unit: Microsecond},
- Time64ns: &Time64Type{Unit: Nanosecond},
- Timestamp_s: &TimestampType{Unit: Second, TimeZone: "UTC"},
- Timestamp_ms: &TimestampType{Unit: Millisecond, TimeZone: "UTC"},
- Timestamp_us: &TimestampType{Unit: Microsecond, TimeZone: "UTC"},
- Timestamp_ns: &TimestampType{Unit: Nanosecond, TimeZone: "UTC"},
- MonthDayNanoInterval: &MonthDayNanoIntervalType{},
- }
-
- _ FixedWidthDataType = (*FixedSizeBinaryType)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_nested.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_nested.go
deleted file mode 100644
index 9a8873a50..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_nested.go
+++ /dev/null
@@ -1,993 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "errors"
- "fmt"
- "strconv"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-type (
- NestedType interface {
- DataType
-
- // Fields method provides a copy of NestedType fields
- // (so it can be safely mutated and will not result in updating the NestedType).
- Fields() []Field
- // NumFields provides the number of fields without allocating.
- NumFields() int
- }
-
- ListLikeType interface {
- DataType
- Elem() DataType
- ElemField() Field
- }
-
- VarLenListLikeType interface {
- ListLikeType
- }
-)
-
-// ListType describes a nested type in which each array slot contains
-// a variable-size sequence of values, all having the same relative type.
-type ListType struct {
- elem Field
-}
-
-func ListOfField(f Field) *ListType {
- if f.Type == nil {
- panic("arrow: nil type for list field")
- }
- return &ListType{elem: f}
-}
-
-// ListOf returns the list type with element type t.
-// For example, if t represents int32, ListOf(t) represents []int32.
-//
-// ListOf panics if t is nil or invalid. NullableElem defaults to true
-func ListOf(t DataType) *ListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &ListType{elem: Field{Name: "item", Type: t, Nullable: true}}
-}
-
-// ListOfNonNullable is like ListOf but NullableElem defaults to false, indicating
-// that the child type should be marked as non-nullable.
-func ListOfNonNullable(t DataType) *ListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &ListType{elem: Field{Name: "item", Type: t, Nullable: false}}
-}
-
-func (*ListType) ID() Type { return LIST }
-func (*ListType) Name() string { return "list" }
-
-func (t *ListType) String() string {
- if t.elem.Nullable {
- return fmt.Sprintf("list<%s: %s, nullable>", t.elem.Name, t.elem.Type)
- }
- return fmt.Sprintf("list<%s: %s>", t.elem.Name, t.elem.Type)
-}
-
-func (t *ListType) Fingerprint() string {
- child := t.elem.Type.Fingerprint()
- if len(child) > 0 {
- return typeFingerprint(t) + "{" + child + "}"
- }
- return ""
-}
-
-func (t *ListType) SetElemMetadata(md Metadata) { t.elem.Metadata = md }
-
-func (t *ListType) SetElemNullable(n bool) { t.elem.Nullable = n }
-
-// Elem returns the ListType's element type.
-func (t *ListType) Elem() DataType { return t.elem.Type }
-
-func (t *ListType) ElemField() Field {
- return t.elem
-}
-
-func (t *ListType) Fields() []Field { return []Field{t.ElemField()} }
-
-func (t *ListType) NumFields() int { return 1 }
-
-func (*ListType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Int32SizeBytes)}}
-}
-
-func (*ListType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-
-type LargeListType struct {
- ListType
-}
-
-func (LargeListType) ID() Type { return LARGE_LIST }
-func (LargeListType) Name() string { return "large_list" }
-func (t *LargeListType) String() string {
- return "large_" + t.ListType.String()
-}
-
-func (t *LargeListType) Fingerprint() string {
- child := t.elem.Type.Fingerprint()
- if len(child) > 0 {
- return typeFingerprint(t) + "{" + child + "}"
- }
- return ""
-}
-
-func (*LargeListType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Int64SizeBytes)}}
-}
-
-func (*LargeListType) OffsetTypeTraits() OffsetTraits { return Int64Traits }
-
-func LargeListOfField(f Field) *LargeListType {
- if f.Type == nil {
- panic("arrow: nil type for list field")
- }
- return &LargeListType{ListType{elem: f}}
-}
-
-// LargeListOf returns the list type with element type t.
-// For example, if t represents int32, LargeListOf(t) represents []int32.
-//
-// LargeListOf panics if t is nil or invalid. NullableElem defaults to true
-func LargeListOf(t DataType) *LargeListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &LargeListType{ListType{elem: Field{Name: "item", Type: t, Nullable: true}}}
-}
-
-// LargeListOfNonNullable is like ListOf but NullableElem defaults to false, indicating
-// that the child type should be marked as non-nullable.
-func LargeListOfNonNullable(t DataType) *LargeListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &LargeListType{ListType{elem: Field{Name: "item", Type: t, Nullable: false}}}
-}
-
-// FixedSizeListType describes a nested type in which each array slot contains
-// a fixed-size sequence of values, all having the same relative type.
-type FixedSizeListType struct {
- n int32 // number of elements in the list
- elem Field
-}
-
-func FixedSizeListOfField(n int32, f Field) *FixedSizeListType {
- if f.Type == nil {
- panic("arrow: nil DataType")
- }
- if n <= 0 {
- panic("arrow: invalid size")
- }
- return &FixedSizeListType{n: n, elem: f}
-}
-
-// FixedSizeListOf returns the list type with element type t.
-// For example, if t represents int32, FixedSizeListOf(10, t) represents [10]int32.
-//
-// FixedSizeListOf panics if t is nil or invalid.
-// FixedSizeListOf panics if n is <= 0.
-// NullableElem defaults to true
-func FixedSizeListOf(n int32, t DataType) *FixedSizeListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- if n <= 0 {
- panic("arrow: invalid size")
- }
- return &FixedSizeListType{n: n, elem: Field{Name: "item", Type: t, Nullable: true}}
-}
-
-// FixedSizeListOfNonNullable is like FixedSizeListOf but NullableElem defaults to false
-// indicating that the child type should be marked as non-nullable.
-func FixedSizeListOfNonNullable(n int32, t DataType) *FixedSizeListType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- if n <= 0 {
- panic("arrow: invalid size")
- }
- return &FixedSizeListType{n: n, elem: Field{Name: "item", Type: t, Nullable: false}}
-}
-
-func (*FixedSizeListType) ID() Type { return FIXED_SIZE_LIST }
-func (*FixedSizeListType) Name() string { return "fixed_size_list" }
-func (t *FixedSizeListType) String() string {
- if t.elem.Nullable {
- return fmt.Sprintf("fixed_size_list<%s: %s, nullable>[%d]", t.elem.Name, t.elem.Type, t.n)
- }
- return fmt.Sprintf("fixed_size_list<%s: %s>[%d]", t.elem.Name, t.elem.Type, t.n)
-}
-
-func (t *FixedSizeListType) SetElemNullable(n bool) { t.elem.Nullable = n }
-
-// Elem returns the FixedSizeListType's element type.
-func (t *FixedSizeListType) Elem() DataType { return t.elem.Type }
-
-// Len returns the FixedSizeListType's size.
-func (t *FixedSizeListType) Len() int32 { return t.n }
-
-func (t *FixedSizeListType) ElemField() Field {
- return t.elem
-}
-
-func (t *FixedSizeListType) Fingerprint() string {
- child := t.elem.Type.Fingerprint()
- if len(child) > 0 {
- return fmt.Sprintf("%s[%d]{%s}", typeFingerprint(t), t.n, child)
- }
- return ""
-}
-
-func (t *FixedSizeListType) Fields() []Field { return []Field{t.ElemField()} }
-
-func (t *FixedSizeListType) NumFields() int { return 1 }
-
-func (*FixedSizeListType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap()}}
-}
-
-type ListViewType struct {
- elem Field
-}
-
-func ListViewOfField(f Field) *ListViewType {
- if f.Type == nil {
- panic("arrow: nil DataType")
- }
- return &ListViewType{elem: f}
-}
-
-// ListViewOf returns the list-view type with element type t.
-// For example, if t represents int32, ListViewOf(t) represents []int32.
-//
-// ListViewOf panics if t is nil or invalid. NullableElem defaults to true
-func ListViewOf(t DataType) *ListViewType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &ListViewType{elem: Field{Name: "item", Type: t, Nullable: true}}
-}
-
-// ListViewOfNonNullable is like ListViewOf but NullableElem defaults to false, indicating
-// that the child type should be marked as non-nullable.
-func ListViewOfNonNullable(t DataType) *ListViewType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &ListViewType{elem: Field{Name: "item", Type: t, Nullable: false}}
-}
-
-func (*ListViewType) ID() Type { return LIST_VIEW }
-func (*ListViewType) Name() string { return "list_view" }
-
-func (t *ListViewType) String() string {
- if t.elem.Nullable {
- return fmt.Sprintf("list_view<%s: %s, nullable>", t.elem.Name, t.elem.Type)
- }
- return fmt.Sprintf("list_view<%s: %s>", t.elem.Name, t.elem.Type)
-}
-
-func (t *ListViewType) Fingerprint() string {
- child := t.elem.Type.Fingerprint()
- if len(child) > 0 {
- return typeFingerprint(t) + "{" + child + "}"
- }
- return ""
-}
-
-func (t *ListViewType) SetElemMetadata(md Metadata) { t.elem.Metadata = md }
-
-func (t *ListViewType) SetElemNullable(n bool) { t.elem.Nullable = n }
-
-// Elem returns the ListViewType's element type.
-func (t *ListViewType) Elem() DataType { return t.elem.Type }
-
-func (t *ListViewType) ElemField() Field {
- return t.elem
-}
-
-func (t *ListViewType) Fields() []Field { return []Field{t.ElemField()} }
-
-func (t *ListViewType) NumFields() int { return 1 }
-
-func (*ListViewType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Int32SizeBytes), SpecFixedWidth(Int32SizeBytes)}}
-}
-
-func (*ListViewType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-
-type LargeListViewType struct {
- elem Field
-}
-
-func LargeListViewOfField(f Field) *LargeListViewType {
- if f.Type == nil {
- panic("arrow: nil DataType")
- }
- return &LargeListViewType{elem: f}
-}
-
-// LargeListViewOf returns the list-view type with element type t.
-// For example, if t represents int32, LargeListViewOf(t) represents []int32.
-//
-// LargeListViewOf panics if t is nil or invalid. NullableElem defaults to true
-func LargeListViewOf(t DataType) *LargeListViewType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &LargeListViewType{elem: Field{Name: "item", Type: t, Nullable: true}}
-}
-
-// LargeListViewOfNonNullable is like LargeListViewOf but NullableElem defaults
-// to false, indicating that the child type should be marked as non-nullable.
-func LargeListViewOfNonNullable(t DataType) *LargeListViewType {
- if t == nil {
- panic("arrow: nil DataType")
- }
- return &LargeListViewType{elem: Field{Name: "item", Type: t, Nullable: false}}
-}
-
-func (*LargeListViewType) ID() Type { return LARGE_LIST_VIEW }
-func (*LargeListViewType) Name() string { return "large_list_view" }
-
-func (t *LargeListViewType) String() string {
- if t.elem.Nullable {
- return fmt.Sprintf("large_list_view<%s: %s, nullable>", t.elem.Name, t.elem.Type)
- }
- return fmt.Sprintf("large_list_view<%s: %s>", t.elem.Name, t.elem.Type)
-}
-
-func (t *LargeListViewType) Fingerprint() string {
- child := t.elem.Type.Fingerprint()
- if len(child) > 0 {
- return typeFingerprint(t) + "{" + child + "}"
- }
- return ""
-}
-
-func (t *LargeListViewType) SetElemMetadata(md Metadata) { t.elem.Metadata = md }
-
-func (t *LargeListViewType) SetElemNullable(n bool) { t.elem.Nullable = n }
-
-// Elem returns the LargeListViewType's element type.
-func (t *LargeListViewType) Elem() DataType { return t.elem.Type }
-
-func (t *LargeListViewType) ElemField() Field {
- return t.elem
-}
-
-func (t *LargeListViewType) Fields() []Field { return []Field{t.ElemField()} }
-
-func (t *LargeListViewType) NumFields() int { return 1 }
-
-func (*LargeListViewType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap(), SpecFixedWidth(Int64SizeBytes), SpecFixedWidth(Int64SizeBytes)}}
-}
-
-func (*LargeListViewType) OffsetTypeTraits() OffsetTraits { return Int64Traits }
-
-// StructType describes a nested type parameterized by an ordered sequence
-// of relative types, called its fields.
-type StructType struct {
- fields []Field
- index map[string][]int
- meta Metadata
-}
-
-// StructOf returns the struct type with fields fs.
-//
-// StructOf panics if there is a field with an invalid DataType.
-func StructOf(fs ...Field) *StructType {
- n := len(fs)
- if n == 0 {
- return &StructType{}
- }
-
- t := &StructType{
- fields: make([]Field, n),
- index: make(map[string][]int, n),
- }
- for i, f := range fs {
- if f.Type == nil {
- panic("arrow: field with nil DataType")
- }
- t.fields[i] = Field{
- Name: f.Name,
- Type: f.Type,
- Nullable: f.Nullable,
- Metadata: f.Metadata.clone(),
- }
- if indices, exists := t.index[f.Name]; exists {
- t.index[f.Name] = append(indices, i)
- } else {
- t.index[f.Name] = []int{i}
- }
- }
-
- return t
-}
-
-func (*StructType) ID() Type { return STRUCT }
-func (*StructType) Name() string { return "struct" }
-
-func (t *StructType) String() string {
- var o strings.Builder
- o.WriteString("struct<")
- for i, f := range t.fields {
- if i > 0 {
- o.WriteString(", ")
- }
- o.WriteString(fmt.Sprintf("%s: %v", f.Name, f.Type))
- }
- o.WriteString(">")
- return o.String()
-}
-
-// Fields method provides a copy of StructType fields
-// (so it can be safely mutated and will not result in updating the StructType).
-func (t *StructType) Fields() []Field {
- fields := make([]Field, len(t.fields))
- copy(fields, t.fields)
- return fields
-}
-
-func (t *StructType) NumFields() int { return len(t.fields) }
-
-func (t *StructType) Field(i int) Field { return t.fields[i] }
-
-// FieldByName gets the field with the given name.
-//
-// If there are multiple fields with the given name, FieldByName
-// returns the first such field.
-func (t *StructType) FieldByName(name string) (Field, bool) {
- i, ok := t.index[name]
- if !ok {
- return Field{}, false
- }
- return t.fields[i[0]], true
-}
-
-// FieldIdx gets the index of the field with the given name.
-//
-// If there are multiple fields with the given name, FieldIdx returns
-// the index of the first such field.
-func (t *StructType) FieldIdx(name string) (int, bool) {
- i, ok := t.index[name]
- if ok {
- return i[0], true
- }
- return -1, false
-}
-
-// FieldsByName returns all fields with the given name.
-func (t *StructType) FieldsByName(n string) ([]Field, bool) {
- indices, ok := t.index[n]
- if !ok {
- return nil, ok
- }
- fields := make([]Field, 0, len(indices))
- for _, v := range indices {
- fields = append(fields, t.fields[v])
- }
- return fields, ok
-}
-
-// FieldIndices returns indices of all fields with the given name, or nil.
-func (t *StructType) FieldIndices(name string) []int {
- return t.index[name]
-}
-
-func (t *StructType) Fingerprint() string {
- var b strings.Builder
- b.WriteString(typeFingerprint(t))
- b.WriteByte('{')
- for _, c := range t.fields {
- child := c.Fingerprint()
- if len(child) == 0 {
- return ""
- }
- b.WriteString(child)
- b.WriteByte(';')
- }
- b.WriteByte('}')
- return b.String()
-}
-
-func (*StructType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecBitmap()}}
-}
-
-type MapType struct {
- value *ListType
- KeysSorted bool
-}
-
-func MapOf(key, item DataType) *MapType {
- if key == nil || item == nil {
- panic("arrow: nil key or item type for MapType")
- }
-
- return &MapType{value: ListOf(StructOf(Field{Name: "key", Type: key}, Field{Name: "value", Type: item, Nullable: true}))}
-}
-
-func MapOfWithMetadata(key DataType, keyMetadata Metadata, item DataType, itemMetadata Metadata) *MapType {
- if key == nil || item == nil {
- panic("arrow: nil key or item type for MapType")
- }
-
- return &MapType{value: ListOf(StructOf(Field{
- Name: "key",
- Type: key,
- Metadata: keyMetadata,
- }, Field{
- Name: "value",
- Type: item,
- Nullable: true,
- Metadata: itemMetadata,
- }))}
-}
-
-func (*MapType) ID() Type { return MAP }
-func (*MapType) Name() string { return "map" }
-
-func (t *MapType) String() string {
- var o strings.Builder
- o.WriteString(fmt.Sprintf("map<%s, %s",
- t.value.Elem().(*StructType).Field(0).Type,
- t.value.Elem().(*StructType).Field(1).Type))
- if t.KeysSorted {
- o.WriteString(", keys_sorted")
- }
- if t.ItemField().Nullable {
- o.WriteString(", items_nullable")
- } else {
- o.WriteString(", items_non_nullable")
- }
- o.WriteString(">")
- return o.String()
-}
-
-func (t *MapType) KeyField() Field { return t.value.Elem().(*StructType).Field(0) }
-func (t *MapType) KeyType() DataType { return t.KeyField().Type }
-func (t *MapType) ItemField() Field { return t.value.Elem().(*StructType).Field(1) }
-func (t *MapType) ItemType() DataType { return t.ItemField().Type }
-
-// Deprecated: use MapType.Elem().(*StructType) instead
-func (t *MapType) ValueType() *StructType { return t.Elem().(*StructType) }
-
-// Deprecated: use MapType.ElemField() instead
-func (t *MapType) ValueField() Field { return t.ElemField() }
-
-// Elem returns the MapType's element type (if treating MapType as ListLikeType)
-func (t *MapType) Elem() DataType { return t.value.Elem() }
-
-// ElemField returns the MapType's element field (if treating MapType as ListLikeType)
-func (t *MapType) ElemField() Field { return Field{Name: "entries", Type: t.Elem()} }
-
-func (t *MapType) SetItemNullable(nullable bool) {
- t.value.Elem().(*StructType).fields[1].Nullable = nullable
-}
-
-func (t *MapType) Fingerprint() string {
- keyFingerprint := t.KeyType().Fingerprint()
- itemFingerprint := t.ItemType().Fingerprint()
- if keyFingerprint == "" || itemFingerprint == "" {
- return ""
- }
-
- fingerprint := typeFingerprint(t)
- if t.KeysSorted {
- fingerprint += "s"
- }
- return fingerprint + "{" + keyFingerprint + itemFingerprint + "}"
-}
-
-func (t *MapType) Fields() []Field { return []Field{t.ElemField()} }
-
-func (t *MapType) NumFields() int { return 1 }
-
-func (t *MapType) Layout() DataTypeLayout {
- return t.value.Layout()
-}
-
-func (*MapType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-
-type (
- // UnionTypeCode is an alias to int8 which is the type of the ids
- // used for union arrays.
- UnionTypeCode = int8
- UnionMode int8
-)
-
-const (
- MaxUnionTypeCode UnionTypeCode = 127
- InvalidUnionChildID int = -1
-
- SparseMode UnionMode = iota // SPARSE
- DenseMode // DENSE
-)
-
-// UnionType is an interface to encompass both Dense and Sparse Union types.
-//
-// A UnionType is a nested type where each logical value is taken
-// from a single child. A buffer of 8-bit type ids (typed as UnionTypeCode)
-// indicates which child a given logical value is to be taken from. This is
-// represented as the "child id" or "child index", which is the index into the
-// list of child fields for a given child.
-type UnionType interface {
- NestedType
- // Mode returns either SparseMode or DenseMode depending on the current
- // concrete data type.
- Mode() UnionMode
- // ChildIDs returns a slice of ints to map UnionTypeCode values to
- // the index in the Fields that represents the given Type. It is
- // initialized with all values being InvalidUnionChildID (-1)
- // before being populated based on the TypeCodes and fields of the type.
- // The field for a given type can be retrieved by Fields()[ChildIDs()[typeCode]]
- ChildIDs() []int
- // TypeCodes returns the list of available type codes for this union type
- // which will correspond to indexes into the ChildIDs slice to locate the
- // appropriate child. A union Array contains a buffer of these type codes
- // which indicate for a given index, which child has the value for that index.
- TypeCodes() []UnionTypeCode
- // MaxTypeCode returns the value of the largest TypeCode in the list of typecodes
- // that are defined by this Union type
- MaxTypeCode() UnionTypeCode
-}
-
-// UnionOf returns an appropriate union type for the given Mode (Sparse or Dense),
-// child fields, and type codes. len(fields) == len(typeCodes) must be true, or else
-// this will panic. len(fields) can be 0.
-func UnionOf(mode UnionMode, fields []Field, typeCodes []UnionTypeCode) UnionType {
- switch mode {
- case SparseMode:
- return SparseUnionOf(fields, typeCodes)
- case DenseMode:
- return DenseUnionOf(fields, typeCodes)
- default:
- panic("arrow: invalid union mode")
- }
-}
-
-type unionType struct {
- children []Field
- typeCodes []UnionTypeCode
- childIDs [int(MaxUnionTypeCode) + 1]int
-}
-
-func (t *unionType) init(fields []Field, typeCodes []UnionTypeCode) {
- // initialize all child IDs to -1
- t.childIDs[0] = InvalidUnionChildID
- for i := 1; i < len(t.childIDs); i *= 2 {
- copy(t.childIDs[i:], t.childIDs[:i])
- }
-
- t.children = fields
- t.typeCodes = typeCodes
-
- for i, tc := range t.typeCodes {
- t.childIDs[tc] = i
- }
-}
-
-// Fields method provides a copy of union type fields
-// (so it can be safely mutated and will not result in updating the union type).
-func (t *unionType) Fields() []Field {
- fields := make([]Field, len(t.children))
- copy(fields, t.children)
- return fields
-}
-
-func (t *unionType) NumFields() int { return len(t.children) }
-
-func (t *unionType) TypeCodes() []UnionTypeCode { return t.typeCodes }
-func (t *unionType) ChildIDs() []int { return t.childIDs[:] }
-
-func (t *unionType) validate(fields []Field, typeCodes []UnionTypeCode, _ UnionMode) error {
- if len(fields) != len(typeCodes) {
- return errors.New("arrow: union types should have the same number of fields as type codes")
- }
-
- for _, c := range typeCodes {
- if c < 0 || c > MaxUnionTypeCode {
- return errors.New("arrow: union type code out of bounds")
- }
- }
- return nil
-}
-
-func (t *unionType) MaxTypeCode() (max UnionTypeCode) {
- if len(t.typeCodes) == 0 {
- return
- }
-
- max = t.typeCodes[0]
- for _, c := range t.typeCodes[1:] {
- if c > max {
- max = c
- }
- }
- return
-}
-
-func (t *unionType) String() string {
- var b strings.Builder
- b.WriteByte('<')
- for i := range t.typeCodes {
- if i != 0 {
- b.WriteString(", ")
- }
- fmt.Fprintf(&b, "%s=%d", t.children[i], t.typeCodes[i])
- }
- b.WriteByte('>')
- return b.String()
-}
-
-func (t *unionType) fingerprint() string {
- var b strings.Builder
- for _, c := range t.typeCodes {
- fmt.Fprintf(&b, ":%d", c)
- }
- b.WriteString("]{")
- for _, c := range t.children {
- fingerprint := c.Fingerprint()
- if len(fingerprint) == 0 {
- return ""
- }
- b.WriteString(fingerprint)
- b.WriteByte(';')
- }
- b.WriteByte('}')
- return b.String()
-}
-
-func fieldsFromArrays(arrays []Array, names ...string) (ret []Field) {
- ret = make([]Field, len(arrays))
- if len(names) == 0 {
- for i, c := range arrays {
- ret[i] = Field{Name: strconv.Itoa(i), Type: c.DataType(), Nullable: true}
- }
- } else {
- debug.Assert(len(names) == len(arrays), "mismatch of arrays and names")
- for i, c := range arrays {
- ret[i] = Field{Name: names[i], Type: c.DataType(), Nullable: true}
- }
- }
- return
-}
-
-// SparseUnionType is the concrete type for Sparse union data.
-//
-// A sparse union is a nested type where each logical value is taken
-// from a single child. A buffer of 8-bit type ids indicates which child
-// a given logical value is to be taken from.
-//
-// In a sparse union, each child array will have the same length as the
-// union array itself, regardless of the actual number of union values which
-// refer to it.
-//
-// Unlike most other types, unions do not have a top-level validity bitmap.
-type SparseUnionType struct {
- unionType
-}
-
-// SparseUnionFromArrays enables creating a union type from a list of Arrays,
-// field names, and type codes. len(fields) should be either 0 or equal to len(children).
-// len(codes) should also be either 0, or equal to len(children).
-//
-// If len(fields) == 0, then the fields will be named numerically as "0", "1", "2"...
-// and so on. If len(codes) == 0, then the type codes will be constructed as
-// [0, 1, 2, ..., n].
-func SparseUnionFromArrays(children []Array, fields []string, codes []UnionTypeCode) *SparseUnionType {
- if len(codes) == 0 {
- codes = make([]UnionTypeCode, len(children))
- for i := range children {
- codes[i] = UnionTypeCode(i)
- }
- }
- return SparseUnionOf(fieldsFromArrays(children, fields...), codes)
-}
-
-// SparseUnionOf is equivalent to UnionOf(arrow.SparseMode, fields, typeCodes),
-// constructing a SparseUnionType from a list of fields and type codes.
-//
-// If len(fields) != len(typeCodes) this will panic. They are allowed to be
-// of length 0.
-func SparseUnionOf(fields []Field, typeCodes []UnionTypeCode) *SparseUnionType {
- ret := &SparseUnionType{}
- if err := ret.validate(fields, typeCodes, ret.Mode()); err != nil {
- panic(err)
- }
- ret.init(fields, typeCodes)
- return ret
-}
-
-func (SparseUnionType) ID() Type { return SPARSE_UNION }
-func (SparseUnionType) Name() string { return "sparse_union" }
-func (SparseUnionType) Mode() UnionMode { return SparseMode }
-func (t *SparseUnionType) Fingerprint() string {
- return typeFingerprint(t) + "[s" + t.fingerprint()
-}
-func (SparseUnionType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecFixedWidth(Uint8SizeBytes)}}
-}
-func (t *SparseUnionType) String() string {
- return t.Name() + t.unionType.String()
-}
-
-// DenseUnionType is the concrete type for dense union data.
-//
-// A dense union is a nested type where each logical value is taken from a
-// single child, at a specific offset. A buffer of 8-bit type ids (typed
-// as UnionTypeCode) indicates which child a given logical value is to be
-// taken from and a buffer of 32-bit offsets indicating which physical position
-// in the given child array has the logical value for that index.
-//
-// Unlike a sparse union, a dense union allows encoding only the child values
-// which are actually referred to by the union array. This is counterbalanced
-// by the additional footprint of the offsets buffer, and the additional
-// indirection cost when looking up values.
-//
-// Unlike most other types, unions don't have a top-level validity bitmap
-type DenseUnionType struct {
- unionType
-}
-
-// DenseUnionFromArrays enables creating a union type from a list of Arrays,
-// field names, and type codes. len(fields) should be either 0 or equal to len(children).
-// len(codes) should also be either 0, or equal to len(children).
-//
-// If len(fields) == 0, then the fields will be named numerically as "0", "1", "2"...
-// and so on. If len(codes) == 0, then the type codes will be constructed as
-// [0, 1, 2, ..., n].
-func DenseUnionFromArrays(children []Array, fields []string, codes []UnionTypeCode) *DenseUnionType {
- if len(codes) == 0 {
- codes = make([]UnionTypeCode, len(children))
- for i := range children {
- codes[i] = UnionTypeCode(i)
- }
- }
- return DenseUnionOf(fieldsFromArrays(children, fields...), codes)
-}
-
-// DenseUnionOf is equivalent to UnionOf(arrow.DenseMode, fields, typeCodes),
-// constructing a SparseUnionType from a list of fields and type codes.
-//
-// If len(fields) != len(typeCodes) this will panic. They are allowed to be
-// of length 0.
-func DenseUnionOf(fields []Field, typeCodes []UnionTypeCode) *DenseUnionType {
- ret := &DenseUnionType{}
- if err := ret.validate(fields, typeCodes, ret.Mode()); err != nil {
- panic(err)
- }
- ret.init(fields, typeCodes)
- return ret
-}
-
-func (DenseUnionType) ID() Type { return DENSE_UNION }
-func (DenseUnionType) Name() string { return "dense_union" }
-func (DenseUnionType) Mode() UnionMode { return DenseMode }
-func (t *DenseUnionType) Fingerprint() string {
- return typeFingerprint(t) + "[s" + t.fingerprint()
-}
-
-func (DenseUnionType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecFixedWidth(Uint8SizeBytes), SpecFixedWidth(Int32SizeBytes)}}
-}
-
-func (DenseUnionType) OffsetTypeTraits() OffsetTraits { return Int32Traits }
-
-func (t *DenseUnionType) String() string {
- return t.Name() + t.unionType.String()
-}
-
-type Field struct {
- Name string // Field name
- Type DataType // The field's data type
- Nullable bool // Fields can be nullable
- Metadata Metadata // The field's metadata, if any
-}
-
-func (f Field) Fingerprint() string {
- typeFingerprint := f.Type.Fingerprint()
- if typeFingerprint == "" {
- return ""
- }
-
- var b strings.Builder
- b.WriteByte('F')
- if f.Nullable {
- b.WriteByte('n')
- } else {
- b.WriteByte('N')
- }
- b.WriteString(f.Name)
- b.WriteByte('{')
- b.WriteString(typeFingerprint)
- b.WriteByte('}')
- return b.String()
-}
-
-func (f Field) HasMetadata() bool { return f.Metadata.Len() != 0 }
-
-func (f Field) Equal(o Field) bool {
- switch {
- case f.Name != o.Name:
- return false
- case f.Nullable != o.Nullable:
- return false
- case !TypeEqual(f.Type, o.Type, CheckMetadata()):
- return false
- case !f.Metadata.Equal(o.Metadata):
- return false
- }
- return true
-}
-
-func (f Field) String() string {
- var o strings.Builder
- nullable := ""
- if f.Nullable {
- nullable = ", nullable"
- }
- fmt.Fprintf(&o, "%s: type=%v%v", f.Name, f.Type, nullable)
- if f.HasMetadata() {
- fmt.Fprintf(&o, "\n%*.smetadata: %v", len(f.Name)+2, "", f.Metadata)
- }
- return o.String()
-}
-
-var (
- _ DataType = (*ListType)(nil)
- _ DataType = (*LargeListType)(nil)
- _ DataType = (*FixedSizeListType)(nil)
- _ DataType = (*StructType)(nil)
- _ DataType = (*MapType)(nil)
- _ DataType = (*DenseUnionType)(nil)
- _ DataType = (*SparseUnionType)(nil)
-
- _ NestedType = (*ListType)(nil)
- _ NestedType = (*LargeListType)(nil)
- _ NestedType = (*FixedSizeListType)(nil)
- _ NestedType = (*MapType)(nil)
- _ NestedType = (*DenseUnionType)(nil)
- _ NestedType = (*SparseUnionType)(nil)
-
- _ ListLikeType = (*ListType)(nil)
- _ ListLikeType = (*LargeListType)(nil)
- _ ListLikeType = (*FixedSizeListType)(nil)
- _ ListLikeType = (*MapType)(nil)
-
- _ VarLenListLikeType = (*ListType)(nil)
- _ VarLenListLikeType = (*LargeListType)(nil)
- _ VarLenListLikeType = (*ListViewType)(nil)
- _ VarLenListLikeType = (*LargeListViewType)(nil)
- _ VarLenListLikeType = (*FixedSizeListType)(nil)
- _ VarLenListLikeType = (*MapType)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_null.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_null.go
deleted file mode 100644
index 2d2454c65..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_null.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-// NullType describes a degenerate array, with zero physical storage.
-type NullType struct{}
-
-func (*NullType) ID() Type { return NULL }
-func (*NullType) Name() string { return "null" }
-func (*NullType) String() string { return "null" }
-func (*NullType) Fingerprint() string { return typeIDFingerprint(NULL) }
-func (*NullType) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{SpecAlwaysNull()}}
-}
-
-var (
- Null *NullType
- _ DataType = Null
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go
deleted file mode 100644
index 62cbd9001..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go
+++ /dev/null
@@ -1,206 +0,0 @@
-// Code generated by datatype_numeric.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-type Int8Type struct{}
-
-func (t *Int8Type) ID() Type { return INT8 }
-func (t *Int8Type) Name() string { return "int8" }
-func (t *Int8Type) String() string { return "int8" }
-func (t *Int8Type) BitWidth() int { return 8 }
-func (t *Int8Type) Bytes() int { return Int8SizeBytes }
-func (t *Int8Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Int8Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Int8SizeBytes)}}
-}
-
-type Int16Type struct{}
-
-func (t *Int16Type) ID() Type { return INT16 }
-func (t *Int16Type) Name() string { return "int16" }
-func (t *Int16Type) String() string { return "int16" }
-func (t *Int16Type) BitWidth() int { return 16 }
-func (t *Int16Type) Bytes() int { return Int16SizeBytes }
-func (t *Int16Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Int16Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Int16SizeBytes)}}
-}
-
-type Int32Type struct{}
-
-func (t *Int32Type) ID() Type { return INT32 }
-func (t *Int32Type) Name() string { return "int32" }
-func (t *Int32Type) String() string { return "int32" }
-func (t *Int32Type) BitWidth() int { return 32 }
-func (t *Int32Type) Bytes() int { return Int32SizeBytes }
-func (t *Int32Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Int32Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Int32SizeBytes)}}
-}
-
-type Int64Type struct{}
-
-func (t *Int64Type) ID() Type { return INT64 }
-func (t *Int64Type) Name() string { return "int64" }
-func (t *Int64Type) String() string { return "int64" }
-func (t *Int64Type) BitWidth() int { return 64 }
-func (t *Int64Type) Bytes() int { return Int64SizeBytes }
-func (t *Int64Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Int64Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Int64SizeBytes)}}
-}
-
-type Uint8Type struct{}
-
-func (t *Uint8Type) ID() Type { return UINT8 }
-func (t *Uint8Type) Name() string { return "uint8" }
-func (t *Uint8Type) String() string { return "uint8" }
-func (t *Uint8Type) BitWidth() int { return 8 }
-func (t *Uint8Type) Bytes() int { return Uint8SizeBytes }
-func (t *Uint8Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Uint8Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Uint8SizeBytes)}}
-}
-
-type Uint16Type struct{}
-
-func (t *Uint16Type) ID() Type { return UINT16 }
-func (t *Uint16Type) Name() string { return "uint16" }
-func (t *Uint16Type) String() string { return "uint16" }
-func (t *Uint16Type) BitWidth() int { return 16 }
-func (t *Uint16Type) Bytes() int { return Uint16SizeBytes }
-func (t *Uint16Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Uint16Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Uint16SizeBytes)}}
-}
-
-type Uint32Type struct{}
-
-func (t *Uint32Type) ID() Type { return UINT32 }
-func (t *Uint32Type) Name() string { return "uint32" }
-func (t *Uint32Type) String() string { return "uint32" }
-func (t *Uint32Type) BitWidth() int { return 32 }
-func (t *Uint32Type) Bytes() int { return Uint32SizeBytes }
-func (t *Uint32Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Uint32Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Uint32SizeBytes)}}
-}
-
-type Uint64Type struct{}
-
-func (t *Uint64Type) ID() Type { return UINT64 }
-func (t *Uint64Type) Name() string { return "uint64" }
-func (t *Uint64Type) String() string { return "uint64" }
-func (t *Uint64Type) BitWidth() int { return 64 }
-func (t *Uint64Type) Bytes() int { return Uint64SizeBytes }
-func (t *Uint64Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Uint64Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Uint64SizeBytes)}}
-}
-
-type Float32Type struct{}
-
-func (t *Float32Type) ID() Type { return FLOAT32 }
-func (t *Float32Type) Name() string { return "float32" }
-func (t *Float32Type) String() string { return "float32" }
-func (t *Float32Type) BitWidth() int { return 32 }
-func (t *Float32Type) Bytes() int { return Float32SizeBytes }
-func (t *Float32Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Float32Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Float32SizeBytes)}}
-}
-
-type Float64Type struct{}
-
-func (t *Float64Type) ID() Type { return FLOAT64 }
-func (t *Float64Type) Name() string { return "float64" }
-func (t *Float64Type) String() string { return "float64" }
-func (t *Float64Type) BitWidth() int { return 64 }
-func (t *Float64Type) Bytes() int { return Float64SizeBytes }
-func (t *Float64Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Float64Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Float64SizeBytes)}}
-}
-
-type Date32Type struct{}
-
-func (t *Date32Type) ID() Type { return DATE32 }
-func (t *Date32Type) Name() string { return "date32" }
-func (t *Date32Type) String() string { return "date32" }
-func (t *Date32Type) BitWidth() int { return 32 }
-func (t *Date32Type) Bytes() int { return Date32SizeBytes }
-func (t *Date32Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Date32Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Date32SizeBytes)}}
-}
-
-type Date64Type struct{}
-
-func (t *Date64Type) ID() Type { return DATE64 }
-func (t *Date64Type) Name() string { return "date64" }
-func (t *Date64Type) String() string { return "date64" }
-func (t *Date64Type) BitWidth() int { return 64 }
-func (t *Date64Type) Bytes() int { return Date64SizeBytes }
-func (t *Date64Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *Date64Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth(Date64SizeBytes)}}
-}
-
-var (
- PrimitiveTypes = struct {
- Int8 DataType
- Int16 DataType
- Int32 DataType
- Int64 DataType
- Uint8 DataType
- Uint16 DataType
- Uint32 DataType
- Uint64 DataType
- Float32 DataType
- Float64 DataType
- Date32 DataType
- Date64 DataType
- }{
-
- Int8: &Int8Type{},
- Int16: &Int16Type{},
- Int32: &Int32Type{},
- Int64: &Int64Type{},
- Uint8: &Uint8Type{},
- Uint16: &Uint16Type{},
- Uint32: &Uint32Type{},
- Uint64: &Uint64Type{},
- Float32: &Float32Type{},
- Float64: &Float64Type{},
- Date32: &Date32Type{},
- Date64: &Date64Type{},
- }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpl
deleted file mode 100644
index 611046afc..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpl
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-{{range .In}}
-type {{.Name}}Type struct {}
-
-func (t *{{.Name}}Type) ID() Type { return {{.Name|upper}} }
-func (t *{{.Name}}Type) Name() string { return "{{.Name|lower}}" }
-func (t *{{.Name}}Type) String() string { return "{{.Name|lower}}" }
-func (t *{{.Name}}Type) BitWidth() int { return {{.Size}} }
-func (t *{{.Name}}Type) Bytes() int { return {{.Name}}SizeBytes }
-func (t *{{.Name}}Type) Fingerprint() string { return typeFingerprint(t) }
-func (t *{{.Name}}Type) Layout() DataTypeLayout {
- return DataTypeLayout{Buffers: []BufferSpec{
- SpecBitmap(), SpecFixedWidth({{.Name}}SizeBytes)}}
-}
-
-{{end}}
-
-var (
- PrimitiveTypes = struct {
-{{range .In}}
- {{.Name}} DataType
-{{- end}}
- }{
-{{range .In}}
- {{.Name}}: &{{.Name}}Type{},
-{{- end}}
- }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpldata b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpldata
deleted file mode 100644
index 12e69fe60..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_numeric.gen.go.tmpldata
+++ /dev/null
@@ -1,66 +0,0 @@
-[
- {
- "Name": "Int8",
- "Type": "int8",
- "Size": 8
- },
- {
- "Name": "Int16",
- "Type": "int16",
- "Size": 16
- },
- {
- "Name": "Int32",
- "Type": "int32",
- "Size": 32
- },
- {
- "Name": "Int64",
- "Type": "int64",
- "Size": 64
- },
- {
- "Name": "Uint8",
- "Type": "uint8",
- "Size": 8
- },
- {
- "Name": "Uint16",
- "Type": "uint16",
- "Size": 16
- },
- {
- "Name": "Uint32",
- "Type": "uint32",
- "Size": 32
- },
- {
- "Name": "Uint64",
- "Type": "uint64",
- "Size": 64
- },
- {
- "Name": "Float32",
- "Type": "float32",
- "Size": 32
- },
- {
- "Name": "Float64",
- "Type": "float64",
- "Size": 64
- },
- {
- "Name": "Date32",
- "Type": "date32",
- "QualifiedType": "arrow.Date32",
- "InternalType": "int32",
- "Size": 32
- },
- {
- "Name": "Date64",
- "Type": "date64",
- "QualifiedType": "arrow.Date64",
- "InternalType": "int64",
- "Size": 64
- }
-]
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader.go
deleted file mode 100644
index 54b9256b3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "bytes"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-const (
- ViewPrefixLen = 4
- viewInlineSize = 12
-)
-
-func IsViewInline(length int) bool {
- return length < viewInlineSize
-}
-
-// ViewHeader is a variable length string (utf8) or byte slice with
-// a 4 byte prefix and inline optimization for small values (12 bytes
-// or fewer). This is similar to Go's standard string but limited by
-// a length of Uint32Max and up to the first four bytes of the string
-// are copied into the struct. This prefix allows failing comparisons
-// early and can reduce CPU cache working set when dealing with short
-// strings.
-//
-// There are two situations:
-//
-// Entirely inlined string data
-// |----|------------|
-// ^ ^
-// | |
-// size inline string data, zero padded
-//
-// Reference into buffer
-// |----|----|----|----|
-// ^ ^ ^ ^
-// | | | |
-// size prefix buffer index and offset to out-of-line portion
-//
-// Adapted from TU Munich's UmbraDB [1], Velox, DuckDB.
-//
-// [1]: https://db.in.tum.de/~freitag/papers/p29-neumann-cidr20.pdf
-type ViewHeader struct {
- size int32
- // the first 4 bytes of this are the prefix for the string
- // if size <= StringHeaderInlineSize, then the entire string
- // is in the data array and is zero padded.
- // if size > StringHeaderInlineSize, the next 8 bytes are 2 uint32
- // values which are the buffer index and offset in that buffer
- // containing the full string.
- data [viewInlineSize]byte
-}
-
-func (sh *ViewHeader) IsInline() bool {
- return sh.size <= int32(viewInlineSize)
-}
-
-func (sh *ViewHeader) Len() int { return int(sh.size) }
-func (sh *ViewHeader) Prefix() [ViewPrefixLen]byte {
- return *(*[4]byte)(unsafe.Pointer(&sh.data))
-}
-
-func (sh *ViewHeader) BufferIndex() int32 {
- return int32(endian.Native.Uint32(sh.data[ViewPrefixLen:]))
-}
-
-func (sh *ViewHeader) BufferOffset() int32 {
- return int32(endian.Native.Uint32(sh.data[ViewPrefixLen+4:]))
-}
-
-func (sh *ViewHeader) InlineBytes() (data []byte) {
- debug.Assert(sh.IsInline(), "calling InlineBytes on non-inline ViewHeader")
- return sh.data[:sh.size]
-}
-
-func (sh *ViewHeader) SetBytes(data []byte) int {
- sh.size = int32(len(data))
- if sh.IsInline() {
- return copy(sh.data[:], data)
- }
- return copy(sh.data[:4], data)
-}
-
-func (sh *ViewHeader) SetString(data string) int {
- sh.size = int32(len(data))
- if sh.IsInline() {
- return copy(sh.data[:], data)
- }
- return copy(sh.data[:4], data)
-}
-
-func (sh *ViewHeader) SetIndexOffset(bufferIndex, offset int32) {
- endian.Native.PutUint32(sh.data[ViewPrefixLen:], uint32(bufferIndex))
- endian.Native.PutUint32(sh.data[ViewPrefixLen+4:], uint32(offset))
-}
-
-func (sh *ViewHeader) Equals(buffers []*memory.Buffer, other *ViewHeader, otherBuffers []*memory.Buffer) bool {
- if sh.sizeAndPrefixAsInt64() != other.sizeAndPrefixAsInt64() {
- return false
- }
-
- if sh.IsInline() {
- return sh.inlinedAsInt64() == other.inlinedAsInt64()
- }
-
- return bytes.Equal(sh.getBufferBytes(buffers), other.getBufferBytes(otherBuffers))
-}
-
-func (sh *ViewHeader) getBufferBytes(buffers []*memory.Buffer) []byte {
- offset := sh.BufferOffset()
- return buffers[sh.BufferIndex()].Bytes()[offset : offset+sh.size]
-}
-
-func (sh *ViewHeader) inlinedAsInt64() int64 {
- s := unsafe.Slice((*int64)(unsafe.Pointer(sh)), 2)
- return s[1]
-}
-
-func (sh *ViewHeader) sizeAndPrefixAsInt64() int64 {
- s := unsafe.Slice((*int64)(unsafe.Pointer(sh)), 2)
- return s[0]
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline.go
deleted file mode 100644
index 89ac1d06a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build go1.20
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-func (sh *ViewHeader) InlineString() (data string) {
- debug.Assert(sh.IsInline(), "calling InlineString on non-inline ViewHeader")
-
- return unsafe.String((*byte)(unsafe.Pointer(&sh.data)), sh.size)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_go1.19.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_go1.19.go
deleted file mode 100644
index aec66009d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_go1.19.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !go1.20 && !tinygo
-
-package arrow
-
-import (
- "reflect"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-func (sh *ViewHeader) InlineString() (data string) {
- debug.Assert(sh.IsInline(), "calling InlineString on non-inline ViewHeader")
-
- h := (*reflect.StringHeader)(unsafe.Pointer(&data))
- h.Data = uintptr(unsafe.Pointer(&sh.data))
- h.Len = int(sh.size)
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_tinygo.go b/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_tinygo.go
deleted file mode 100644
index bff63a273..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/datatype_viewheader_inline_tinygo.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !go1.20 && tinygo
-
-package arrow
-
-import (
- "reflect"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-func (sh *ViewHeader) InlineString() (data string) {
- debug.Assert(sh.IsInline(), "calling InlineString on non-inline ViewHeader")
-
- h := (*reflect.StringHeader)(unsafe.Pointer(&data))
- h.Data = uintptr(unsafe.Pointer(&sh.data))
- h.Len = uintptr(sh.size)
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/decimal128/decimal128.go b/vendor/github.com/apache/arrow/go/v15/arrow/decimal128/decimal128.go
deleted file mode 100644
index 7ce8cd51b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/decimal128/decimal128.go
+++ /dev/null
@@ -1,627 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package decimal128
-
-import (
- "errors"
- "fmt"
- "math"
- "math/big"
- "math/bits"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-const (
- MaxPrecision = 38
- MaxScale = 38
-)
-
-var (
- MaxDecimal128 = New(542101086242752217, 687399551400673280-1)
-)
-
-func GetMaxValue(prec int32) Num {
- return scaleMultipliers[prec].Sub(FromU64(1))
-}
-
-// Num represents a signed 128-bit integer in two's complement.
-// Calculations wrap around and overflow is ignored.
-//
-// For a discussion of the algorithms, look at Knuth's volume 2,
-// Semi-numerical Algorithms section 4.3.1.
-//
-// Adapted from the Apache ORC C++ implementation
-type Num struct {
- lo uint64 // low bits
- hi int64 // high bits
-}
-
-// New returns a new signed 128-bit integer value.
-func New(hi int64, lo uint64) Num {
- return Num{lo: lo, hi: hi}
-}
-
-// FromU64 returns a new signed 128-bit integer value from the provided uint64 one.
-func FromU64(v uint64) Num {
- return New(0, v)
-}
-
-// FromI64 returns a new signed 128-bit integer value from the provided int64 one.
-func FromI64(v int64) Num {
- switch {
- case v > 0:
- return New(0, uint64(v))
- case v < 0:
- return New(-1, uint64(v))
- default:
- return Num{}
- }
-}
-
-// FromBigInt will convert a big.Int to a Num, if the value in v has a
-// BitLen > 128, this will panic.
-func FromBigInt(v *big.Int) (n Num) {
- bitlen := v.BitLen()
- if bitlen > 127 {
- panic("arrow/decimal128: cannot represent value larger than 128bits")
- } else if bitlen == 0 {
- // if bitlen is 0, then the value is 0 so return the default zeroed
- // out n
- return
- }
-
- // if the value is negative, then get the high and low bytes from
- // v, and then negate it. this is because Num uses a two's compliment
- // representation of values and big.Int stores the value as a bool for
- // the sign and the absolute value of the integer. This means that the
- // raw bytes are *always* the absolute value.
- b := v.Bits()
- n.lo = uint64(b[0])
- if len(b) > 1 {
- n.hi = int64(b[1])
- }
- if v.Sign() < 0 {
- return n.Negate()
- }
- return
-}
-
-// Negate returns a copy of this Decimal128 value but with the sign negated
-func (n Num) Negate() Num {
- n.lo = ^n.lo + 1
- n.hi = ^n.hi
- if n.lo == 0 {
- n.hi += 1
- }
- return n
-}
-
-func (n Num) Add(rhs Num) Num {
- n.hi += rhs.hi
- var carry uint64
- n.lo, carry = bits.Add64(n.lo, rhs.lo, 0)
- n.hi += int64(carry)
- return n
-}
-
-func (n Num) Sub(rhs Num) Num {
- n.hi -= rhs.hi
- var borrow uint64
- n.lo, borrow = bits.Sub64(n.lo, rhs.lo, 0)
- n.hi -= int64(borrow)
- return n
-}
-
-func (n Num) Mul(rhs Num) Num {
- hi, lo := bits.Mul64(n.lo, rhs.lo)
- hi += (uint64(n.hi) * rhs.lo) + (n.lo * uint64(rhs.hi))
- return Num{hi: int64(hi), lo: lo}
-}
-
-func (n Num) Div(rhs Num) (res, rem Num) {
- b := n.BigInt()
- out, remainder := b.QuoRem(b, rhs.BigInt(), &big.Int{})
- return FromBigInt(out), FromBigInt(remainder)
-}
-
-func (n Num) Pow(rhs Num) Num {
- b := n.BigInt()
- return FromBigInt(b.Exp(b, rhs.BigInt(), nil))
-}
-
-func scalePositiveFloat64(v float64, prec, scale int32) (float64, error) {
- var pscale float64
- if scale >= -38 && scale <= 38 {
- pscale = float64PowersOfTen[scale+38]
- } else {
- pscale = math.Pow10(int(scale))
- }
-
- v *= pscale
- v = math.RoundToEven(v)
- maxabs := float64PowersOfTen[prec+38]
- if v <= -maxabs || v >= maxabs {
- return 0, fmt.Errorf("cannot convert %f to decimal128(precision=%d, scale=%d): overflow", v, prec, scale)
- }
- return v, nil
-}
-
-func fromPositiveFloat64(v float64, prec, scale int32) (Num, error) {
- v, err := scalePositiveFloat64(v, prec, scale)
- if err != nil {
- return Num{}, err
- }
-
- hi := math.Floor(math.Ldexp(v, -64))
- low := v - math.Ldexp(hi, 64)
- return Num{hi: int64(hi), lo: uint64(low)}, nil
-}
-
-// this has to exist despite sharing some code with fromPositiveFloat64
-// because if we don't do the casts back to float32 in between each
-// step, we end up with a significantly different answer!
-// Aren't floating point values so much fun?
-//
-// example value to use:
-//
-// v := float32(1.8446746e+15)
-//
-// You'll end up with a different values if you do:
-//
-// FromFloat64(float64(v), 20, 4)
-//
-// vs
-//
-// FromFloat32(v, 20, 4)
-//
-// because float64(v) == 1844674629206016 rather than 1844674600000000
-func fromPositiveFloat32(v float32, prec, scale int32) (Num, error) {
- val, err := scalePositiveFloat64(float64(v), prec, scale)
- if err != nil {
- return Num{}, err
- }
-
- hi := float32(math.Floor(math.Ldexp(float64(float32(val)), -64)))
- low := float32(val) - float32(math.Ldexp(float64(hi), 64))
- return Num{hi: int64(hi), lo: uint64(low)}, nil
-}
-
-// FromFloat32 returns a new decimal128.Num constructed from the given float32
-// value using the provided precision and scale. Will return an error if the
-// value cannot be accurately represented with the desired precision and scale.
-func FromFloat32(v float32, prec, scale int32) (Num, error) {
- if v < 0 {
- dec, err := fromPositiveFloat32(-v, prec, scale)
- if err != nil {
- return dec, err
- }
- return dec.Negate(), nil
- }
- return fromPositiveFloat32(v, prec, scale)
-}
-
-// FromFloat64 returns a new decimal128.Num constructed from the given float64
-// value using the provided precision and scale. Will return an error if the
-// value cannot be accurately represented with the desired precision and scale.
-func FromFloat64(v float64, prec, scale int32) (Num, error) {
- if v < 0 {
- dec, err := fromPositiveFloat64(-v, prec, scale)
- if err != nil {
- return dec, err
- }
- return dec.Negate(), nil
- }
- return fromPositiveFloat64(v, prec, scale)
-}
-
-var pt5 = big.NewFloat(0.5)
-
-func FromString(v string, prec, scale int32) (n Num, err error) {
- // time for some math!
- // Our input precision means "number of digits of precision" but the
- // math/big library refers to precision in floating point terms
- // where it refers to the "number of bits of precision in the mantissa".
- // So we need to figure out how many bits we should use for precision,
- // based on the input precision. Too much precision and we aren't rounding
- // when we should. Too little precision and we round when we shouldn't.
- //
- // In general, the number of decimal digits you get from a given number
- // of bits will be:
- //
- // digits = log[base 10](2^nbits)
- //
- // it thus follows that:
- //
- // digits = nbits * log[base 10](2)
- // nbits = digits / log[base 10](2)
- //
- // So we need to account for our scale since we're going to be multiplying
- // by 10^scale in order to get the integral value we're actually going to use
- // So to get our number of bits we do:
- //
- // (prec + scale + 1) / log[base10](2)
- //
- // Finally, we still have a sign bit, so we -1 to account for the sign bit.
- // Aren't floating point numbers fun?
- var precInBits = uint(math.Round(float64(prec+scale+1)/math.Log10(2))) + 1
-
- var out *big.Float
- out, _, err = big.ParseFloat(v, 10, 128, big.ToNearestEven)
- if err != nil {
- return
- }
-
- if scale < 0 {
- var tmp big.Int
- val, _ := out.Int(&tmp)
- if val.BitLen() > 127 {
- return Num{}, errors.New("bitlen too large for decimal128")
- }
- n = FromBigInt(val)
- n, _ = n.Div(scaleMultipliers[-scale])
- } else {
- // Since we're going to truncate this to get an integer, we need to round
- // the value instead because of edge cases so that we match how other implementations
- // (e.g. C++) handles Decimal values. So if we're negative we'll subtract 0.5 and if
- // we're positive we'll add 0.5.
- p := (&big.Float{}).SetInt(scaleMultipliers[scale].BigInt())
- out.SetPrec(precInBits).Mul(out, p)
- if out.Signbit() {
- out.Sub(out, pt5)
- } else {
- out.Add(out, pt5)
- }
-
- var tmp big.Int
- val, _ := out.Int(&tmp)
- if val.BitLen() > 127 {
- return Num{}, errors.New("bitlen too large for decimal128")
- }
- n = FromBigInt(val)
- }
-
- if !n.FitsInPrecision(prec) {
- err = fmt.Errorf("val %v doesn't fit in precision %d", n, prec)
- }
- return
-}
-
-// ToFloat32 returns a float32 value representative of this decimal128.Num,
-// but with the given scale.
-func (n Num) ToFloat32(scale int32) float32 {
- return float32(n.ToFloat64(scale))
-}
-
-func (n Num) tofloat64Positive(scale int32) float64 {
- const twoTo64 float64 = 1.8446744073709552e+19
- x := float64(n.hi) * twoTo64
- x += float64(n.lo)
- if scale >= -38 && scale <= 38 {
- return x * float64PowersOfTen[-scale+38]
- }
-
- return x * math.Pow10(-int(scale))
-}
-
-// ToFloat64 returns a float64 value representative of this decimal128.Num,
-// but with the given scale.
-func (n Num) ToFloat64(scale int32) float64 {
- if n.hi < 0 {
- return -n.Negate().tofloat64Positive(scale)
- }
- return n.tofloat64Positive(scale)
-}
-
-// LowBits returns the low bits of the two's complement representation of the number.
-func (n Num) LowBits() uint64 { return n.lo }
-
-// HighBits returns the high bits of the two's complement representation of the number.
-func (n Num) HighBits() int64 { return n.hi }
-
-// Sign returns:
-//
-// -1 if x < 0
-//
-// 0 if x == 0
-//
-// +1 if x > 0
-func (n Num) Sign() int {
- if n == (Num{}) {
- return 0
- }
- return int(1 | (n.hi >> 63))
-}
-
-func toBigIntPositive(n Num) *big.Int {
- return (&big.Int{}).SetBits([]big.Word{big.Word(n.lo), big.Word(n.hi)})
-}
-
-// while the code would be simpler to just do lsh/rsh and add
-// it turns out from benchmarking that calling SetBits passing
-// in the words and negating ends up being >2x faster
-func (n Num) BigInt() *big.Int {
- if n.Sign() < 0 {
- b := toBigIntPositive(n.Negate())
- return b.Neg(b)
- }
- return toBigIntPositive(n)
-}
-
-// Greater returns true if the value represented by n is > other
-func (n Num) Greater(other Num) bool {
- return other.Less(n)
-}
-
-// GreaterEqual returns true if the value represented by n is >= other
-func (n Num) GreaterEqual(other Num) bool {
- return !n.Less(other)
-}
-
-// Less returns true if the value represented by n is < other
-func (n Num) Less(other Num) bool {
- return n.hi < other.hi || (n.hi == other.hi && n.lo < other.lo)
-}
-
-// LessEqual returns true if the value represented by n is <= other
-func (n Num) LessEqual(other Num) bool {
- return !n.Greater(other)
-}
-
-// Max returns the largest Decimal128 that was passed in the arguments
-func Max(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Greater(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Min returns the smallest Decimal128 that was passed in the arguments
-func Min(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Less(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Cmp compares the numbers represented by n and other and returns:
-//
-// +1 if n > other
-// 0 if n == other
-// -1 if n < other
-func (n Num) Cmp(other Num) int {
- switch {
- case n.Greater(other):
- return 1
- case n.Less(other):
- return -1
- }
- return 0
-}
-
-// IncreaseScaleBy returns a new decimal128.Num with the value scaled up by
-// the desired amount. Must be 0 <= increase <= 38. Any data loss from scaling
-// is ignored. If you wish to prevent data loss, use Rescale which will
-// return an error if data loss is detected.
-func (n Num) IncreaseScaleBy(increase int32) Num {
- debug.Assert(increase >= 0, "invalid increase scale for decimal128")
- debug.Assert(increase <= 38, "invalid increase scale for decimal128")
-
- v := scaleMultipliers[increase].BigInt()
- return FromBigInt(v.Mul(n.BigInt(), v))
-}
-
-// ReduceScaleBy returns a new decimal128.Num with the value scaled down by
-// the desired amount and, if 'round' is true, the value will be rounded
-// accordingly. Assumes 0 <= reduce <= 38. Any data loss from scaling
-// is ignored. If you wish to prevent data loss, use Rescale which will
-// return an error if data loss is detected.
-func (n Num) ReduceScaleBy(reduce int32, round bool) Num {
- debug.Assert(reduce >= 0, "invalid reduce scale for decimal128")
- debug.Assert(reduce <= 38, "invalid reduce scale for decimal128")
-
- if reduce == 0 {
- return n
- }
-
- divisor := scaleMultipliers[reduce].BigInt()
- result, remainder := divisor.QuoRem(n.BigInt(), divisor, (&big.Int{}))
- if round {
- divisorHalf := scaleMultipliersHalf[reduce]
- if remainder.Abs(remainder).Cmp(divisorHalf.BigInt()) != -1 {
- result.Add(result, big.NewInt(int64(n.Sign())))
- }
- }
- return FromBigInt(result)
-}
-
-func (n Num) rescaleWouldCauseDataLoss(deltaScale int32, multiplier Num) (out Num, loss bool) {
- var (
- value, result, remainder *big.Int
- )
- value = n.BigInt()
- if deltaScale < 0 {
- debug.Assert(multiplier.lo != 0 || multiplier.hi != 0, "multiplier needs to not be zero")
- result, remainder = (&big.Int{}).QuoRem(value, multiplier.BigInt(), (&big.Int{}))
- return FromBigInt(result), remainder.Cmp(big.NewInt(0)) != 0
- }
-
- result = (&big.Int{}).Mul(value, multiplier.BigInt())
- out = FromBigInt(result)
- cmp := result.Cmp(value)
- if n.Sign() < 0 {
- loss = cmp == 1
- } else {
- loss = cmp == -1
- }
- return
-}
-
-// Rescale returns a new decimal128.Num with the value updated assuming
-// the current value is scaled to originalScale with the new value scaled
-// to newScale. If rescaling this way would cause data loss, an error is
-// returned instead.
-func (n Num) Rescale(originalScale, newScale int32) (out Num, err error) {
- if originalScale == newScale {
- return n, nil
- }
-
- deltaScale := newScale - originalScale
- absDeltaScale := int32(math.Abs(float64(deltaScale)))
-
- multiplier := scaleMultipliers[absDeltaScale]
- var wouldHaveLoss bool
- out, wouldHaveLoss = n.rescaleWouldCauseDataLoss(deltaScale, multiplier)
- if wouldHaveLoss {
- err = errors.New("rescale data loss")
- }
- return
-}
-
-// Abs returns a new decimal128.Num that contains the absolute value of n
-func (n Num) Abs() Num {
- switch n.Sign() {
- case -1:
- return n.Negate()
- }
- return n
-}
-
-// FitsInPrecision returns true or false if the value currently held by
-// n would fit within precision (0 < prec <= 38) without losing any data.
-func (n Num) FitsInPrecision(prec int32) bool {
- debug.Assert(prec > 0, "precision must be > 0")
- debug.Assert(prec <= 38, "precision must be <= 38")
- return n.Abs().Less(scaleMultipliers[prec])
-}
-
-func (n Num) ToString(scale int32) string {
- f := (&big.Float{}).SetInt(n.BigInt())
- if scale < 0 {
- f.SetPrec(128).Mul(f, (&big.Float{}).SetInt(scaleMultipliers[-scale].BigInt()))
- } else {
- f.SetPrec(128).Quo(f, (&big.Float{}).SetInt(scaleMultipliers[scale].BigInt()))
- }
- return f.Text('f', int(scale))
-}
-
-func GetScaleMultiplier(pow int) Num { return scaleMultipliers[pow] }
-
-func GetHalfScaleMultiplier(pow int) Num { return scaleMultipliersHalf[pow] }
-
-var (
- scaleMultipliers = [...]Num{
- FromU64(1),
- FromU64(10),
- FromU64(100),
- FromU64(1000),
- FromU64(10000),
- FromU64(100000),
- FromU64(1000000),
- FromU64(10000000),
- FromU64(100000000),
- FromU64(1000000000),
- FromU64(10000000000),
- FromU64(100000000000),
- FromU64(1000000000000),
- FromU64(10000000000000),
- FromU64(100000000000000),
- FromU64(1000000000000000),
- FromU64(10000000000000000),
- FromU64(100000000000000000),
- FromU64(1000000000000000000),
- New(0, 10000000000000000000),
- New(5, 7766279631452241920),
- New(54, 3875820019684212736),
- New(542, 1864712049423024128),
- New(5421, 200376420520689664),
- New(54210, 2003764205206896640),
- New(542101, 1590897978359414784),
- New(5421010, 15908979783594147840),
- New(54210108, 11515845246265065472),
- New(542101086, 4477988020393345024),
- New(5421010862, 7886392056514347008),
- New(54210108624, 5076944270305263616),
- New(542101086242, 13875954555633532928),
- New(5421010862427, 9632337040368467968),
- New(54210108624275, 4089650035136921600),
- New(542101086242752, 4003012203950112768),
- New(5421010862427522, 3136633892082024448),
- New(54210108624275221, 12919594847110692864),
- New(542101086242752217, 68739955140067328),
- New(5421010862427522170, 687399551400673280),
- }
-
- scaleMultipliersHalf = [...]Num{
- FromU64(0),
- FromU64(5),
- FromU64(50),
- FromU64(500),
- FromU64(5000),
- FromU64(50000),
- FromU64(500000),
- FromU64(5000000),
- FromU64(50000000),
- FromU64(500000000),
- FromU64(5000000000),
- FromU64(50000000000),
- FromU64(500000000000),
- FromU64(5000000000000),
- FromU64(50000000000000),
- FromU64(500000000000000),
- FromU64(5000000000000000),
- FromU64(50000000000000000),
- FromU64(500000000000000000),
- FromU64(5000000000000000000),
- New(2, 13106511852580896768),
- New(27, 1937910009842106368),
- New(271, 932356024711512064),
- New(2710, 9323560247115120640),
- New(27105, 1001882102603448320),
- New(271050, 10018821026034483200),
- New(2710505, 7954489891797073920),
- New(27105054, 5757922623132532736),
- New(271050543, 2238994010196672512),
- New(2710505431, 3943196028257173504),
- New(27105054312, 2538472135152631808),
- New(271050543121, 6937977277816766464),
- New(2710505431213, 14039540557039009792),
- New(27105054312137, 11268197054423236608),
- New(271050543121376, 2001506101975056384),
- New(2710505431213761, 1568316946041012224),
- New(27105054312137610, 15683169460410122240),
- New(271050543121376108, 9257742014424809472),
- New(2710505431213761085, 343699775700336640),
- }
-
- float64PowersOfTen = [...]float64{
- 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33, 1e-32, 1e-31, 1e-30, 1e-29,
- 1e-28, 1e-27, 1e-26, 1e-25, 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19,
- 1e-18, 1e-17, 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9,
- 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1,
- 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11,
- 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21,
- 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31,
- 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38,
- }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/decimal256/decimal256.go b/vendor/github.com/apache/arrow/go/v15/arrow/decimal256/decimal256.go
deleted file mode 100644
index 65be0df9d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/decimal256/decimal256.go
+++ /dev/null
@@ -1,708 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package decimal256
-
-import (
- "errors"
- "fmt"
- "math"
- "math/big"
- "math/bits"
-
- "github.com/apache/arrow/go/v15/arrow/decimal128"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-const (
- MaxPrecision = 76
- MaxScale = 76
-)
-
-func GetMaxValue(prec int32) Num {
- return scaleMultipliers[prec].Sub(FromU64(1))
-}
-
-type Num struct {
- // arr[0] is the lowest bits, arr[3] is the highest bits
- arr [4]uint64
-}
-
-// New returns a new signed 256-bit integer value where x1 contains
-// the highest bits with the rest of the values in order down to the
-// lowest bits
-//
-// ie: New(1, 2, 3, 4) returns with the elements in little-endian order
-// {4, 3, 2, 1} but each value is still represented as the native endianness
-func New(x1, x2, x3, x4 uint64) Num {
- return Num{[4]uint64{x4, x3, x2, x1}}
-}
-
-func (n Num) Array() [4]uint64 { return n.arr }
-
-func (n Num) LowBits() uint64 { return n.arr[0] }
-
-func FromDecimal128(n decimal128.Num) Num {
- var topBits uint64
- if n.Sign() < 0 {
- topBits = math.MaxUint64
- }
- return New(topBits, topBits, uint64(n.HighBits()), n.LowBits())
-}
-
-func FromU64(v uint64) Num {
- return Num{[4]uint64{v, 0, 0, 0}}
-}
-
-func FromI64(v int64) Num {
- switch {
- case v > 0:
- return New(0, 0, 0, uint64(v))
- case v < 0:
- return New(math.MaxUint64, math.MaxUint64, math.MaxUint64, uint64(v))
- default:
- return Num{}
- }
-}
-
-func (n Num) Negate() Num {
- var carry uint64 = 1
- for i := range n.arr {
- n.arr[i] = ^n.arr[i] + carry
- if n.arr[i] != 0 {
- carry = 0
- }
- }
- return n
-}
-
-func (n Num) Add(rhs Num) Num {
- var carry uint64
- for i, v := range n.arr {
- n.arr[i], carry = bits.Add64(v, rhs.arr[i], carry)
- }
- return n
-}
-
-func (n Num) Sub(rhs Num) Num {
- return n.Add(rhs.Negate())
-}
-
-func (n Num) Mul(rhs Num) Num {
- b := n.BigInt()
- return FromBigInt(b.Mul(b, rhs.BigInt()))
-}
-
-func (n Num) Div(rhs Num) (res, rem Num) {
- b := n.BigInt()
- out, remainder := b.QuoRem(b, rhs.BigInt(), &big.Int{})
- return FromBigInt(out), FromBigInt(remainder)
-}
-
-func (n Num) Pow(rhs Num) Num {
- b := n.BigInt()
- return FromBigInt(b.Exp(b, rhs.BigInt(), nil))
-}
-
-var pt5 = big.NewFloat(0.5)
-
-func FromString(v string, prec, scale int32) (n Num, err error) {
- // time for some math!
- // Our input precision means "number of digits of precision" but the
- // math/big library refers to precision in floating point terms
- // where it refers to the "number of bits of precision in the mantissa".
- // So we need to figure out how many bits we should use for precision,
- // based on the input precision. Too much precision and we aren't rounding
- // when we should. Too little precision and we round when we shouldn't.
- //
- // In general, the number of decimal digits you get from a given number
- // of bits will be:
- //
- // digits = log[base 10](2^nbits)
- //
- // it thus follows that:
- //
- // digits = nbits * log[base 10](2)
- // nbits = digits / log[base 10](2)
- //
- // So we need to account for our scale since we're going to be multiplying
- // by 10^scale in order to get the integral value we're actually going to use
- // So to get our number of bits we do:
- //
- // (prec + scale + 1) / log[base10](2)
- //
- // Finally, we still have a sign bit, so we -1 to account for the sign bit.
- // Aren't floating point numbers fun?
- var precInBits = uint(math.Round(float64(prec+scale+1)/math.Log10(2))) + 1
-
- var out *big.Float
- out, _, err = big.ParseFloat(v, 10, 255, big.ToNearestEven)
- if err != nil {
- return
- }
-
- if scale < 0 {
- var tmp big.Int
- val, _ := out.Int(&tmp)
- if val.BitLen() > 255 {
- return Num{}, errors.New("bitlen too large for decimal256")
- }
- n = FromBigInt(val)
-
- n, _ = n.Div(scaleMultipliers[-scale])
- } else {
- out.Mul(out, (&big.Float{}).SetInt(scaleMultipliers[scale].BigInt())).SetPrec(precInBits)
- // Since we're going to truncate this to get an integer, we need to round
- // the value instead because of edge cases so that we match how other implementations
- // (e.g. C++) handles Decimal values. So if we're negative we'll subtract 0.5 and if
- // we're positive we'll add 0.5.
- if out.Signbit() {
- out.Sub(out, pt5)
- } else {
- out.Add(out, pt5)
- }
-
- var tmp big.Int
- val, _ := out.Int(&tmp)
- if val.BitLen() > 255 {
- return Num{}, errors.New("bitlen too large for decimal256")
- }
- n = FromBigInt(val)
- }
- if !n.FitsInPrecision(prec) {
- err = fmt.Errorf("value %v doesn't fit in precision %d", n, prec)
- }
- return
-}
-
-func FromFloat32(v float32, prec, scale int32) (Num, error) {
- debug.Assert(prec > 0 && prec <= 76, "invalid precision for converting to decimal256")
-
- if math.IsInf(float64(v), 0) {
- return Num{}, fmt.Errorf("cannot convert %f to decimal256", v)
- }
-
- if v < 0 {
- dec, err := fromPositiveFloat32(-v, prec, scale)
- if err != nil {
- return dec, err
- }
- return dec.Negate(), nil
- }
- return fromPositiveFloat32(v, prec, scale)
-}
-
-func FromFloat64(v float64, prec, scale int32) (Num, error) {
- debug.Assert(prec > 0 && prec <= 76, "invalid precision for converting to decimal256")
-
- if math.IsInf(v, 0) {
- return Num{}, fmt.Errorf("cannot convert %f to decimal256", v)
- }
-
- if v < 0 {
- dec, err := fromPositiveFloat64(-v, prec, scale)
- if err != nil {
- return dec, err
- }
- return dec.Negate(), nil
- }
- return fromPositiveFloat64(v, prec, scale)
-}
-
-// this has to exist despite sharing some code with fromPositiveFloat64
-// because if we don't do the casts back to float32 in between each
-// step, we end up with a significantly different answer!
-// Aren't floating point values so much fun?
-//
-// example value to use:
-//
-// v := float32(1.8446746e+15)
-//
-// You'll end up with a different values if you do:
-//
-// FromFloat64(float64(v), 20, 4)
-//
-// vs
-//
-// FromFloat32(v, 20, 4)
-//
-// because float64(v) == 1844674629206016 rather than 1844674600000000
-func fromPositiveFloat32(v float32, prec, scale int32) (Num, error) {
- val, err := scalePositiveFloat64(float64(v), prec, scale)
- if err != nil {
- return Num{}, err
- }
-
- v = float32(val)
- var arr [4]float32
- arr[3] = float32(math.Floor(math.Ldexp(float64(v), -192)))
- v -= float32(math.Ldexp(float64(arr[3]), 192))
- arr[2] = float32(math.Floor(math.Ldexp(float64(v), -128)))
- v -= float32(math.Ldexp(float64(arr[2]), 128))
- arr[1] = float32(math.Floor(math.Ldexp(float64(v), -64)))
- v -= float32(math.Ldexp(float64(arr[1]), 64))
- arr[0] = v
-
- debug.Assert(arr[3] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[3] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[2] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[2] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[1] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[1] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[0] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[0] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- return Num{[4]uint64{uint64(arr[0]), uint64(arr[1]), uint64(arr[2]), uint64(arr[3])}}, nil
-}
-
-func scalePositiveFloat64(v float64, prec, scale int32) (float64, error) {
- var pscale float64
- if scale >= -76 && scale <= 76 {
- pscale = float64PowersOfTen[scale+76]
- } else {
- pscale = math.Pow10(int(scale))
- }
-
- v *= pscale
- v = math.RoundToEven(v)
- maxabs := float64PowersOfTen[prec+76]
- if v <= -maxabs || v >= maxabs {
- return 0, fmt.Errorf("cannot convert %f to decimal256(precision=%d, scale=%d): overflow",
- v, prec, scale)
- }
- return v, nil
-}
-
-func fromPositiveFloat64(v float64, prec, scale int32) (Num, error) {
- val, err := scalePositiveFloat64(v, prec, scale)
- if err != nil {
- return Num{}, err
- }
-
- var arr [4]float64
- arr[3] = math.Floor(math.Ldexp(val, -192))
- val -= math.Ldexp(arr[3], 192)
- arr[2] = math.Floor(math.Ldexp(val, -128))
- val -= math.Ldexp(arr[2], 128)
- arr[1] = math.Floor(math.Ldexp(val, -64))
- val -= math.Ldexp(arr[1], 64)
- arr[0] = val
-
- debug.Assert(arr[3] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[3] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[2] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[2] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[1] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[1] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- debug.Assert(arr[0] >= 0, "bad conversion float64 to decimal256")
- debug.Assert(arr[0] < 1.8446744073709552e+19, "bad conversion float64 to decimal256") // 2**64
- return Num{[4]uint64{uint64(arr[0]), uint64(arr[1]), uint64(arr[2]), uint64(arr[3])}}, nil
-}
-
-func (n Num) tofloat64Positive(scale int32) float64 {
- const (
- twoTo64 float64 = 1.8446744073709552e+19
- twoTo128 float64 = 3.402823669209385e+38
- twoTo192 float64 = 6.277101735386681e+57
- )
-
- x := float64(n.arr[3]) * twoTo192
- x += float64(n.arr[2]) * twoTo128
- x += float64(n.arr[1]) * twoTo64
- x += float64(n.arr[0])
-
- if scale >= -76 && scale <= 76 {
- return x * float64PowersOfTen[-scale+76]
- }
-
- return x * math.Pow10(-int(scale))
-}
-
-func (n Num) ToFloat32(scale int32) float32 { return float32(n.ToFloat64(scale)) }
-
-func (n Num) ToFloat64(scale int32) float64 {
- if n.Sign() < 0 {
- return -n.Negate().tofloat64Positive(scale)
- }
- return n.tofloat64Positive(scale)
-}
-
-func (n Num) Sign() int {
- if n == (Num{}) {
- return 0
- }
- return int(1 | (int64(n.arr[3]) >> 63))
-}
-
-func FromBigInt(v *big.Int) (n Num) {
- bitlen := v.BitLen()
- if bitlen > 255 {
- panic("arrow/decimal256: cannot represent value larger than 256bits")
- } else if bitlen == 0 {
- return
- }
-
- b := v.Bits()
- for i, bits := range b {
- n.arr[i] = uint64(bits)
- }
- if v.Sign() < 0 {
- return n.Negate()
- }
- return
-}
-
-func toBigIntPositive(n Num) *big.Int {
- return new(big.Int).SetBits([]big.Word{big.Word(n.arr[0]), big.Word(n.arr[1]), big.Word(n.arr[2]), big.Word(n.arr[3])})
-}
-
-func (n Num) BigInt() *big.Int {
- if n.Sign() < 0 {
- b := toBigIntPositive(n.Negate())
- return b.Neg(b)
- }
- return toBigIntPositive(n)
-}
-
-// Greater returns true if the value represented by n is > other
-func (n Num) Greater(other Num) bool {
- return other.Less(n)
-}
-
-// GreaterEqual returns true if the value represented by n is >= other
-func (n Num) GreaterEqual(other Num) bool {
- return !n.Less(other)
-}
-
-// Less returns true if the value represented by n is < other
-func (n Num) Less(other Num) bool {
- switch {
- case n.arr[3] != other.arr[3]:
- return int64(n.arr[3]) < int64(other.arr[3])
- case n.arr[2] != other.arr[2]:
- return n.arr[2] < other.arr[2]
- case n.arr[1] != other.arr[1]:
- return n.arr[1] < other.arr[1]
- }
- return n.arr[0] < other.arr[0]
-}
-
-// LessEqual returns true if the value represented by n is <= other
-func (n Num) LessEqual(other Num) bool {
- return !n.Greater(other)
-}
-
-// Max returns the largest Decimal256 that was passed in the arguments
-func Max(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Greater(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Min returns the smallest Decimal256 that was passed in the arguments
-func Min(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Less(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Cmp compares the numbers represented by n and other and returns:
-//
-// +1 if n > other
-// 0 if n == other
-// -1 if n < other
-func (n Num) Cmp(other Num) int {
- switch {
- case n.Greater(other):
- return 1
- case n.Less(other):
- return -1
- }
- return 0
-}
-
-func (n Num) IncreaseScaleBy(increase int32) Num {
- debug.Assert(increase >= 0, "invalid amount to increase scale by")
- debug.Assert(increase <= 76, "invalid amount to increase scale by")
-
- v := scaleMultipliers[increase].BigInt()
- return FromBigInt(v.Mul(n.BigInt(), v))
-}
-
-func (n Num) ReduceScaleBy(reduce int32, round bool) Num {
- debug.Assert(reduce >= 0, "invalid amount to reduce scale by")
- debug.Assert(reduce <= 76, "invalid amount to reduce scale by")
-
- if reduce == 0 {
- return n
- }
-
- divisor := scaleMultipliers[reduce].BigInt()
- result, remainder := divisor.QuoRem(n.BigInt(), divisor, new(big.Int))
- if round {
- divisorHalf := scaleMultipliersHalf[reduce]
- if remainder.Abs(remainder).Cmp(divisorHalf.BigInt()) != -1 {
- result.Add(result, big.NewInt(int64(n.Sign())))
- }
- }
- return FromBigInt(result)
-}
-
-func (n Num) rescaleWouldCauseDataLoss(deltaScale int32, multiplier Num) (out Num, loss bool) {
- if deltaScale < 0 {
- var remainder Num
- out, remainder = n.Div(multiplier)
- return out, remainder != Num{}
- }
-
- out = n.Mul(multiplier)
- if n.Sign() < 0 {
- loss = n.Less(out)
- } else {
- loss = out.Less(n)
- }
- return
-}
-
-func (n Num) Rescale(original, newscale int32) (out Num, err error) {
- if original == newscale {
- return n, nil
- }
-
- deltaScale := newscale - original
- absDeltaScale := int32(math.Abs(float64(deltaScale)))
-
- multiplier := scaleMultipliers[absDeltaScale]
- var wouldHaveLoss bool
- out, wouldHaveLoss = n.rescaleWouldCauseDataLoss(deltaScale, multiplier)
- if wouldHaveLoss {
- err = errors.New("rescale data loss")
- }
- return
-}
-
-func (n Num) Abs() Num {
- switch n.Sign() {
- case -1:
- return n.Negate()
- }
- return n
-}
-
-func (n Num) FitsInPrecision(prec int32) bool {
- debug.Assert(prec > 0, "precision must be > 0")
- debug.Assert(prec <= 76, "precision must be <= 76")
- return n.Abs().Less(scaleMultipliers[prec])
-}
-
-func (n Num) ToString(scale int32) string {
- f := (&big.Float{}).SetInt(n.BigInt())
- if scale < 0 {
- f.SetPrec(256).Mul(f, (&big.Float{}).SetInt(scaleMultipliers[-scale].BigInt()))
- } else {
- f.SetPrec(256).Quo(f, (&big.Float{}).SetInt(scaleMultipliers[scale].BigInt()))
- }
- return f.Text('f', int(scale))
-}
-
-func GetScaleMultiplier(pow int) Num { return scaleMultipliers[pow] }
-
-func GetHalfScaleMultiplier(pow int) Num { return scaleMultipliersHalf[pow] }
-
-var (
- scaleMultipliers = [...]Num{
- FromU64(1),
- FromU64(10),
- FromU64(100),
- FromU64(1000),
- FromU64(10000),
- FromU64(100000),
- FromU64(1000000),
- FromU64(10000000),
- FromU64(100000000),
- FromU64(1000000000),
- FromU64(10000000000),
- FromU64(100000000000),
- FromU64(1000000000000),
- FromU64(10000000000000),
- FromU64(100000000000000),
- FromU64(1000000000000000),
- FromU64(10000000000000000),
- FromU64(100000000000000000),
- FromU64(1000000000000000000),
- New(0, 0, 0, 10000000000000000000),
- New(0, 0, 5, 7766279631452241920),
- New(0, 0, 54, 3875820019684212736),
- New(0, 0, 542, 1864712049423024128),
- New(0, 0, 5421, 200376420520689664),
- New(0, 0, 54210, 2003764205206896640),
- New(0, 0, 542101, 1590897978359414784),
- New(0, 0, 5421010, 15908979783594147840),
- New(0, 0, 54210108, 11515845246265065472),
- New(0, 0, 542101086, 4477988020393345024),
- New(0, 0, 5421010862, 7886392056514347008),
- New(0, 0, 54210108624, 5076944270305263616),
- New(0, 0, 542101086242, 13875954555633532928),
- New(0, 0, 5421010862427, 9632337040368467968),
- New(0, 0, 54210108624275, 4089650035136921600),
- New(0, 0, 542101086242752, 4003012203950112768),
- New(0, 0, 5421010862427522, 3136633892082024448),
- New(0, 0, 54210108624275221, 12919594847110692864),
- New(0, 0, 542101086242752217, 68739955140067328),
- New(0, 0, 5421010862427522170, 687399551400673280),
- New(0, 2, 17316620476856118468, 6873995514006732800),
- New(0, 29, 7145508105175220139, 13399722918938673152),
- New(0, 293, 16114848830623546549, 4870020673419870208),
- New(0, 2938, 13574535716559052564, 11806718586779598848),
- New(0, 29387, 6618148649623664334, 7386721425538678784),
- New(0, 293873, 10841254275107988496, 80237960548581376),
- New(0, 2938735, 16178822382532126880, 802379605485813760),
- New(0, 29387358, 14214271235644855872, 8023796054858137600),
- New(0, 293873587, 13015503840481697412, 6450984253743169536),
- New(0, 2938735877, 1027829888850112811, 9169610316303040512),
- New(0, 29387358770, 10278298888501128114, 17909126868192198656),
- New(0, 293873587705, 10549268516463523069, 13070572018536022016),
- New(0, 2938735877055, 13258964796087472617, 1578511669393358848),
- New(0, 29387358770557, 3462439444907864858, 15785116693933588480),
- New(0, 293873587705571, 16177650375369096972, 10277214349659471872),
- New(0, 2938735877055718, 14202551164014556797, 10538423128046960640),
- New(0, 29387358770557187, 12898303124178706663, 13150510911921848320),
- New(0, 293873587705571876, 18302566799529756941, 2377900603251621888),
- New(0, 2938735877055718769, 17004971331911604867, 5332261958806667264),
- New(1, 10940614696847636083, 4029016655730084128, 16429131440647569408),
- New(15, 17172426599928602752, 3396678409881738056, 16717361816799281152),
- New(159, 5703569335900062977, 15520040025107828953, 1152921504606846976),
- New(1593, 1695461137871974930, 7626447661401876602, 11529215046068469760),
- New(15930, 16954611378719749304, 2477500319180559562, 4611686018427387904),
- New(159309, 3525417123811528497, 6328259118096044006, 9223372036854775808),
- New(1593091, 16807427164405733357, 7942358959831785217, 0),
- New(15930919, 2053574980671369030, 5636613303479645706, 0),
- New(159309191, 2089005733004138687, 1025900813667802212, 0),
- New(1593091911, 2443313256331835254, 10259008136678022120, 0),
- New(15930919111, 5986388489608800929, 10356360998232463120, 0),
- New(159309191113, 4523652674959354447, 11329889613776873120, 0),
- New(1593091911132, 8343038602174441244, 2618431695511421504, 0),
- New(15930919111324, 9643409726906205977, 7737572881404663424, 0),
- New(159309191113245, 4200376900514301694, 3588752519208427776, 0),
- New(1593091911132452, 5110280857723913709, 17440781118374726144, 0),
- New(15930919111324522, 14209320429820033867, 8387114520361296896, 0),
- New(159309191113245227, 12965995782233477362, 10084168908774762496, 0),
- New(1593091911132452277, 532749306367912313, 8607968719199866880, 0),
- }
-
- scaleMultipliersHalf = [...]Num{
- FromU64(0),
- FromU64(5),
- FromU64(50),
- FromU64(500),
- FromU64(5000),
- FromU64(50000),
- FromU64(500000),
- FromU64(5000000),
- FromU64(50000000),
- FromU64(500000000),
- FromU64(5000000000),
- FromU64(50000000000),
- FromU64(500000000000),
- FromU64(5000000000000),
- FromU64(50000000000000),
- FromU64(500000000000000),
- FromU64(5000000000000000),
- FromU64(50000000000000000),
- FromU64(500000000000000000),
- FromU64(5000000000000000000),
- New(0, 0, 2, 13106511852580896768),
- New(0, 0, 27, 1937910009842106368),
- New(0, 0, 271, 932356024711512064),
- New(0, 0, 2710, 9323560247115120640),
- New(0, 0, 27105, 1001882102603448320),
- New(0, 0, 271050, 10018821026034483200),
- New(0, 0, 2710505, 7954489891797073920),
- New(0, 0, 27105054, 5757922623132532736),
- New(0, 0, 271050543, 2238994010196672512),
- New(0, 0, 2710505431, 3943196028257173504),
- New(0, 0, 27105054312, 2538472135152631808),
- New(0, 0, 271050543121, 6937977277816766464),
- New(0, 0, 2710505431213, 14039540557039009792),
- New(0, 0, 27105054312137, 11268197054423236608),
- New(0, 0, 271050543121376, 2001506101975056384),
- New(0, 0, 2710505431213761, 1568316946041012224),
- New(0, 0, 27105054312137610, 15683169460410122240),
- New(0, 0, 271050543121376108, 9257742014424809472),
- New(0, 0, 2710505431213761085, 343699775700336640),
- New(0, 1, 8658310238428059234, 3436997757003366400),
- New(0, 14, 12796126089442385877, 15923233496324112384),
- New(0, 146, 17280796452166549082, 11658382373564710912),
- New(0, 1469, 6787267858279526282, 5903359293389799424),
- New(0, 14693, 12532446361666607975, 3693360712769339392),
- New(0, 146936, 14643999174408770056, 40118980274290688),
- New(0, 1469367, 17312783228120839248, 401189802742906880),
- New(0, 14693679, 7107135617822427936, 4011898027429068800),
- New(0, 146936793, 15731123957095624514, 3225492126871584768),
- New(0, 1469367938, 9737286981279832213, 13808177195006296064),
- New(0, 14693679385, 5139149444250564057, 8954563434096099328),
- New(0, 146936793852, 14498006295086537342, 15758658046122786816),
- New(0, 1469367938527, 15852854434898512116, 10012627871551455232),
- New(0, 14693679385278, 10954591759308708237, 7892558346966794240),
- New(0, 146936793852785, 17312197224539324294, 5138607174829735936),
- New(0, 1469367938527859, 7101275582007278398, 14492583600878256128),
- New(0, 14693679385278593, 15672523598944129139, 15798627492815699968),
- New(0, 146936793852785938, 9151283399764878470, 10412322338480586752),
- New(0, 1469367938527859384, 17725857702810578241, 11889503016258109440),
- New(0, 14693679385278593849, 11237880364719817872, 8214565720323784704),
- New(7, 17809585336819077184, 1698339204940869028, 8358680908399640576),
- New(79, 12075156704804807296, 16983392049408690284, 9799832789158199296),
- New(796, 10071102605790763273, 3813223830700938301, 5764607523034234880),
- New(7965, 8477305689359874652, 1238750159590279781, 2305843009213693952),
- New(79654, 10986080598760540056, 12387501595902797811, 4611686018427387904),
- New(796545, 17627085619057642486, 13194551516770668416, 9223372036854775808),
- New(7965459, 10250159527190460323, 2818306651739822853, 0),
- New(79654595, 10267874903356845151, 9736322443688676914, 0),
- New(796545955, 10445028665020693435, 5129504068339011060, 0),
- New(7965459555, 12216566281659176272, 14401552535971007368, 0),
- New(79654595556, 11485198374334453031, 14888316843743212368, 0),
- New(796545955566, 4171519301087220622, 1309215847755710752, 0),
- New(7965459555662, 4821704863453102988, 13092158477557107520, 0),
- New(79654595556622, 11323560487111926655, 1794376259604213888, 0),
- New(796545955566226, 2555140428861956854, 17943762596042138880, 0),
- New(7965459555662261, 7104660214910016933, 13416929297035424256, 0),
- New(79654595556622613, 15706369927971514489, 5042084454387381248, 0),
- New(796545955566226138, 9489746690038731964, 13527356396454709248, 0),
- }
-
- float64PowersOfTen = [...]float64{
- 1e-76, 1e-75, 1e-74, 1e-73, 1e-72, 1e-71, 1e-70, 1e-69, 1e-68, 1e-67, 1e-66, 1e-65,
- 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57, 1e-56, 1e-55, 1e-54, 1e-53,
- 1e-52, 1e-51, 1e-50, 1e-49, 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41,
- 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33, 1e-32, 1e-31, 1e-30, 1e-29,
- 1e-28, 1e-27, 1e-26, 1e-25, 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17,
- 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5,
- 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
- 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19,
- 1e20, 1e21, 1e22, 1e23, 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31,
- 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39, 1e40, 1e41, 1e42, 1e43,
- 1e44, 1e45, 1e46, 1e47, 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55,
- 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63, 1e64, 1e65, 1e66, 1e67,
- 1e68, 1e69, 1e70, 1e71, 1e72, 1e73, 1e74, 1e75, 1e76,
- }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/doc.go b/vendor/github.com/apache/arrow/go/v15/arrow/doc.go
deleted file mode 100644
index d146bc277..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/doc.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
-Package arrow provides an implementation of Apache Arrow.
-
-Apache Arrow is a cross-language development platform for in-memory data. It specifies a standardized
-language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic
-operations on modern hardware. It also provides computational libraries and zero-copy streaming
-messaging and inter-process communication.
-
-# Basics
-
-The fundamental data structure in Arrow is an Array, which holds a sequence of values of the same type. An array
-consists of memory holding the data and an additional validity bitmap that indicates if the corresponding entry in the
-array is valid (not null). If the array has no null entries, it is possible to omit this bitmap.
-
-# Requirements
-
-Despite the go.mod stating go1.20, everything is able to be built with go1.19 or higher.
-
-To build with tinygo include the noasm build tag.
-*/
-package arrow
-
-const PkgVersion = "15.0.2"
-
-//go:generate go run _tools/tmpl/main.go -i -data=numeric.tmpldata type_traits_numeric.gen.go.tmpl type_traits_numeric.gen_test.go.tmpl array/numeric.gen.go.tmpl array/numericbuilder.gen.go.tmpl array/bufferbuilder_numeric.gen.go.tmpl
-//go:generate go run _tools/tmpl/main.go -i -data=datatype_numeric.gen.go.tmpldata datatype_numeric.gen.go.tmpl tensor/numeric.gen.go.tmpl tensor/numeric.gen_test.go.tmpl
-//go:generate go run _tools/tmpl/main.go -i -data=scalar/numeric.gen.go.tmpldata scalar/numeric.gen.go.tmpl scalar/numeric.gen_test.go.tmpl
-//go:generate go run ./gen-flatbuffers.go
-
-// stringer
-//go:generate stringer -type=Type
-//go:generate stringer -type=UnionMode -linecomment
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/encoded/ree_utils.go b/vendor/github.com/apache/arrow/go/v15/arrow/encoded/ree_utils.go
deleted file mode 100644
index 2ff4e7cad..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/encoded/ree_utils.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package encoded
-
-import (
- "math"
- "sort"
-
- "github.com/apache/arrow/go/v15/arrow"
-)
-
-// FindPhysicalIndex performs a binary search on the run-ends to return
-// the appropriate physical offset into the values/run-ends that corresponds
-// with the logical index provided when called. If the array's logical offset
-// is provided, this is equivalent to calling FindPhysicalOffset.
-//
-// For example, an array with run-ends [10, 20, 30, 40, 50] and a logicalIdx
-// of 25 will return the value 2. This returns the smallest offset
-// whose run-end is greater than the logicalIdx requested, which would
-// also be the index into the values that contains the correct value.
-//
-// This function assumes it receives Run End Encoded array data
-func FindPhysicalIndex(arr arrow.ArrayData, logicalIdx int) int {
- data := arr.Children()[0]
- if data.Len() == 0 {
- return 0
- }
-
- switch data.DataType().ID() {
- case arrow.INT16:
- runEnds := arrow.Int16Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[data.Offset() : data.Offset()+data.Len()]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int16(logicalIdx) })
- case arrow.INT32:
- runEnds := arrow.Int32Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[data.Offset() : data.Offset()+data.Len()]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int32(logicalIdx) })
- case arrow.INT64:
- runEnds := arrow.Int64Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[data.Offset() : data.Offset()+data.Len()]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int64(logicalIdx) })
- default:
- panic("only int16, int32, and int64 are allowed for the run-ends")
- }
-}
-
-// FindPhysicalOffset performs a binary search on the run-ends to return
-// the appropriate physical offset into the values/run-ends that corresponds
-// with the logical offset defined in the array.
-//
-// For example, an array with run-ends [10, 20, 30, 40, 50] and a logical
-// offset of 25 will return the value 2. This returns the smallest offset
-// whose run-end is greater than the logical offset, which would also be the
-// offset index into the values that contains the correct value.
-//
-// This function assumes it receives Run End Encoded array data
-func FindPhysicalOffset(arr arrow.ArrayData) int {
- return FindPhysicalIndex(arr, arr.Offset())
-}
-
-// GetPhysicalLength returns the physical number of values which are in
-// the passed in RunEndEncoded array data. This will take into account
-// the offset and length of the array as reported in the array data
-// (so that it properly handles slices).
-//
-// This function assumes it receives Run End Encoded array data
-func GetPhysicalLength(arr arrow.ArrayData) int {
- if arr.Len() == 0 {
- return 0
- }
-
- data := arr.Children()[0]
- physicalOffset := FindPhysicalOffset(arr)
- start, length := data.Offset()+physicalOffset, data.Len()-physicalOffset
- offset := arr.Offset() + arr.Len() - 1
-
- switch data.DataType().ID() {
- case arrow.INT16:
- runEnds := arrow.Int16Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[start : start+length]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int16(offset) }) + 1
- case arrow.INT32:
- runEnds := arrow.Int32Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[start : start+length]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int32(offset) }) + 1
- case arrow.INT64:
- runEnds := arrow.Int64Traits.CastFromBytes(data.Buffers()[1].Bytes())
- runEnds = runEnds[start : start+length]
- return sort.Search(len(runEnds), func(i int) bool { return runEnds[i] > int64(offset) }) + 1
- default:
- panic("arrow/rle: can only get rle.PhysicalLength for int16/int32/int64 run ends array")
- }
-}
-
-func getRunEnds(arr arrow.ArrayData) func(int64) int64 {
- switch arr.DataType().ID() {
- case arrow.INT16:
- runEnds := arrow.Int16Traits.CastFromBytes(arr.Buffers()[1].Bytes())
- runEnds = runEnds[arr.Offset() : arr.Offset()+arr.Len()]
- return func(i int64) int64 { return int64(runEnds[i]) }
- case arrow.INT32:
- runEnds := arrow.Int32Traits.CastFromBytes(arr.Buffers()[1].Bytes())
- runEnds = runEnds[arr.Offset() : arr.Offset()+arr.Len()]
- return func(i int64) int64 { return int64(runEnds[i]) }
- case arrow.INT64:
- runEnds := arrow.Int64Traits.CastFromBytes(arr.Buffers()[1].Bytes())
- runEnds = runEnds[arr.Offset() : arr.Offset()+arr.Len()]
- return func(i int64) int64 { return int64(runEnds[i]) }
- default:
- panic("only int16, int32, and int64 are allowed for the run-ends")
- }
-}
-
-// MergedRuns is used to take two Run End Encoded arrays and iterate
-// them, finding the correct physical indices to correspond with the
-// runs.
-type MergedRuns struct {
- inputs [2]arrow.Array
- runIndex [2]int64
- inputRunEnds [2]func(int64) int64
- runEnds [2]int64
- logicalLen int
- logicalPos int
- mergedEnd int64
-}
-
-// NewMergedRuns takes two RunEndEncoded arrays and returns a MergedRuns
-// object that will allow iterating over the physical indices of the runs.
-func NewMergedRuns(inputs [2]arrow.Array) *MergedRuns {
- if len(inputs) == 0 {
- return &MergedRuns{logicalLen: 0}
- }
-
- mr := &MergedRuns{inputs: inputs, logicalLen: inputs[0].Len()}
- for i, in := range inputs {
- if in.DataType().ID() != arrow.RUN_END_ENCODED {
- panic("arrow/rle: NewMergedRuns can only be called with RunLengthEncoded arrays")
- }
- if in.Len() != mr.logicalLen {
- panic("arrow/rle: can only merge runs of RLE arrays of the same length")
- }
-
- mr.inputRunEnds[i] = getRunEnds(in.Data().Children()[0])
- // initialize the runIndex at the physical offset - 1 so the first
- // call to Next will increment it to the correct initial offset
- // since the initial state is logicalPos == 0 and mergedEnd == 0
- mr.runIndex[i] = int64(FindPhysicalOffset(in.Data())) - 1
- }
-
- return mr
-}
-
-// Next returns true if there are more values/runs to iterate and false
-// when one of the arrays has reached the end.
-func (mr *MergedRuns) Next() bool {
- mr.logicalPos = int(mr.mergedEnd)
- if mr.isEnd() {
- return false
- }
-
- for i := range mr.inputs {
- if mr.logicalPos == int(mr.runEnds[i]) {
- mr.runIndex[i]++
- }
- }
- mr.findMergedRun()
-
- return true
-}
-
-// IndexIntoBuffer returns the physical index into the value buffer of
-// the passed in array index (ie: 0 for the first array and 1 for the second)
-// this takes into account the offset of the array so it is the true physical
-// index into the value *buffer* in the child.
-func (mr *MergedRuns) IndexIntoBuffer(id int) int64 {
- return mr.runIndex[id] + int64(mr.inputs[id].Data().Children()[1].Offset())
-}
-
-// IndexIntoArray is like IndexIntoBuffer but it doesn't take into account
-// the array offset and instead is the index that can be used with the .Value
-// method on the array to get the correct value.
-func (mr *MergedRuns) IndexIntoArray(id int) int64 { return mr.runIndex[id] }
-
-// RunLength returns the logical length of the current merged run being looked at.
-func (mr *MergedRuns) RunLength() int64 { return mr.mergedEnd - int64(mr.logicalPos) }
-
-// AccumulatedRunLength returns the logical run end of the current merged run.
-func (mr *MergedRuns) AccumulatedRunLength() int64 { return mr.mergedEnd }
-
-func (mr *MergedRuns) findMergedRun() {
- mr.mergedEnd = int64(math.MaxInt64)
- for i, in := range mr.inputs {
- // logical indices of the end of the run we are currently in each input
- mr.runEnds[i] = int64(mr.inputRunEnds[i](mr.runIndex[i]) - int64(in.Data().Offset()))
- // the logical length may end in the middle of a run, in case the array was sliced
- if mr.logicalLen < int(mr.runEnds[i]) {
- mr.runEnds[i] = int64(mr.logicalLen)
- }
- if mr.runEnds[i] < mr.mergedEnd {
- mr.mergedEnd = mr.runEnds[i]
- }
- }
-}
-
-func (mr *MergedRuns) isEnd() bool { return mr.logicalPos == mr.logicalLen }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/endian/big.go b/vendor/github.com/apache/arrow/go/v15/arrow/endian/big.go
deleted file mode 100644
index 0b9258574..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/endian/big.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build s390x
-// +build s390x
-
-package endian
-
-import "encoding/binary"
-
-var Native = binary.BigEndian
-
-const (
- IsBigEndian = true
- NativeEndian = BigEndian
- NonNativeEndian = LittleEndian
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/endian/endian.go b/vendor/github.com/apache/arrow/go/v15/arrow/endian/endian.go
deleted file mode 100644
index d4865025b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/endian/endian.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package endian
-
-import (
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
-)
-
-type Endianness flatbuf.Endianness
-
-const (
- LittleEndian Endianness = Endianness(flatbuf.EndiannessLittle)
- BigEndian Endianness = Endianness(flatbuf.EndiannessBig)
-)
-
-func (e Endianness) String() string {
- switch e {
- case LittleEndian:
- return "little"
- case BigEndian:
- return "big"
- default:
- debug.Assert(false, "wtf? bad endianness value")
- return "???"
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/endian/little.go b/vendor/github.com/apache/arrow/go/v15/arrow/endian/little.go
deleted file mode 100644
index def1fc64b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/endian/little.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !s390x
-// +build !s390x
-
-package endian
-
-import "encoding/binary"
-
-var Native = binary.LittleEndian
-
-const (
- IsBigEndian = false
- NativeEndian = LittleEndian
- NonNativeEndian = BigEndian
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/errors.go b/vendor/github.com/apache/arrow/go/v15/arrow/errors.go
deleted file mode 100644
index 72e6fd8bf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/errors.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import "errors"
-
-var (
- ErrInvalid = errors.New("invalid")
- ErrNotImplemented = errors.New("not implemented")
- ErrType = errors.New("type error")
- ErrKey = errors.New("key error")
- ErrIndex = errors.New("index error")
- ErrNotFound = errors.New("not found")
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/float16/float16.go b/vendor/github.com/apache/arrow/go/v15/arrow/float16/float16.go
deleted file mode 100644
index e0192495e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/float16/float16.go
+++ /dev/null
@@ -1,201 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package float16
-
-import (
- "encoding/binary"
- "math"
- "strconv"
-)
-
-// Num represents a half-precision floating point value (float16)
-// stored on 16 bits.
-//
-// See https://en.wikipedia.org/wiki/Half-precision_floating-point_format for more informations.
-type Num struct {
- bits uint16
-}
-
-var (
- MaxNum = Num{bits: 0b0111101111111111}
- MinNum = MaxNum.Negate()
-)
-
-// New creates a new half-precision floating point value from the provided
-// float32 value.
-func New(f float32) Num {
- b := math.Float32bits(f)
- sn := uint16((b >> 31) & 0x1)
- exp := (b >> 23) & 0xff
- res := int16(exp) - 127 + 15
- fc := uint16(b>>13) & 0x3ff
- switch {
- case exp == 0:
- res = 0
- case exp == 0xff:
- res = 0x1f
- case res > 0x1e:
- res = 0x1f
- fc = 0
- case res < 0x01:
- res = 0
- fc = 0
- }
- return Num{bits: (sn << 15) | uint16(res<<10) | fc}
-}
-
-func (f Num) Float32() float32 {
- sn := uint32((f.bits >> 15) & 0x1)
- exp := (f.bits >> 10) & 0x1f
- res := uint32(exp) + 127 - 15
- fc := uint32(f.bits & 0x3ff)
- switch {
- case exp == 0:
- res = 0
- case exp == 0x1f:
- res = 0xff
- }
- return math.Float32frombits((sn << 31) | (res << 23) | (fc << 13))
-}
-
-func (n Num) Negate() Num {
- return Num{bits: n.bits ^ 0x8000}
-}
-
-func (n Num) Add(rhs Num) Num {
- return New(n.Float32() + rhs.Float32())
-}
-
-func (n Num) Sub(rhs Num) Num {
- return New(n.Float32() - rhs.Float32())
-}
-
-func (n Num) Mul(rhs Num) Num {
- return New(n.Float32() * rhs.Float32())
-}
-
-func (n Num) Div(rhs Num) Num {
- return New(n.Float32() / rhs.Float32())
-}
-
-// Equal returns true if the value represented by n is == other
-func (n Num) Equal(other Num) bool {
- return n.Float32() == other.Float32()
-}
-
-// Greater returns true if the value represented by n is > other
-func (n Num) Greater(other Num) bool {
- return n.Float32() > other.Float32()
-}
-
-// GreaterEqual returns true if the value represented by n is >= other
-func (n Num) GreaterEqual(other Num) bool {
- return n.Float32() >= other.Float32()
-}
-
-// Less returns true if the value represented by n is < other
-func (n Num) Less(other Num) bool {
- return n.Float32() < other.Float32()
-}
-
-// LessEqual returns true if the value represented by n is <= other
-func (n Num) LessEqual(other Num) bool {
- return n.Float32() <= other.Float32()
-}
-
-// Max returns the largest Decimal128 that was passed in the arguments
-func Max(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Greater(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Min returns the smallest Decimal128 that was passed in the arguments
-func Min(first Num, rest ...Num) Num {
- answer := first
- for _, number := range rest {
- if number.Less(answer) {
- answer = number
- }
- }
- return answer
-}
-
-// Cmp compares the numbers represented by n and other and returns:
-//
-// +1 if n > other
-// 0 if n == other
-// -1 if n < other
-func (n Num) Cmp(other Num) int {
- switch {
- case n.Greater(other):
- return 1
- case n.Less(other):
- return -1
- }
- return 0
-}
-
-func (n Num) Abs() Num {
- switch n.Sign() {
- case -1:
- return n.Negate()
- }
- return n
-}
-
-func (n Num) Sign() int {
- if n.IsZero() {
- return 0
- } else if n.Signbit() {
- return -1
- }
- return 1
-}
-
-func (n Num) Signbit() bool { return (n.bits & 0x8000) != 0 }
-
-func (n Num) IsNaN() bool { return (n.bits & 0x7fff) > 0x7c00 }
-
-func (n Num) IsZero() bool { return (n.bits & 0x7fff) == 0 }
-
-func (f Num) Uint16() uint16 { return f.bits }
-func (f Num) String() string { return strconv.FormatFloat(float64(f.Float32()), 'g', -1, 32) }
-
-func Inf() Num { return Num{bits: 0x7c00} }
-
-func NaN() Num { return Num{bits: 0x7fff} }
-
-func FromBits(src uint16) Num { return Num{bits: src} }
-
-func FromLEBytes(src []byte) Num {
- return Num{bits: binary.LittleEndian.Uint16(src)}
-}
-
-func (f Num) PutLEBytes(dst []byte) {
- binary.LittleEndian.PutUint16(dst, f.bits)
-}
-
-func (f Num) ToLEBytes() []byte {
- dst := make([]byte, 2)
- f.PutLEBytes(dst)
- return dst
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_off.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_off.go
deleted file mode 100644
index 52b9a2331..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_off.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !assert
-
-package debug
-
-// Assert will panic with msg if cond is false.
-//
-// msg must be a string, func() string or fmt.Stringer.
-func Assert(cond bool, msg interface{}) {}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_on.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_on.go
deleted file mode 100644
index 2aa5d6ace..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/assert_on.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build assert
-
-package debug
-
-// Assert will panic with msg if cond is false.
-//
-// msg must be a string, func() string or fmt.Stringer.
-func Assert(cond bool, msg interface{}) {
- if !cond {
- panic(getStringValue(msg))
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/doc.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/doc.go
deleted file mode 100644
index 3ee1783ca..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/doc.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
-Package debug provides APIs for conditional runtime assertions and debug logging.
-
-
-Using Assert
-
-To enable runtime assertions, build with the assert tag. When the assert tag is omitted,
-the code for the assertion will be omitted from the binary.
-
-
-Using Log
-
-To enable runtime debug logs, build with the debug tag. When the debug tag is omitted,
-the code for logging will be omitted from the binary.
-*/
-package debug
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_off.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_off.go
deleted file mode 100644
index 48da8e1ee..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_off.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !debug
-
-package debug
-
-func Log(interface{}) {}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_on.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_on.go
deleted file mode 100644
index 99d0c8ae3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/log_on.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build debug
-
-package debug
-
-import (
- "log"
- "os"
-)
-
-var (
- debug = log.New(os.Stderr, "[D] ", log.LstdFlags)
-)
-
-func Log(msg interface{}) {
- debug.Output(1, getStringValue(msg))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/util.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/util.go
deleted file mode 100644
index 7bd3d5389..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/debug/util.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build debug assert
-
-package debug
-
-import "fmt"
-
-func getStringValue(v interface{}) string {
- switch a := v.(type) {
- case func() string:
- return a()
-
- case string:
- return a
-
- case fmt.Stringer:
- return a.String()
-
- default:
- panic(fmt.Sprintf("unexpected type, %t", v))
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/dictutils/dict.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/dictutils/dict.go
deleted file mode 100644
index 5c0bf54da..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/dictutils/dict.go
+++ /dev/null
@@ -1,411 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package dictutils
-
-import (
- "errors"
- "fmt"
- "hash/maphash"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-type Kind int8
-
-const (
- KindNew Kind = iota
- KindDelta
- KindReplacement
-)
-
-type FieldPos struct {
- parent *FieldPos
- index, depth int32
-}
-
-func NewFieldPos() FieldPos { return FieldPos{index: -1} }
-
-func (f *FieldPos) Child(index int32) FieldPos {
- return FieldPos{parent: f, index: index, depth: f.depth + 1}
-}
-
-func (f *FieldPos) Path() []int32 {
- path := make([]int32, f.depth)
- cur := f
- for i := f.depth - 1; i >= 0; i-- {
- path[i] = int32(cur.index)
- cur = cur.parent
- }
- return path
-}
-
-type Mapper struct {
- pathToID map[uint64]int64
- hasher maphash.Hash
-}
-
-func (d *Mapper) NumDicts() int {
- unique := make(map[int64]bool)
- for _, id := range d.pathToID {
- unique[id] = true
- }
- return len(unique)
-}
-
-func (d *Mapper) AddField(id int64, fieldPath []int32) error {
- d.hasher.Write(arrow.Int32Traits.CastToBytes(fieldPath))
- defer d.hasher.Reset()
-
- sum := d.hasher.Sum64()
- if _, ok := d.pathToID[sum]; ok {
- return errors.New("field already mapped to id")
- }
-
- d.pathToID[sum] = id
- return nil
-}
-
-func (d *Mapper) GetFieldID(fieldPath []int32) (int64, error) {
- d.hasher.Write(arrow.Int32Traits.CastToBytes(fieldPath))
- defer d.hasher.Reset()
-
- id, ok := d.pathToID[d.hasher.Sum64()]
- if !ok {
- return -1, errors.New("arrow/ipc: dictionary field not found")
- }
- return id, nil
-}
-
-func (d *Mapper) NumFields() int {
- return len(d.pathToID)
-}
-
-func (d *Mapper) InsertPath(pos FieldPos) {
- id := len(d.pathToID)
- d.hasher.Write(arrow.Int32Traits.CastToBytes(pos.Path()))
-
- d.pathToID[d.hasher.Sum64()] = int64(id)
- d.hasher.Reset()
-}
-
-func (d *Mapper) ImportField(pos FieldPos, field arrow.Field) {
- dt := field.Type
- if dt.ID() == arrow.EXTENSION {
- dt = dt.(arrow.ExtensionType).StorageType()
- }
-
- if dt.ID() == arrow.DICTIONARY {
- d.InsertPath(pos)
- // import nested dicts
- if nested, ok := dt.(*arrow.DictionaryType).ValueType.(arrow.NestedType); ok {
- d.ImportFields(pos, nested.Fields())
- }
- return
- }
-
- if nested, ok := dt.(arrow.NestedType); ok {
- d.ImportFields(pos, nested.Fields())
- }
-}
-
-func (d *Mapper) ImportFields(pos FieldPos, fields []arrow.Field) {
- for i := range fields {
- d.ImportField(pos.Child(int32(i)), fields[i])
- }
-}
-
-func (d *Mapper) ImportSchema(schema *arrow.Schema) {
- d.pathToID = make(map[uint64]int64)
- // This code path intentionally avoids calling ImportFields with
- // schema.Fields to avoid allocations.
- pos := NewFieldPos()
- for i := 0; i < schema.NumFields(); i++ {
- d.ImportField(pos.Child(int32(i)), schema.Field(i))
- }
-}
-
-func hasUnresolvedNestedDict(data arrow.ArrayData) bool {
- d := data.(*array.Data)
- if d.DataType().ID() == arrow.DICTIONARY {
- if d.Dictionary().(*array.Data) == nil {
- return true
- }
- if hasUnresolvedNestedDict(d.Dictionary()) {
- return true
- }
- }
- for _, c := range d.Children() {
- if hasUnresolvedNestedDict(c) {
- return true
- }
- }
- return false
-}
-
-type dictpair struct {
- ID int64
- Dict arrow.Array
-}
-
-type dictCollector struct {
- dictionaries []dictpair
- mapper *Mapper
-}
-
-func (d *dictCollector) visitChildren(pos FieldPos, typ arrow.DataType, arr arrow.Array) error {
- for i, c := range arr.Data().Children() {
- child := array.MakeFromData(c)
- defer child.Release()
- if err := d.visit(pos.Child(int32(i)), child); err != nil {
- return err
- }
- }
- return nil
-}
-
-func (d *dictCollector) visit(pos FieldPos, arr arrow.Array) error {
- dt := arr.DataType()
- if dt.ID() == arrow.EXTENSION {
- dt = dt.(arrow.ExtensionType).StorageType()
- arr = arr.(array.ExtensionArray).Storage()
- }
-
- if dt.ID() == arrow.DICTIONARY {
- dictarr := arr.(*array.Dictionary)
- dict := dictarr.Dictionary()
-
- // traverse the dictionary to first gather any nested dictionaries
- // so they appear in the output before their respective parents
- dictType := dt.(*arrow.DictionaryType)
- d.visitChildren(pos, dictType.ValueType, dict)
-
- id, err := d.mapper.GetFieldID(pos.Path())
- if err != nil {
- return err
- }
- dict.Retain()
- d.dictionaries = append(d.dictionaries, dictpair{ID: id, Dict: dict})
- return nil
- }
- return d.visitChildren(pos, dt, arr)
-}
-
-func (d *dictCollector) collect(batch arrow.Record) error {
- var (
- pos = NewFieldPos()
- schema = batch.Schema()
- )
- d.dictionaries = make([]dictpair, 0, d.mapper.NumFields())
- for i := range schema.Fields() {
- if err := d.visit(pos.Child(int32(i)), batch.Column(i)); err != nil {
- return err
- }
- }
- return nil
-}
-
-type dictMap map[int64][]arrow.ArrayData
-type dictTypeMap map[int64]arrow.DataType
-
-type Memo struct {
- Mapper Mapper
- dict2id map[arrow.ArrayData]int64
-
- id2type dictTypeMap
- id2dict dictMap // map of dictionary ID to dictionary array
-}
-
-func NewMemo() Memo {
- return Memo{
- dict2id: make(map[arrow.ArrayData]int64),
- id2dict: make(dictMap),
- id2type: make(dictTypeMap),
- Mapper: Mapper{
- pathToID: make(map[uint64]int64),
- },
- }
-}
-
-func (memo *Memo) Len() int { return len(memo.id2dict) }
-
-func (memo *Memo) Clear() {
- for id, v := range memo.id2dict {
- delete(memo.id2dict, id)
- for _, d := range v {
- delete(memo.dict2id, d)
- d.Release()
- }
- }
-}
-
-func (memo *Memo) reify(id int64, mem memory.Allocator) (arrow.ArrayData, error) {
- v, ok := memo.id2dict[id]
- if !ok {
- return nil, fmt.Errorf("arrow/ipc: no dictionaries found for id=%d", id)
- }
-
- if len(v) == 1 {
- return v[0], nil
- }
-
- // there are deltas we need to concatenate them with the first dictionary
- toCombine := make([]arrow.Array, 0, len(v))
- // NOTE: at this point the dictionary data may not be trusted. it needs to
- // be validated as concatenation can crash on invalid or corrupted data.
- for _, data := range v {
- if hasUnresolvedNestedDict(data) {
- return nil, fmt.Errorf("arrow/ipc: delta dict with unresolved nested dictionary not implemented")
- }
- arr := array.MakeFromData(data)
- defer arr.Release()
-
- toCombine = append(toCombine, arr)
- defer data.Release()
- }
-
- combined, err := array.Concatenate(toCombine, mem)
- if err != nil {
- return nil, err
- }
- defer combined.Release()
- combined.Data().Retain()
-
- memo.id2dict[id] = []arrow.ArrayData{combined.Data()}
- return combined.Data(), nil
-}
-
-func (memo *Memo) Dict(id int64, mem memory.Allocator) (arrow.ArrayData, error) {
- return memo.reify(id, mem)
-}
-
-func (memo *Memo) AddType(id int64, typ arrow.DataType) error {
- if existing, dup := memo.id2type[id]; dup && !arrow.TypeEqual(existing, typ) {
- return fmt.Errorf("arrow/ipc: conflicting dictionary types for id %d", id)
- }
-
- memo.id2type[id] = typ
- return nil
-}
-
-func (memo *Memo) Type(id int64) (arrow.DataType, bool) {
- t, ok := memo.id2type[id]
- return t, ok
-}
-
-// func (memo *dictMemo) ID(v arrow.Array) int64 {
-// id, ok := memo.dict2id[v]
-// if ok {
-// return id
-// }
-
-// v.Retain()
-// id = int64(len(memo.dict2id))
-// memo.dict2id[v] = id
-// memo.id2dict[id] = v
-// return id
-// }
-
-func (memo Memo) HasDict(v arrow.ArrayData) bool {
- _, ok := memo.dict2id[v]
- return ok
-}
-
-func (memo Memo) HasID(id int64) bool {
- _, ok := memo.id2dict[id]
- return ok
-}
-
-func (memo *Memo) Add(id int64, v arrow.ArrayData) {
- if _, dup := memo.id2dict[id]; dup {
- panic(fmt.Errorf("arrow/ipc: duplicate id=%d", id))
- }
- v.Retain()
- memo.id2dict[id] = []arrow.ArrayData{v}
- memo.dict2id[v] = id
-}
-
-func (memo *Memo) AddDelta(id int64, v arrow.ArrayData) {
- d, ok := memo.id2dict[id]
- if !ok {
- panic(fmt.Errorf("arrow/ipc: adding delta to non-existing id=%d", id))
- }
- v.Retain()
- memo.id2dict[id] = append(d, v)
-}
-
-// AddOrReplace puts the provided dictionary into the memo table. If it
-// already exists, then the new data will replace it. Otherwise it is added
-// to the memo table.
-func (memo *Memo) AddOrReplace(id int64, v arrow.ArrayData) bool {
- d, ok := memo.id2dict[id]
- if ok {
- // replace the dictionary and release any existing ones
- for _, dict := range d {
- dict.Release()
- }
- d[0] = v
- d = d[:1]
- } else {
- d = []arrow.ArrayData{v}
- }
- v.Retain()
- memo.id2dict[id] = d
- return !ok
-}
-
-func CollectDictionaries(batch arrow.Record, mapper *Mapper) (out []dictpair, err error) {
- collector := dictCollector{mapper: mapper}
- err = collector.collect(batch)
- out = collector.dictionaries
- return
-}
-
-func ResolveFieldDict(memo *Memo, data arrow.ArrayData, pos FieldPos, mem memory.Allocator) error {
- typ := data.DataType()
- if typ.ID() == arrow.EXTENSION {
- typ = typ.(arrow.ExtensionType).StorageType()
- }
- if typ.ID() == arrow.DICTIONARY {
- id, err := memo.Mapper.GetFieldID(pos.Path())
- if err != nil {
- return err
- }
- dictData, err := memo.Dict(id, mem)
- if err != nil {
- return err
- }
- data.(*array.Data).SetDictionary(dictData)
- if err := ResolveFieldDict(memo, dictData, pos, mem); err != nil {
- return err
- }
- }
- return ResolveDictionaries(memo, data.Children(), pos, mem)
-}
-
-func ResolveDictionaries(memo *Memo, cols []arrow.ArrayData, parentPos FieldPos, mem memory.Allocator) error {
- for i, c := range cols {
- if c == nil {
- continue
- }
- if err := ResolveFieldDict(memo, c, parentPos.Child(int32(i)), mem); err != nil {
- return err
- }
- }
- return nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Binary.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Binary.go
deleted file mode 100644
index e8018e74c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Binary.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Opaque binary data
-type Binary struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsBinary(buf []byte, offset flatbuffers.UOffsetT) *Binary {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Binary{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Binary) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Binary) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func BinaryStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func BinaryEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BinaryView.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BinaryView.go
deleted file mode 100644
index 09ca5e7db..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BinaryView.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Logically the same as Binary, but the internal representation uses a view
-/// struct that contains the string length and either the string's entire data
-/// inline (for small strings) or an inlined prefix, an index of another buffer,
-/// and an offset pointing to a slice in that buffer (for non-small strings).
-///
-/// Since it uses a variable number of data buffers, each Field with this type
-/// must have a corresponding entry in `variadicBufferCounts`.
-type BinaryView struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsBinaryView(buf []byte, offset flatbuffers.UOffsetT) *BinaryView {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &BinaryView{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *BinaryView) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *BinaryView) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func BinaryViewStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func BinaryViewEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Block.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Block.go
deleted file mode 100644
index 57a697b19..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Block.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Block struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *Block) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Block) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-/// Index to the start of the RecordBlock (note this is past the Message header)
-func (rcv *Block) Offset() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-/// Index to the start of the RecordBlock (note this is past the Message header)
-func (rcv *Block) MutateOffset(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-/// Length of the metadata
-func (rcv *Block) MetaDataLength() int32 {
- return rcv._tab.GetInt32(rcv._tab.Pos + flatbuffers.UOffsetT(8))
-}
-/// Length of the metadata
-func (rcv *Block) MutateMetaDataLength(n int32) bool {
- return rcv._tab.MutateInt32(rcv._tab.Pos+flatbuffers.UOffsetT(8), n)
-}
-
-/// Length of the data (this is aligned so there can be a gap between this and
-/// the metadata).
-func (rcv *Block) BodyLength() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(16))
-}
-/// Length of the data (this is aligned so there can be a gap between this and
-/// the metadata).
-func (rcv *Block) MutateBodyLength(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(16), n)
-}
-
-func CreateBlock(builder *flatbuffers.Builder, offset int64, metaDataLength int32, bodyLength int64) flatbuffers.UOffsetT {
- builder.Prep(8, 24)
- builder.PrependInt64(bodyLength)
- builder.Pad(4)
- builder.PrependInt32(metaDataLength)
- builder.PrependInt64(offset)
- return builder.Offset()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompression.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompression.go
deleted file mode 100644
index 6468e2313..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompression.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Optional compression for the memory buffers constituting IPC message
-/// bodies. Intended for use with RecordBatch but could be used for other
-/// message types
-type BodyCompression struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsBodyCompression(buf []byte, offset flatbuffers.UOffsetT) *BodyCompression {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &BodyCompression{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *BodyCompression) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *BodyCompression) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Compressor library.
-/// For LZ4_FRAME, each compressed buffer must consist of a single frame.
-func (rcv *BodyCompression) Codec() CompressionType {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return CompressionType(rcv._tab.GetInt8(o + rcv._tab.Pos))
- }
- return 0
-}
-
-/// Compressor library.
-/// For LZ4_FRAME, each compressed buffer must consist of a single frame.
-func (rcv *BodyCompression) MutateCodec(n CompressionType) bool {
- return rcv._tab.MutateInt8Slot(4, int8(n))
-}
-
-/// Indicates the way the record batch body was compressed
-func (rcv *BodyCompression) Method() BodyCompressionMethod {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return BodyCompressionMethod(rcv._tab.GetInt8(o + rcv._tab.Pos))
- }
- return 0
-}
-
-/// Indicates the way the record batch body was compressed
-func (rcv *BodyCompression) MutateMethod(n BodyCompressionMethod) bool {
- return rcv._tab.MutateInt8Slot(6, int8(n))
-}
-
-func BodyCompressionStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func BodyCompressionAddCodec(builder *flatbuffers.Builder, codec CompressionType) {
- builder.PrependInt8Slot(0, int8(codec), 0)
-}
-func BodyCompressionAddMethod(builder *flatbuffers.Builder, method BodyCompressionMethod) {
- builder.PrependInt8Slot(1, int8(method), 0)
-}
-func BodyCompressionEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompressionMethod.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompressionMethod.go
deleted file mode 100644
index 108ab3e07..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/BodyCompressionMethod.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// Provided for forward compatibility in case we need to support different
-/// strategies for compressing the IPC message body (like whole-body
-/// compression rather than buffer-level) in the future
-type BodyCompressionMethod int8
-
-const (
- /// Each constituent buffer is first compressed with the indicated
- /// compressor, and then written with the uncompressed length in the first 8
- /// bytes as a 64-bit little-endian signed integer followed by the compressed
- /// buffer bytes (and then padding as required by the protocol). The
- /// uncompressed length may be set to -1 to indicate that the data that
- /// follows is not compressed, which can be useful for cases where
- /// compression does not yield appreciable savings.
- BodyCompressionMethodBUFFER BodyCompressionMethod = 0
-)
-
-var EnumNamesBodyCompressionMethod = map[BodyCompressionMethod]string{
- BodyCompressionMethodBUFFER: "BUFFER",
-}
-
-var EnumValuesBodyCompressionMethod = map[string]BodyCompressionMethod{
- "BUFFER": BodyCompressionMethodBUFFER,
-}
-
-func (v BodyCompressionMethod) String() string {
- if s, ok := EnumNamesBodyCompressionMethod[v]; ok {
- return s
- }
- return "BodyCompressionMethod(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Bool.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Bool.go
deleted file mode 100644
index 6a4a9d268..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Bool.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Bool struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsBool(buf []byte, offset flatbuffers.UOffsetT) *Bool {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Bool{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Bool) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Bool) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func BoolStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func BoolEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Buffer.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Buffer.go
deleted file mode 100644
index eba8d99b2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Buffer.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// A Buffer represents a single contiguous memory segment
-type Buffer struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *Buffer) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Buffer) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-/// The relative offset into the shared memory page where the bytes for this
-/// buffer starts
-func (rcv *Buffer) Offset() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-/// The relative offset into the shared memory page where the bytes for this
-/// buffer starts
-func (rcv *Buffer) MutateOffset(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-/// The absolute length (in bytes) of the memory buffer. The memory is found
-/// from offset (inclusive) to offset + length (non-inclusive). When building
-/// messages using the encapsulated IPC message, padding bytes may be written
-/// after a buffer, but such padding bytes do not need to be accounted for in
-/// the size here.
-func (rcv *Buffer) Length() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(8))
-}
-/// The absolute length (in bytes) of the memory buffer. The memory is found
-/// from offset (inclusive) to offset + length (non-inclusive). When building
-/// messages using the encapsulated IPC message, padding bytes may be written
-/// after a buffer, but such padding bytes do not need to be accounted for in
-/// the size here.
-func (rcv *Buffer) MutateLength(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(8), n)
-}
-
-func CreateBuffer(builder *flatbuffers.Builder, offset int64, length int64) flatbuffers.UOffsetT {
- builder.Prep(8, 16)
- builder.PrependInt64(length)
- builder.PrependInt64(offset)
- return builder.Offset()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/CompressionType.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/CompressionType.go
deleted file mode 100644
index 96e9df072..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/CompressionType.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type CompressionType int8
-
-const (
- CompressionTypeLZ4_FRAME CompressionType = 0
- CompressionTypeZSTD CompressionType = 1
-)
-
-var EnumNamesCompressionType = map[CompressionType]string{
- CompressionTypeLZ4_FRAME: "LZ4_FRAME",
- CompressionTypeZSTD: "ZSTD",
-}
-
-var EnumValuesCompressionType = map[string]CompressionType{
- "LZ4_FRAME": CompressionTypeLZ4_FRAME,
- "ZSTD": CompressionTypeZSTD,
-}
-
-func (v CompressionType) String() string {
- if s, ok := EnumNamesCompressionType[v]; ok {
- return s
- }
- return "CompressionType(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Date.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Date.go
deleted file mode 100644
index 32983ec54..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Date.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Date is either a 32-bit or 64-bit signed integer type representing an
-/// elapsed time since UNIX epoch (1970-01-01), stored in either of two units:
-///
-/// * Milliseconds (64 bits) indicating UNIX time elapsed since the epoch (no
-/// leap seconds), where the values are evenly divisible by 86400000
-/// * Days (32 bits) since the UNIX epoch
-type Date struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsDate(buf []byte, offset flatbuffers.UOffsetT) *Date {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Date{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Date) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Date) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Date) Unit() DateUnit {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return DateUnit(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 1
-}
-
-func (rcv *Date) MutateUnit(n DateUnit) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func DateStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func DateAddUnit(builder *flatbuffers.Builder, unit DateUnit) {
- builder.PrependInt16Slot(0, int16(unit), 1)
-}
-func DateEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DateUnit.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DateUnit.go
deleted file mode 100644
index 8a12eec17..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DateUnit.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type DateUnit int16
-
-const (
- DateUnitDAY DateUnit = 0
- DateUnitMILLISECOND DateUnit = 1
-)
-
-var EnumNamesDateUnit = map[DateUnit]string{
- DateUnitDAY: "DAY",
- DateUnitMILLISECOND: "MILLISECOND",
-}
-
-var EnumValuesDateUnit = map[string]DateUnit{
- "DAY": DateUnitDAY,
- "MILLISECOND": DateUnitMILLISECOND,
-}
-
-func (v DateUnit) String() string {
- if s, ok := EnumNamesDateUnit[v]; ok {
- return s
- }
- return "DateUnit(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Decimal.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Decimal.go
deleted file mode 100644
index c9de254d1..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Decimal.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Exact decimal value represented as an integer value in two's
-/// complement. Currently only 128-bit (16-byte) and 256-bit (32-byte) integers
-/// are used. The representation uses the endianness indicated
-/// in the Schema.
-type Decimal struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsDecimal(buf []byte, offset flatbuffers.UOffsetT) *Decimal {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Decimal{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Decimal) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Decimal) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Total number of decimal digits
-func (rcv *Decimal) Precision() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// Total number of decimal digits
-func (rcv *Decimal) MutatePrecision(n int32) bool {
- return rcv._tab.MutateInt32Slot(4, n)
-}
-
-/// Number of digits after the decimal point "."
-func (rcv *Decimal) Scale() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// Number of digits after the decimal point "."
-func (rcv *Decimal) MutateScale(n int32) bool {
- return rcv._tab.MutateInt32Slot(6, n)
-}
-
-/// Number of bits per value. The only accepted widths are 128 and 256.
-/// We use bitWidth for consistency with Int::bitWidth.
-func (rcv *Decimal) BitWidth() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 128
-}
-
-/// Number of bits per value. The only accepted widths are 128 and 256.
-/// We use bitWidth for consistency with Int::bitWidth.
-func (rcv *Decimal) MutateBitWidth(n int32) bool {
- return rcv._tab.MutateInt32Slot(8, n)
-}
-
-func DecimalStart(builder *flatbuffers.Builder) {
- builder.StartObject(3)
-}
-func DecimalAddPrecision(builder *flatbuffers.Builder, precision int32) {
- builder.PrependInt32Slot(0, precision, 0)
-}
-func DecimalAddScale(builder *flatbuffers.Builder, scale int32) {
- builder.PrependInt32Slot(1, scale, 0)
-}
-func DecimalAddBitWidth(builder *flatbuffers.Builder, bitWidth int32) {
- builder.PrependInt32Slot(2, bitWidth, 128)
-}
-func DecimalEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryBatch.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryBatch.go
deleted file mode 100644
index 25b5384e4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryBatch.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// For sending dictionary encoding information. Any Field can be
-/// dictionary-encoded, but in this case none of its children may be
-/// dictionary-encoded.
-/// There is one vector / column per dictionary, but that vector / column
-/// may be spread across multiple dictionary batches by using the isDelta
-/// flag
-type DictionaryBatch struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsDictionaryBatch(buf []byte, offset flatbuffers.UOffsetT) *DictionaryBatch {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &DictionaryBatch{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *DictionaryBatch) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *DictionaryBatch) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *DictionaryBatch) Id() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *DictionaryBatch) MutateId(n int64) bool {
- return rcv._tab.MutateInt64Slot(4, n)
-}
-
-func (rcv *DictionaryBatch) Data(obj *RecordBatch) *RecordBatch {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(RecordBatch)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// If isDelta is true the values in the dictionary are to be appended to a
-/// dictionary with the indicated id. If isDelta is false this dictionary
-/// should replace the existing dictionary.
-func (rcv *DictionaryBatch) IsDelta() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-/// If isDelta is true the values in the dictionary are to be appended to a
-/// dictionary with the indicated id. If isDelta is false this dictionary
-/// should replace the existing dictionary.
-func (rcv *DictionaryBatch) MutateIsDelta(n bool) bool {
- return rcv._tab.MutateBoolSlot(8, n)
-}
-
-func DictionaryBatchStart(builder *flatbuffers.Builder) {
- builder.StartObject(3)
-}
-func DictionaryBatchAddId(builder *flatbuffers.Builder, id int64) {
- builder.PrependInt64Slot(0, id, 0)
-}
-func DictionaryBatchAddData(builder *flatbuffers.Builder, data flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(data), 0)
-}
-func DictionaryBatchAddIsDelta(builder *flatbuffers.Builder, isDelta bool) {
- builder.PrependBoolSlot(2, isDelta, false)
-}
-func DictionaryBatchEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryEncoding.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryEncoding.go
deleted file mode 100644
index a9b09530b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryEncoding.go
+++ /dev/null
@@ -1,135 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type DictionaryEncoding struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsDictionaryEncoding(buf []byte, offset flatbuffers.UOffsetT) *DictionaryEncoding {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &DictionaryEncoding{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *DictionaryEncoding) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *DictionaryEncoding) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// The known dictionary id in the application where this data is used. In
-/// the file or streaming formats, the dictionary ids are found in the
-/// DictionaryBatch messages
-func (rcv *DictionaryEncoding) Id() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// The known dictionary id in the application where this data is used. In
-/// the file or streaming formats, the dictionary ids are found in the
-/// DictionaryBatch messages
-func (rcv *DictionaryEncoding) MutateId(n int64) bool {
- return rcv._tab.MutateInt64Slot(4, n)
-}
-
-/// The dictionary indices are constrained to be non-negative integers. If
-/// this field is null, the indices must be signed int32. To maximize
-/// cross-language compatibility and performance, implementations are
-/// recommended to prefer signed integer types over unsigned integer types
-/// and to avoid uint64 indices unless they are required by an application.
-func (rcv *DictionaryEncoding) IndexType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The dictionary indices are constrained to be non-negative integers. If
-/// this field is null, the indices must be signed int32. To maximize
-/// cross-language compatibility and performance, implementations are
-/// recommended to prefer signed integer types over unsigned integer types
-/// and to avoid uint64 indices unless they are required by an application.
-/// By default, dictionaries are not ordered, or the order does not have
-/// semantic meaning. In some statistical, applications, dictionary-encoding
-/// is used to represent ordered categorical data, and we provide a way to
-/// preserve that metadata here
-func (rcv *DictionaryEncoding) IsOrdered() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-/// By default, dictionaries are not ordered, or the order does not have
-/// semantic meaning. In some statistical, applications, dictionary-encoding
-/// is used to represent ordered categorical data, and we provide a way to
-/// preserve that metadata here
-func (rcv *DictionaryEncoding) MutateIsOrdered(n bool) bool {
- return rcv._tab.MutateBoolSlot(8, n)
-}
-
-func (rcv *DictionaryEncoding) DictionaryKind() DictionaryKind {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return DictionaryKind(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *DictionaryEncoding) MutateDictionaryKind(n DictionaryKind) bool {
- return rcv._tab.MutateInt16Slot(10, int16(n))
-}
-
-func DictionaryEncodingStart(builder *flatbuffers.Builder) {
- builder.StartObject(4)
-}
-func DictionaryEncodingAddId(builder *flatbuffers.Builder, id int64) {
- builder.PrependInt64Slot(0, id, 0)
-}
-func DictionaryEncodingAddIndexType(builder *flatbuffers.Builder, indexType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(indexType), 0)
-}
-func DictionaryEncodingAddIsOrdered(builder *flatbuffers.Builder, isOrdered bool) {
- builder.PrependBoolSlot(2, isOrdered, false)
-}
-func DictionaryEncodingAddDictionaryKind(builder *flatbuffers.Builder, dictionaryKind DictionaryKind) {
- builder.PrependInt16Slot(3, int16(dictionaryKind), 0)
-}
-func DictionaryEncodingEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryKind.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryKind.go
deleted file mode 100644
index 126ba5f7f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/DictionaryKind.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// ----------------------------------------------------------------------
-/// Dictionary encoding metadata
-/// Maintained for forwards compatibility, in the future
-/// Dictionaries might be explicit maps between integers and values
-/// allowing for non-contiguous index values
-type DictionaryKind int16
-
-const (
- DictionaryKindDenseArray DictionaryKind = 0
-)
-
-var EnumNamesDictionaryKind = map[DictionaryKind]string{
- DictionaryKindDenseArray: "DenseArray",
-}
-
-var EnumValuesDictionaryKind = map[string]DictionaryKind{
- "DenseArray": DictionaryKindDenseArray,
-}
-
-func (v DictionaryKind) String() string {
- if s, ok := EnumNamesDictionaryKind[v]; ok {
- return s
- }
- return "DictionaryKind(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Duration.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Duration.go
deleted file mode 100644
index 57b7b2a03..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Duration.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Duration struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsDuration(buf []byte, offset flatbuffers.UOffsetT) *Duration {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Duration{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Duration) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Duration) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Duration) Unit() TimeUnit {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return TimeUnit(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 1
-}
-
-func (rcv *Duration) MutateUnit(n TimeUnit) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func DurationStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func DurationAddUnit(builder *flatbuffers.Builder, unit TimeUnit) {
- builder.PrependInt16Slot(0, int16(unit), 1)
-}
-func DurationEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Endianness.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Endianness.go
deleted file mode 100644
index cefa2ff9c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Endianness.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// ----------------------------------------------------------------------
-/// Endianness of the platform producing the data
-type Endianness int16
-
-const (
- EndiannessLittle Endianness = 0
- EndiannessBig Endianness = 1
-)
-
-var EnumNamesEndianness = map[Endianness]string{
- EndiannessLittle: "Little",
- EndiannessBig: "Big",
-}
-
-var EnumValuesEndianness = map[string]Endianness{
- "Little": EndiannessLittle,
- "Big": EndiannessBig,
-}
-
-func (v Endianness) String() string {
- if s, ok := EnumNamesEndianness[v]; ok {
- return s
- }
- return "Endianness(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Feature.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Feature.go
deleted file mode 100644
index ae5a0398b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Feature.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// Represents Arrow Features that might not have full support
-/// within implementations. This is intended to be used in
-/// two scenarios:
-/// 1. A mechanism for readers of Arrow Streams
-/// and files to understand that the stream or file makes
-/// use of a feature that isn't supported or unknown to
-/// the implementation (and therefore can meet the Arrow
-/// forward compatibility guarantees).
-/// 2. A means of negotiating between a client and server
-/// what features a stream is allowed to use. The enums
-/// values here are intented to represent higher level
-/// features, additional details maybe negotiated
-/// with key-value pairs specific to the protocol.
-///
-/// Enums added to this list should be assigned power-of-two values
-/// to facilitate exchanging and comparing bitmaps for supported
-/// features.
-type Feature int64
-
-const (
- /// Needed to make flatbuffers happy.
- FeatureUNUSED Feature = 0
- /// The stream makes use of multiple full dictionaries with the
- /// same ID and assumes clients implement dictionary replacement
- /// correctly.
- FeatureDICTIONARY_REPLACEMENT Feature = 1
- /// The stream makes use of compressed bodies as described
- /// in Message.fbs.
- FeatureCOMPRESSED_BODY Feature = 2
-)
-
-var EnumNamesFeature = map[Feature]string{
- FeatureUNUSED: "UNUSED",
- FeatureDICTIONARY_REPLACEMENT: "DICTIONARY_REPLACEMENT",
- FeatureCOMPRESSED_BODY: "COMPRESSED_BODY",
-}
-
-var EnumValuesFeature = map[string]Feature{
- "UNUSED": FeatureUNUSED,
- "DICTIONARY_REPLACEMENT": FeatureDICTIONARY_REPLACEMENT,
- "COMPRESSED_BODY": FeatureCOMPRESSED_BODY,
-}
-
-func (v Feature) String() string {
- if s, ok := EnumNamesFeature[v]; ok {
- return s
- }
- return "Feature(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Field.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Field.go
deleted file mode 100644
index c03cf2f87..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Field.go
+++ /dev/null
@@ -1,188 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// A field represents a named column in a record / row batch or child of a
-/// nested type.
-type Field struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsField(buf []byte, offset flatbuffers.UOffsetT) *Field {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Field{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Field) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Field) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Name is not required, in i.e. a List
-func (rcv *Field) Name() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-/// Name is not required, in i.e. a List
-/// Whether or not this field can contain nulls. Should be true in general.
-func (rcv *Field) Nullable() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-/// Whether or not this field can contain nulls. Should be true in general.
-func (rcv *Field) MutateNullable(n bool) bool {
- return rcv._tab.MutateBoolSlot(6, n)
-}
-
-func (rcv *Field) TypeType() Type {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return Type(rcv._tab.GetByte(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Field) MutateTypeType(n Type) bool {
- return rcv._tab.MutateByteSlot(8, byte(n))
-}
-
-/// This is the type of the decoded value if the field is dictionary encoded.
-func (rcv *Field) Type(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-/// This is the type of the decoded value if the field is dictionary encoded.
-/// Present only if the field is dictionary encoded.
-func (rcv *Field) Dictionary(obj *DictionaryEncoding) *DictionaryEncoding {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(DictionaryEncoding)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// Present only if the field is dictionary encoded.
-/// children apply only to nested data types like Struct, List and Union. For
-/// primitive types children will have length 0.
-func (rcv *Field) Children(obj *Field, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Field) ChildrenLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// children apply only to nested data types like Struct, List and Union. For
-/// primitive types children will have length 0.
-/// User-defined metadata
-func (rcv *Field) CustomMetadata(obj *KeyValue, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Field) CustomMetadataLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// User-defined metadata
-func FieldStart(builder *flatbuffers.Builder) {
- builder.StartObject(7)
-}
-func FieldAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(name), 0)
-}
-func FieldAddNullable(builder *flatbuffers.Builder, nullable bool) {
- builder.PrependBoolSlot(1, nullable, false)
-}
-func FieldAddTypeType(builder *flatbuffers.Builder, typeType Type) {
- builder.PrependByteSlot(2, byte(typeType), 0)
-}
-func FieldAddType(builder *flatbuffers.Builder, type_ flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(type_), 0)
-}
-func FieldAddDictionary(builder *flatbuffers.Builder, dictionary flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(dictionary), 0)
-}
-func FieldAddChildren(builder *flatbuffers.Builder, children flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(5, flatbuffers.UOffsetT(children), 0)
-}
-func FieldStartChildrenVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func FieldAddCustomMetadata(builder *flatbuffers.Builder, customMetadata flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(6, flatbuffers.UOffsetT(customMetadata), 0)
-}
-func FieldStartCustomMetadataVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func FieldEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FieldNode.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FieldNode.go
deleted file mode 100644
index 606b30bfe..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FieldNode.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// Data structures for describing a table row batch (a collection of
-/// equal-length Arrow arrays)
-/// Metadata about a field at some level of a nested type tree (but not
-/// its children).
-///
-/// For example, a List<Int16> with values `[[1, 2, 3], null, [4], [5, 6], null]`
-/// would have {length: 5, null_count: 2} for its List node, and {length: 6,
-/// null_count: 0} for its Int16 node, as separate FieldNode structs
-type FieldNode struct {
- _tab flatbuffers.Struct
-}
-
-func (rcv *FieldNode) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *FieldNode) Table() flatbuffers.Table {
- return rcv._tab.Table
-}
-
-/// The number of value slots in the Arrow array at this level of a nested
-/// tree
-func (rcv *FieldNode) Length() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(0))
-}
-/// The number of value slots in the Arrow array at this level of a nested
-/// tree
-func (rcv *FieldNode) MutateLength(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(0), n)
-}
-
-/// The number of observed nulls. Fields with null_count == 0 may choose not
-/// to write their physical validity bitmap out as a materialized buffer,
-/// instead setting the length of the bitmap buffer to 0.
-func (rcv *FieldNode) NullCount() int64 {
- return rcv._tab.GetInt64(rcv._tab.Pos + flatbuffers.UOffsetT(8))
-}
-/// The number of observed nulls. Fields with null_count == 0 may choose not
-/// to write their physical validity bitmap out as a materialized buffer,
-/// instead setting the length of the bitmap buffer to 0.
-func (rcv *FieldNode) MutateNullCount(n int64) bool {
- return rcv._tab.MutateInt64(rcv._tab.Pos+flatbuffers.UOffsetT(8), n)
-}
-
-func CreateFieldNode(builder *flatbuffers.Builder, length int64, nullCount int64) flatbuffers.UOffsetT {
- builder.Prep(8, 16)
- builder.PrependInt64(nullCount)
- builder.PrependInt64(length)
- return builder.Offset()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeBinary.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeBinary.go
deleted file mode 100644
index 4e660d507..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeBinary.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type FixedSizeBinary struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsFixedSizeBinary(buf []byte, offset flatbuffers.UOffsetT) *FixedSizeBinary {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &FixedSizeBinary{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *FixedSizeBinary) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *FixedSizeBinary) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Number of bytes per value
-func (rcv *FixedSizeBinary) ByteWidth() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// Number of bytes per value
-func (rcv *FixedSizeBinary) MutateByteWidth(n int32) bool {
- return rcv._tab.MutateInt32Slot(4, n)
-}
-
-func FixedSizeBinaryStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func FixedSizeBinaryAddByteWidth(builder *flatbuffers.Builder, byteWidth int32) {
- builder.PrependInt32Slot(0, byteWidth, 0)
-}
-func FixedSizeBinaryEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeList.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeList.go
deleted file mode 100644
index dabf5cc85..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FixedSizeList.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type FixedSizeList struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsFixedSizeList(buf []byte, offset flatbuffers.UOffsetT) *FixedSizeList {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &FixedSizeList{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *FixedSizeList) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *FixedSizeList) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Number of list items per value
-func (rcv *FixedSizeList) ListSize() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// Number of list items per value
-func (rcv *FixedSizeList) MutateListSize(n int32) bool {
- return rcv._tab.MutateInt32Slot(4, n)
-}
-
-func FixedSizeListStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func FixedSizeListAddListSize(builder *flatbuffers.Builder, listSize int32) {
- builder.PrependInt32Slot(0, listSize, 0)
-}
-func FixedSizeListEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FloatingPoint.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FloatingPoint.go
deleted file mode 100644
index 241d448dc..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/FloatingPoint.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type FloatingPoint struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsFloatingPoint(buf []byte, offset flatbuffers.UOffsetT) *FloatingPoint {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &FloatingPoint{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *FloatingPoint) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *FloatingPoint) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *FloatingPoint) Precision() Precision {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return Precision(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *FloatingPoint) MutatePrecision(n Precision) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func FloatingPointStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func FloatingPointAddPrecision(builder *flatbuffers.Builder, precision Precision) {
- builder.PrependInt16Slot(0, int16(precision), 0)
-}
-func FloatingPointEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Footer.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Footer.go
deleted file mode 100644
index 65b0ff095..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Footer.go
+++ /dev/null
@@ -1,162 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// Arrow File metadata
-///
-type Footer struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsFooter(buf []byte, offset flatbuffers.UOffsetT) *Footer {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Footer{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Footer) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Footer) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Footer) Version() MetadataVersion {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return MetadataVersion(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Footer) MutateVersion(n MetadataVersion) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func (rcv *Footer) Schema(obj *Schema) *Schema {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Schema)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-func (rcv *Footer) Dictionaries(obj *Block, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 24
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Footer) DictionariesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Footer) RecordBatches(obj *Block, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 24
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Footer) RecordBatchesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// User-defined metadata
-func (rcv *Footer) CustomMetadata(obj *KeyValue, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Footer) CustomMetadataLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// User-defined metadata
-func FooterStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func FooterAddVersion(builder *flatbuffers.Builder, version MetadataVersion) {
- builder.PrependInt16Slot(0, int16(version), 0)
-}
-func FooterAddSchema(builder *flatbuffers.Builder, schema flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(schema), 0)
-}
-func FooterAddDictionaries(builder *flatbuffers.Builder, dictionaries flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(dictionaries), 0)
-}
-func FooterStartDictionariesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(24, numElems, 8)
-}
-func FooterAddRecordBatches(builder *flatbuffers.Builder, recordBatches flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(recordBatches), 0)
-}
-func FooterStartRecordBatchesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(24, numElems, 8)
-}
-func FooterAddCustomMetadata(builder *flatbuffers.Builder, customMetadata flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(customMetadata), 0)
-}
-func FooterStartCustomMetadataVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func FooterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Int.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Int.go
deleted file mode 100644
index 9f4b19117..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Int.go
+++ /dev/null
@@ -1,80 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Int struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsInt(buf []byte, offset flatbuffers.UOffsetT) *Int {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Int{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Int) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Int) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Int) BitWidth() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Int) MutateBitWidth(n int32) bool {
- return rcv._tab.MutateInt32Slot(4, n)
-}
-
-func (rcv *Int) IsSigned() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-func (rcv *Int) MutateIsSigned(n bool) bool {
- return rcv._tab.MutateBoolSlot(6, n)
-}
-
-func IntStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func IntAddBitWidth(builder *flatbuffers.Builder, bitWidth int32) {
- builder.PrependInt32Slot(0, bitWidth, 0)
-}
-func IntAddIsSigned(builder *flatbuffers.Builder, isSigned bool) {
- builder.PrependBoolSlot(1, isSigned, false)
-}
-func IntEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Interval.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Interval.go
deleted file mode 100644
index 12c56d5c2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Interval.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Interval struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsInterval(buf []byte, offset flatbuffers.UOffsetT) *Interval {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Interval{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Interval) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Interval) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Interval) Unit() IntervalUnit {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return IntervalUnit(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Interval) MutateUnit(n IntervalUnit) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func IntervalStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func IntervalAddUnit(builder *flatbuffers.Builder, unit IntervalUnit) {
- builder.PrependInt16Slot(0, int16(unit), 0)
-}
-func IntervalEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/IntervalUnit.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/IntervalUnit.go
deleted file mode 100644
index f3ed1ae7b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/IntervalUnit.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type IntervalUnit int16
-
-const (
- IntervalUnitYEAR_MONTH IntervalUnit = 0
- IntervalUnitDAY_TIME IntervalUnit = 1
- IntervalUnitMONTH_DAY_NANO IntervalUnit = 2
-)
-
-var EnumNamesIntervalUnit = map[IntervalUnit]string{
- IntervalUnitYEAR_MONTH: "YEAR_MONTH",
- IntervalUnitDAY_TIME: "DAY_TIME",
- IntervalUnitMONTH_DAY_NANO: "MONTH_DAY_NANO",
-}
-
-var EnumValuesIntervalUnit = map[string]IntervalUnit{
- "YEAR_MONTH": IntervalUnitYEAR_MONTH,
- "DAY_TIME": IntervalUnitDAY_TIME,
- "MONTH_DAY_NANO": IntervalUnitMONTH_DAY_NANO,
-}
-
-func (v IntervalUnit) String() string {
- if s, ok := EnumNamesIntervalUnit[v]; ok {
- return s
- }
- return "IntervalUnit(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/KeyValue.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/KeyValue.go
deleted file mode 100644
index c1b85318e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/KeyValue.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// user defined key value pairs to add custom metadata to arrow
-/// key namespacing is the responsibility of the user
-type KeyValue struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsKeyValue(buf []byte, offset flatbuffers.UOffsetT) *KeyValue {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &KeyValue{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *KeyValue) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *KeyValue) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *KeyValue) Key() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func (rcv *KeyValue) Value() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-func KeyValueStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func KeyValueAddKey(builder *flatbuffers.Builder, key flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(key), 0)
-}
-func KeyValueAddValue(builder *flatbuffers.Builder, value flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(value), 0)
-}
-func KeyValueEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeBinary.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeBinary.go
deleted file mode 100644
index 2c3befcc1..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeBinary.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Same as Binary, but with 64-bit offsets, allowing to represent
-/// extremely large data values.
-type LargeBinary struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsLargeBinary(buf []byte, offset flatbuffers.UOffsetT) *LargeBinary {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &LargeBinary{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *LargeBinary) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *LargeBinary) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func LargeBinaryStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func LargeBinaryEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeList.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeList.go
deleted file mode 100644
index 92f228458..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeList.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Same as List, but with 64-bit offsets, allowing to represent
-/// extremely large data values.
-type LargeList struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsLargeList(buf []byte, offset flatbuffers.UOffsetT) *LargeList {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &LargeList{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *LargeList) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *LargeList) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func LargeListStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func LargeListEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeListView.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeListView.go
deleted file mode 100644
index 5b1df149c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeListView.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Same as ListView, but with 64-bit offsets and sizes, allowing to represent
-/// extremely large data values.
-type LargeListView struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsLargeListView(buf []byte, offset flatbuffers.UOffsetT) *LargeListView {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &LargeListView{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *LargeListView) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *LargeListView) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func LargeListViewStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func LargeListViewEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeUtf8.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeUtf8.go
deleted file mode 100644
index e78b33e11..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/LargeUtf8.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Same as Utf8, but with 64-bit offsets, allowing to represent
-/// extremely large data values.
-type LargeUtf8 struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsLargeUtf8(buf []byte, offset flatbuffers.UOffsetT) *LargeUtf8 {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &LargeUtf8{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *LargeUtf8) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *LargeUtf8) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func LargeUtf8Start(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func LargeUtf8End(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/List.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/List.go
deleted file mode 100644
index ba84319d3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/List.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type List struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsList(buf []byte, offset flatbuffers.UOffsetT) *List {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &List{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *List) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *List) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func ListStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func ListEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/ListView.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/ListView.go
deleted file mode 100644
index 46b1e0b3c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/ListView.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Represents the same logical types that List can, but contains offsets and
-/// sizes allowing for writes in any order and sharing of child values among
-/// list values.
-type ListView struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsListView(buf []byte, offset flatbuffers.UOffsetT) *ListView {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &ListView{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *ListView) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *ListView) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func ListViewStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func ListViewEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Map.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Map.go
deleted file mode 100644
index 8802aba1e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Map.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// A Map is a logical nested type that is represented as
-///
-/// List<entries: Struct<key: K, value: V>>
-///
-/// In this layout, the keys and values are each respectively contiguous. We do
-/// not constrain the key and value types, so the application is responsible
-/// for ensuring that the keys are hashable and unique. Whether the keys are sorted
-/// may be set in the metadata for this field.
-///
-/// In a field with Map type, the field has a child Struct field, which then
-/// has two children: key type and the second the value type. The names of the
-/// child fields may be respectively "entries", "key", and "value", but this is
-/// not enforced.
-///
-/// Map
-/// ```text
-/// - child[0] entries: Struct
-/// - child[0] key: K
-/// - child[1] value: V
-/// ```
-/// Neither the "entries" field nor the "key" field may be nullable.
-///
-/// The metadata is structured so that Arrow systems without special handling
-/// for Map can make Map an alias for List. The "layout" attribute for the Map
-/// field must have the same contents as a List.
-type Map struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsMap(buf []byte, offset flatbuffers.UOffsetT) *Map {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Map{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Map) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Map) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Set to true if the keys within each value are sorted
-func (rcv *Map) KeysSorted() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-/// Set to true if the keys within each value are sorted
-func (rcv *Map) MutateKeysSorted(n bool) bool {
- return rcv._tab.MutateBoolSlot(4, n)
-}
-
-func MapStart(builder *flatbuffers.Builder) {
- builder.StartObject(1)
-}
-func MapAddKeysSorted(builder *flatbuffers.Builder, keysSorted bool) {
- builder.PrependBoolSlot(0, keysSorted, false)
-}
-func MapEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Message.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Message.go
deleted file mode 100644
index f4b4a0ff8..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Message.go
+++ /dev/null
@@ -1,133 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Message struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsMessage(buf []byte, offset flatbuffers.UOffsetT) *Message {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Message{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Message) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Message) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Message) Version() MetadataVersion {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return MetadataVersion(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Message) MutateVersion(n MetadataVersion) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func (rcv *Message) HeaderType() MessageHeader {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return MessageHeader(rcv._tab.GetByte(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Message) MutateHeaderType(n MessageHeader) bool {
- return rcv._tab.MutateByteSlot(6, byte(n))
-}
-
-func (rcv *Message) Header(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-func (rcv *Message) BodyLength() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-func (rcv *Message) MutateBodyLength(n int64) bool {
- return rcv._tab.MutateInt64Slot(10, n)
-}
-
-func (rcv *Message) CustomMetadata(obj *KeyValue, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Message) CustomMetadataLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func MessageStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func MessageAddVersion(builder *flatbuffers.Builder, version MetadataVersion) {
- builder.PrependInt16Slot(0, int16(version), 0)
-}
-func MessageAddHeaderType(builder *flatbuffers.Builder, headerType MessageHeader) {
- builder.PrependByteSlot(1, byte(headerType), 0)
-}
-func MessageAddHeader(builder *flatbuffers.Builder, header flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(header), 0)
-}
-func MessageAddBodyLength(builder *flatbuffers.Builder, bodyLength int64) {
- builder.PrependInt64Slot(3, bodyLength, 0)
-}
-func MessageAddCustomMetadata(builder *flatbuffers.Builder, customMetadata flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(customMetadata), 0)
-}
-func MessageStartCustomMetadataVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func MessageEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MessageHeader.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MessageHeader.go
deleted file mode 100644
index c12fc1058..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MessageHeader.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// ----------------------------------------------------------------------
-/// The root Message type
-/// This union enables us to easily send different message types without
-/// redundant storage, and in the future we can easily add new message types.
-///
-/// Arrow implementations do not need to implement all of the message types,
-/// which may include experimental metadata types. For maximum compatibility,
-/// it is best to send data using RecordBatch
-type MessageHeader byte
-
-const (
- MessageHeaderNONE MessageHeader = 0
- MessageHeaderSchema MessageHeader = 1
- MessageHeaderDictionaryBatch MessageHeader = 2
- MessageHeaderRecordBatch MessageHeader = 3
- MessageHeaderTensor MessageHeader = 4
- MessageHeaderSparseTensor MessageHeader = 5
-)
-
-var EnumNamesMessageHeader = map[MessageHeader]string{
- MessageHeaderNONE: "NONE",
- MessageHeaderSchema: "Schema",
- MessageHeaderDictionaryBatch: "DictionaryBatch",
- MessageHeaderRecordBatch: "RecordBatch",
- MessageHeaderTensor: "Tensor",
- MessageHeaderSparseTensor: "SparseTensor",
-}
-
-var EnumValuesMessageHeader = map[string]MessageHeader{
- "NONE": MessageHeaderNONE,
- "Schema": MessageHeaderSchema,
- "DictionaryBatch": MessageHeaderDictionaryBatch,
- "RecordBatch": MessageHeaderRecordBatch,
- "Tensor": MessageHeaderTensor,
- "SparseTensor": MessageHeaderSparseTensor,
-}
-
-func (v MessageHeader) String() string {
- if s, ok := EnumNamesMessageHeader[v]; ok {
- return s
- }
- return "MessageHeader(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MetadataVersion.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MetadataVersion.go
deleted file mode 100644
index bb5e99dd5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/MetadataVersion.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type MetadataVersion int16
-
-const (
- /// 0.1.0 (October 2016).
- MetadataVersionV1 MetadataVersion = 0
- /// 0.2.0 (February 2017). Non-backwards compatible with V1.
- MetadataVersionV2 MetadataVersion = 1
- /// 0.3.0 -> 0.7.1 (May - December 2017). Non-backwards compatible with V2.
- MetadataVersionV3 MetadataVersion = 2
- /// >= 0.8.0 (December 2017). Non-backwards compatible with V3.
- MetadataVersionV4 MetadataVersion = 3
- /// >= 1.0.0 (July 2020). Backwards compatible with V4 (V5 readers can read V4
- /// metadata and IPC messages). Implementations are recommended to provide a
- /// V4 compatibility mode with V5 format changes disabled.
- ///
- /// Incompatible changes between V4 and V5:
- /// - Union buffer layout has changed. In V5, Unions don't have a validity
- /// bitmap buffer.
- MetadataVersionV5 MetadataVersion = 4
-)
-
-var EnumNamesMetadataVersion = map[MetadataVersion]string{
- MetadataVersionV1: "V1",
- MetadataVersionV2: "V2",
- MetadataVersionV3: "V3",
- MetadataVersionV4: "V4",
- MetadataVersionV5: "V5",
-}
-
-var EnumValuesMetadataVersion = map[string]MetadataVersion{
- "V1": MetadataVersionV1,
- "V2": MetadataVersionV2,
- "V3": MetadataVersionV3,
- "V4": MetadataVersionV4,
- "V5": MetadataVersionV5,
-}
-
-func (v MetadataVersion) String() string {
- if s, ok := EnumNamesMetadataVersion[v]; ok {
- return s
- }
- return "MetadataVersion(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Null.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Null.go
deleted file mode 100644
index 3c3eb4bda..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Null.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// These are stored in the flatbuffer in the Type union below
-type Null struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsNull(buf []byte, offset flatbuffers.UOffsetT) *Null {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Null{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Null) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Null) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func NullStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func NullEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Precision.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Precision.go
deleted file mode 100644
index d8021ccc4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Precision.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type Precision int16
-
-const (
- PrecisionHALF Precision = 0
- PrecisionSINGLE Precision = 1
- PrecisionDOUBLE Precision = 2
-)
-
-var EnumNamesPrecision = map[Precision]string{
- PrecisionHALF: "HALF",
- PrecisionSINGLE: "SINGLE",
- PrecisionDOUBLE: "DOUBLE",
-}
-
-var EnumValuesPrecision = map[string]Precision{
- "HALF": PrecisionHALF,
- "SINGLE": PrecisionSINGLE,
- "DOUBLE": PrecisionDOUBLE,
-}
-
-func (v Precision) String() string {
- if s, ok := EnumNamesPrecision[v]; ok {
- return s
- }
- return "Precision(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RecordBatch.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RecordBatch.go
deleted file mode 100644
index c50f4a6e8..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RecordBatch.go
+++ /dev/null
@@ -1,214 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// A data header describing the shared memory layout of a "record" or "row"
-/// batch. Some systems call this a "row batch" internally and others a "record
-/// batch".
-type RecordBatch struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsRecordBatch(buf []byte, offset flatbuffers.UOffsetT) *RecordBatch {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &RecordBatch{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *RecordBatch) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *RecordBatch) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// number of records / rows. The arrays in the batch should all have this
-/// length
-func (rcv *RecordBatch) Length() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// number of records / rows. The arrays in the batch should all have this
-/// length
-func (rcv *RecordBatch) MutateLength(n int64) bool {
- return rcv._tab.MutateInt64Slot(4, n)
-}
-
-/// Nodes correspond to the pre-ordered flattened logical schema
-func (rcv *RecordBatch) Nodes(obj *FieldNode, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 16
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *RecordBatch) NodesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Nodes correspond to the pre-ordered flattened logical schema
-/// Buffers correspond to the pre-ordered flattened buffer tree
-///
-/// The number of buffers appended to this list depends on the schema. For
-/// example, most primitive arrays will have 2 buffers, 1 for the validity
-/// bitmap and 1 for the values. For struct arrays, there will only be a
-/// single buffer for the validity (nulls) bitmap
-func (rcv *RecordBatch) Buffers(obj *Buffer, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 16
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *RecordBatch) BuffersLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Buffers correspond to the pre-ordered flattened buffer tree
-///
-/// The number of buffers appended to this list depends on the schema. For
-/// example, most primitive arrays will have 2 buffers, 1 for the validity
-/// bitmap and 1 for the values. For struct arrays, there will only be a
-/// single buffer for the validity (nulls) bitmap
-/// Optional compression of the message body
-func (rcv *RecordBatch) Compression(obj *BodyCompression) *BodyCompression {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(BodyCompression)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// Optional compression of the message body
-/// Some types such as Utf8View are represented using a variable number of buffers.
-/// For each such Field in the pre-ordered flattened logical schema, there will be
-/// an entry in variadicBufferCounts to indicate the number of number of variadic
-/// buffers which belong to that Field in the current RecordBatch.
-///
-/// For example, the schema
-/// col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
-/// col2: Utf8View
-/// contains two Fields with variadic buffers so variadicBufferCounts will have
-/// two entries, the first counting the variadic buffers of `col1.beta` and the
-/// second counting `col2`'s.
-///
-/// This field may be omitted if and only if the schema contains no Fields with
-/// a variable number of buffers, such as BinaryView and Utf8View.
-func (rcv *RecordBatch) VariadicBufferCounts(j int) int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetInt64(a + flatbuffers.UOffsetT(j*8))
- }
- return 0
-}
-
-func (rcv *RecordBatch) VariadicBufferCountsLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Some types such as Utf8View are represented using a variable number of buffers.
-/// For each such Field in the pre-ordered flattened logical schema, there will be
-/// an entry in variadicBufferCounts to indicate the number of number of variadic
-/// buffers which belong to that Field in the current RecordBatch.
-///
-/// For example, the schema
-/// col1: Struct<alpha: Int32, beta: BinaryView, gamma: Float64>
-/// col2: Utf8View
-/// contains two Fields with variadic buffers so variadicBufferCounts will have
-/// two entries, the first counting the variadic buffers of `col1.beta` and the
-/// second counting `col2`'s.
-///
-/// This field may be omitted if and only if the schema contains no Fields with
-/// a variable number of buffers, such as BinaryView and Utf8View.
-func (rcv *RecordBatch) MutateVariadicBufferCounts(j int, n int64) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt64(a+flatbuffers.UOffsetT(j*8), n)
- }
- return false
-}
-
-func RecordBatchStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func RecordBatchAddLength(builder *flatbuffers.Builder, length int64) {
- builder.PrependInt64Slot(0, length, 0)
-}
-func RecordBatchAddNodes(builder *flatbuffers.Builder, nodes flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(nodes), 0)
-}
-func RecordBatchStartNodesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(16, numElems, 8)
-}
-func RecordBatchAddBuffers(builder *flatbuffers.Builder, buffers flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(buffers), 0)
-}
-func RecordBatchStartBuffersVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(16, numElems, 8)
-}
-func RecordBatchAddCompression(builder *flatbuffers.Builder, compression flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(compression), 0)
-}
-func RecordBatchAddVariadicBufferCounts(builder *flatbuffers.Builder, variadicBufferCounts flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(variadicBufferCounts), 0)
-}
-func RecordBatchStartVariadicBufferCountsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(8, numElems, 8)
-}
-func RecordBatchEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunEndEncoded.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunEndEncoded.go
deleted file mode 100644
index fa414c1bf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunEndEncoded.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Contains two child arrays, run_ends and values.
-/// The run_ends child array must be a 16/32/64-bit integer array
-/// which encodes the indices at which the run with the value in
-/// each corresponding index in the values child array ends.
-/// Like list/struct types, the value array can be of any type.
-type RunEndEncoded struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsRunEndEncoded(buf []byte, offset flatbuffers.UOffsetT) *RunEndEncoded {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &RunEndEncoded{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *RunEndEncoded) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *RunEndEncoded) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func RunEndEncodedStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func RunEndEncodedEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunLengthEncoded.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunLengthEncoded.go
deleted file mode 100644
index 8822c0660..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/RunLengthEncoded.go
+++ /dev/null
@@ -1,50 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type RunLengthEncoded struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsRunLengthEncoded(buf []byte, offset flatbuffers.UOffsetT) *RunLengthEncoded {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &RunLengthEncoded{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *RunLengthEncoded) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *RunLengthEncoded) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func RunLengthEncodedStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func RunLengthEncodedEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Schema.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Schema.go
deleted file mode 100644
index 4ee5ecc9e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Schema.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// A Schema describes the columns in a row batch
-type Schema struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSchema(buf []byte, offset flatbuffers.UOffsetT) *Schema {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Schema{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Schema) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Schema) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// endianness of the buffer
-/// it is Little Endian by default
-/// if endianness doesn't match the underlying system then the vectors need to be converted
-func (rcv *Schema) Endianness() Endianness {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return Endianness(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-/// endianness of the buffer
-/// it is Little Endian by default
-/// if endianness doesn't match the underlying system then the vectors need to be converted
-func (rcv *Schema) MutateEndianness(n Endianness) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func (rcv *Schema) Fields(obj *Field, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Schema) FieldsLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Schema) CustomMetadata(obj *KeyValue, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Schema) CustomMetadataLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Features used in the stream/file.
-func (rcv *Schema) Features(j int) Feature {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return Feature(rcv._tab.GetInt64(a + flatbuffers.UOffsetT(j*8)))
- }
- return 0
-}
-
-func (rcv *Schema) FeaturesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Features used in the stream/file.
-func (rcv *Schema) MutateFeatures(j int, n Feature) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt64(a+flatbuffers.UOffsetT(j*8), int64(n))
- }
- return false
-}
-
-func SchemaStart(builder *flatbuffers.Builder) {
- builder.StartObject(4)
-}
-func SchemaAddEndianness(builder *flatbuffers.Builder, endianness Endianness) {
- builder.PrependInt16Slot(0, int16(endianness), 0)
-}
-func SchemaAddFields(builder *flatbuffers.Builder, fields flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(fields), 0)
-}
-func SchemaStartFieldsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func SchemaAddCustomMetadata(builder *flatbuffers.Builder, customMetadata flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(customMetadata), 0)
-}
-func SchemaStartCustomMetadataVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func SchemaAddFeatures(builder *flatbuffers.Builder, features flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(features), 0)
-}
-func SchemaStartFeaturesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(8, numElems, 8)
-}
-func SchemaEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixCompressedAxis.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixCompressedAxis.go
deleted file mode 100644
index 2d86fdef7..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixCompressedAxis.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type SparseMatrixCompressedAxis int16
-
-const (
- SparseMatrixCompressedAxisRow SparseMatrixCompressedAxis = 0
- SparseMatrixCompressedAxisColumn SparseMatrixCompressedAxis = 1
-)
-
-var EnumNamesSparseMatrixCompressedAxis = map[SparseMatrixCompressedAxis]string{
- SparseMatrixCompressedAxisRow: "Row",
- SparseMatrixCompressedAxisColumn: "Column",
-}
-
-var EnumValuesSparseMatrixCompressedAxis = map[string]SparseMatrixCompressedAxis{
- "Row": SparseMatrixCompressedAxisRow,
- "Column": SparseMatrixCompressedAxisColumn,
-}
-
-func (v SparseMatrixCompressedAxis) String() string {
- if s, ok := EnumNamesSparseMatrixCompressedAxis[v]; ok {
- return s
- }
- return "SparseMatrixCompressedAxis(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSR.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSR.go
deleted file mode 100644
index de8217650..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSR.go
+++ /dev/null
@@ -1,181 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Compressed Sparse Row format, that is matrix-specific.
-type SparseMatrixIndexCSR struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSparseMatrixIndexCSR(buf []byte, offset flatbuffers.UOffsetT) *SparseMatrixIndexCSR {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SparseMatrixIndexCSR{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SparseMatrixIndexCSR) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SparseMatrixIndexCSR) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// The type of values in indptrBuffer
-func (rcv *SparseMatrixIndexCSR) IndptrType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indptrBuffer
-/// indptrBuffer stores the location and size of indptr array that
-/// represents the range of the rows.
-/// The i-th row spans from indptr[i] to indptr[i+1] in the data.
-/// The length of this array is 1 + (the number of rows), and the type
-/// of index value is long.
-///
-/// For example, let X be the following 6x4 matrix:
-///
-/// X := [[0, 1, 2, 0],
-/// [0, 0, 3, 0],
-/// [0, 4, 0, 5],
-/// [0, 0, 0, 0],
-/// [6, 0, 7, 8],
-/// [0, 9, 0, 0]].
-///
-/// The array of non-zero values in X is:
-///
-/// values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
-///
-/// And the indptr of X is:
-///
-/// indptr(X) = [0, 2, 3, 5, 5, 8, 10].
-func (rcv *SparseMatrixIndexCSR) IndptrBuffer(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// indptrBuffer stores the location and size of indptr array that
-/// represents the range of the rows.
-/// The i-th row spans from indptr[i] to indptr[i+1] in the data.
-/// The length of this array is 1 + (the number of rows), and the type
-/// of index value is long.
-///
-/// For example, let X be the following 6x4 matrix:
-///
-/// X := [[0, 1, 2, 0],
-/// [0, 0, 3, 0],
-/// [0, 4, 0, 5],
-/// [0, 0, 0, 0],
-/// [6, 0, 7, 8],
-/// [0, 9, 0, 0]].
-///
-/// The array of non-zero values in X is:
-///
-/// values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
-///
-/// And the indptr of X is:
-///
-/// indptr(X) = [0, 2, 3, 5, 5, 8, 10].
-/// The type of values in indicesBuffer
-func (rcv *SparseMatrixIndexCSR) IndicesType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indicesBuffer
-/// indicesBuffer stores the location and size of the array that
-/// contains the column indices of the corresponding non-zero values.
-/// The type of index value is long.
-///
-/// For example, the indices of the above X is:
-///
-/// indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
-///
-/// Note that the indices are sorted in lexicographical order for each row.
-func (rcv *SparseMatrixIndexCSR) IndicesBuffer(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// indicesBuffer stores the location and size of the array that
-/// contains the column indices of the corresponding non-zero values.
-/// The type of index value is long.
-///
-/// For example, the indices of the above X is:
-///
-/// indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
-///
-/// Note that the indices are sorted in lexicographical order for each row.
-func SparseMatrixIndexCSRStart(builder *flatbuffers.Builder) {
- builder.StartObject(4)
-}
-func SparseMatrixIndexCSRAddIndptrType(builder *flatbuffers.Builder, indptrType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(indptrType), 0)
-}
-func SparseMatrixIndexCSRAddIndptrBuffer(builder *flatbuffers.Builder, indptrBuffer flatbuffers.UOffsetT) {
- builder.PrependStructSlot(1, flatbuffers.UOffsetT(indptrBuffer), 0)
-}
-func SparseMatrixIndexCSRAddIndicesType(builder *flatbuffers.Builder, indicesType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(indicesType), 0)
-}
-func SparseMatrixIndexCSRAddIndicesBuffer(builder *flatbuffers.Builder, indicesBuffer flatbuffers.UOffsetT) {
- builder.PrependStructSlot(3, flatbuffers.UOffsetT(indicesBuffer), 0)
-}
-func SparseMatrixIndexCSREnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSX.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSX.go
deleted file mode 100644
index c28cc5d08..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseMatrixIndexCSX.go
+++ /dev/null
@@ -1,200 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Compressed Sparse format, that is matrix-specific.
-type SparseMatrixIndexCSX struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSparseMatrixIndexCSX(buf []byte, offset flatbuffers.UOffsetT) *SparseMatrixIndexCSX {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SparseMatrixIndexCSX{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SparseMatrixIndexCSX) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SparseMatrixIndexCSX) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Which axis, row or column, is compressed
-func (rcv *SparseMatrixIndexCSX) CompressedAxis() SparseMatrixCompressedAxis {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return SparseMatrixCompressedAxis(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-/// Which axis, row or column, is compressed
-func (rcv *SparseMatrixIndexCSX) MutateCompressedAxis(n SparseMatrixCompressedAxis) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-/// The type of values in indptrBuffer
-func (rcv *SparseMatrixIndexCSX) IndptrType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indptrBuffer
-/// indptrBuffer stores the location and size of indptr array that
-/// represents the range of the rows.
-/// The i-th row spans from `indptr[i]` to `indptr[i+1]` in the data.
-/// The length of this array is 1 + (the number of rows), and the type
-/// of index value is long.
-///
-/// For example, let X be the following 6x4 matrix:
-/// ```text
-/// X := [[0, 1, 2, 0],
-/// [0, 0, 3, 0],
-/// [0, 4, 0, 5],
-/// [0, 0, 0, 0],
-/// [6, 0, 7, 8],
-/// [0, 9, 0, 0]].
-/// ```
-/// The array of non-zero values in X is:
-/// ```text
-/// values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
-/// ```
-/// And the indptr of X is:
-/// ```text
-/// indptr(X) = [0, 2, 3, 5, 5, 8, 10].
-/// ```
-func (rcv *SparseMatrixIndexCSX) IndptrBuffer(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// indptrBuffer stores the location and size of indptr array that
-/// represents the range of the rows.
-/// The i-th row spans from `indptr[i]` to `indptr[i+1]` in the data.
-/// The length of this array is 1 + (the number of rows), and the type
-/// of index value is long.
-///
-/// For example, let X be the following 6x4 matrix:
-/// ```text
-/// X := [[0, 1, 2, 0],
-/// [0, 0, 3, 0],
-/// [0, 4, 0, 5],
-/// [0, 0, 0, 0],
-/// [6, 0, 7, 8],
-/// [0, 9, 0, 0]].
-/// ```
-/// The array of non-zero values in X is:
-/// ```text
-/// values(X) = [1, 2, 3, 4, 5, 6, 7, 8, 9].
-/// ```
-/// And the indptr of X is:
-/// ```text
-/// indptr(X) = [0, 2, 3, 5, 5, 8, 10].
-/// ```
-/// The type of values in indicesBuffer
-func (rcv *SparseMatrixIndexCSX) IndicesType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indicesBuffer
-/// indicesBuffer stores the location and size of the array that
-/// contains the column indices of the corresponding non-zero values.
-/// The type of index value is long.
-///
-/// For example, the indices of the above X is:
-/// ```text
-/// indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
-/// ```
-/// Note that the indices are sorted in lexicographical order for each row.
-func (rcv *SparseMatrixIndexCSX) IndicesBuffer(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// indicesBuffer stores the location and size of the array that
-/// contains the column indices of the corresponding non-zero values.
-/// The type of index value is long.
-///
-/// For example, the indices of the above X is:
-/// ```text
-/// indices(X) = [1, 2, 2, 1, 3, 0, 2, 3, 1].
-/// ```
-/// Note that the indices are sorted in lexicographical order for each row.
-func SparseMatrixIndexCSXStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func SparseMatrixIndexCSXAddCompressedAxis(builder *flatbuffers.Builder, compressedAxis SparseMatrixCompressedAxis) {
- builder.PrependInt16Slot(0, int16(compressedAxis), 0)
-}
-func SparseMatrixIndexCSXAddIndptrType(builder *flatbuffers.Builder, indptrType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(indptrType), 0)
-}
-func SparseMatrixIndexCSXAddIndptrBuffer(builder *flatbuffers.Builder, indptrBuffer flatbuffers.UOffsetT) {
- builder.PrependStructSlot(2, flatbuffers.UOffsetT(indptrBuffer), 0)
-}
-func SparseMatrixIndexCSXAddIndicesType(builder *flatbuffers.Builder, indicesType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(indicesType), 0)
-}
-func SparseMatrixIndexCSXAddIndicesBuffer(builder *flatbuffers.Builder, indicesBuffer flatbuffers.UOffsetT) {
- builder.PrependStructSlot(4, flatbuffers.UOffsetT(indicesBuffer), 0)
-}
-func SparseMatrixIndexCSXEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensor.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensor.go
deleted file mode 100644
index 6f3f55797..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensor.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type SparseTensor struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSparseTensor(buf []byte, offset flatbuffers.UOffsetT) *SparseTensor {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SparseTensor{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SparseTensor) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SparseTensor) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *SparseTensor) TypeType() Type {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return Type(rcv._tab.GetByte(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *SparseTensor) MutateTypeType(n Type) bool {
- return rcv._tab.MutateByteSlot(4, byte(n))
-}
-
-/// The type of data contained in a value cell.
-/// Currently only fixed-width value types are supported,
-/// no strings or nested types.
-func (rcv *SparseTensor) Type(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-/// The type of data contained in a value cell.
-/// Currently only fixed-width value types are supported,
-/// no strings or nested types.
-/// The dimensions of the tensor, optionally named.
-func (rcv *SparseTensor) Shape(obj *TensorDim, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *SparseTensor) ShapeLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// The dimensions of the tensor, optionally named.
-/// The number of non-zero values in a sparse tensor.
-func (rcv *SparseTensor) NonZeroLength() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// The number of non-zero values in a sparse tensor.
-func (rcv *SparseTensor) MutateNonZeroLength(n int64) bool {
- return rcv._tab.MutateInt64Slot(10, n)
-}
-
-func (rcv *SparseTensor) SparseIndexType() SparseTensorIndex {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- return SparseTensorIndex(rcv._tab.GetByte(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *SparseTensor) MutateSparseIndexType(n SparseTensorIndex) bool {
- return rcv._tab.MutateByteSlot(12, byte(n))
-}
-
-/// Sparse tensor index
-func (rcv *SparseTensor) SparseIndex(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-/// Sparse tensor index
-/// The location and size of the tensor's data
-func (rcv *SparseTensor) Data(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The location and size of the tensor's data
-func SparseTensorStart(builder *flatbuffers.Builder) {
- builder.StartObject(7)
-}
-func SparseTensorAddTypeType(builder *flatbuffers.Builder, typeType Type) {
- builder.PrependByteSlot(0, byte(typeType), 0)
-}
-func SparseTensorAddType(builder *flatbuffers.Builder, type_ flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(type_), 0)
-}
-func SparseTensorAddShape(builder *flatbuffers.Builder, shape flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(shape), 0)
-}
-func SparseTensorStartShapeVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func SparseTensorAddNonZeroLength(builder *flatbuffers.Builder, nonZeroLength int64) {
- builder.PrependInt64Slot(3, nonZeroLength, 0)
-}
-func SparseTensorAddSparseIndexType(builder *flatbuffers.Builder, sparseIndexType SparseTensorIndex) {
- builder.PrependByteSlot(4, byte(sparseIndexType), 0)
-}
-func SparseTensorAddSparseIndex(builder *flatbuffers.Builder, sparseIndex flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(5, flatbuffers.UOffsetT(sparseIndex), 0)
-}
-func SparseTensorAddData(builder *flatbuffers.Builder, data flatbuffers.UOffsetT) {
- builder.PrependStructSlot(6, flatbuffers.UOffsetT(data), 0)
-}
-func SparseTensorEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndex.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndex.go
deleted file mode 100644
index 42aa818b0..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndex.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type SparseTensorIndex byte
-
-const (
- SparseTensorIndexNONE SparseTensorIndex = 0
- SparseTensorIndexSparseTensorIndexCOO SparseTensorIndex = 1
- SparseTensorIndexSparseMatrixIndexCSX SparseTensorIndex = 2
- SparseTensorIndexSparseTensorIndexCSF SparseTensorIndex = 3
-)
-
-var EnumNamesSparseTensorIndex = map[SparseTensorIndex]string{
- SparseTensorIndexNONE: "NONE",
- SparseTensorIndexSparseTensorIndexCOO: "SparseTensorIndexCOO",
- SparseTensorIndexSparseMatrixIndexCSX: "SparseMatrixIndexCSX",
- SparseTensorIndexSparseTensorIndexCSF: "SparseTensorIndexCSF",
-}
-
-var EnumValuesSparseTensorIndex = map[string]SparseTensorIndex{
- "NONE": SparseTensorIndexNONE,
- "SparseTensorIndexCOO": SparseTensorIndexSparseTensorIndexCOO,
- "SparseMatrixIndexCSX": SparseTensorIndexSparseMatrixIndexCSX,
- "SparseTensorIndexCSF": SparseTensorIndexSparseTensorIndexCSF,
-}
-
-func (v SparseTensorIndex) String() string {
- if s, ok := EnumNamesSparseTensorIndex[v]; ok {
- return s
- }
- return "SparseTensorIndex(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCOO.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCOO.go
deleted file mode 100644
index f8eee99fa..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCOO.go
+++ /dev/null
@@ -1,179 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// EXPERIMENTAL: Data structures for sparse tensors
-/// Coordinate (COO) format of sparse tensor index.
-///
-/// COO's index list are represented as a NxM matrix,
-/// where N is the number of non-zero values,
-/// and M is the number of dimensions of a sparse tensor.
-///
-/// indicesBuffer stores the location and size of the data of this indices
-/// matrix. The value type and the stride of the indices matrix is
-/// specified in indicesType and indicesStrides fields.
-///
-/// For example, let X be a 2x3x4x5 tensor, and it has the following
-/// 6 non-zero values:
-/// ```text
-/// X[0, 1, 2, 0] := 1
-/// X[1, 1, 2, 3] := 2
-/// X[0, 2, 1, 0] := 3
-/// X[0, 1, 3, 0] := 4
-/// X[0, 1, 2, 1] := 5
-/// X[1, 2, 0, 4] := 6
-/// ```
-/// In COO format, the index matrix of X is the following 4x6 matrix:
-/// ```text
-/// [[0, 0, 0, 0, 1, 1],
-/// [1, 1, 1, 2, 1, 2],
-/// [2, 2, 3, 1, 2, 0],
-/// [0, 1, 0, 0, 3, 4]]
-/// ```
-/// When isCanonical is true, the indices is sorted in lexicographical order
-/// (row-major order), and it does not have duplicated entries. Otherwise,
-/// the indices may not be sorted, or may have duplicated entries.
-type SparseTensorIndexCOO struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSparseTensorIndexCOO(buf []byte, offset flatbuffers.UOffsetT) *SparseTensorIndexCOO {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SparseTensorIndexCOO{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SparseTensorIndexCOO) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SparseTensorIndexCOO) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// The type of values in indicesBuffer
-func (rcv *SparseTensorIndexCOO) IndicesType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indicesBuffer
-/// Non-negative byte offsets to advance one value cell along each dimension
-/// If omitted, default to row-major order (C-like).
-func (rcv *SparseTensorIndexCOO) IndicesStrides(j int) int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetInt64(a + flatbuffers.UOffsetT(j*8))
- }
- return 0
-}
-
-func (rcv *SparseTensorIndexCOO) IndicesStridesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Non-negative byte offsets to advance one value cell along each dimension
-/// If omitted, default to row-major order (C-like).
-func (rcv *SparseTensorIndexCOO) MutateIndicesStrides(j int, n int64) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt64(a+flatbuffers.UOffsetT(j*8), n)
- }
- return false
-}
-
-/// The location and size of the indices matrix's data
-func (rcv *SparseTensorIndexCOO) IndicesBuffer(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The location and size of the indices matrix's data
-/// This flag is true if and only if the indices matrix is sorted in
-/// row-major order, and does not have duplicated entries.
-/// This sort order is the same as of Tensorflow's SparseTensor,
-/// but it is inverse order of SciPy's canonical coo_matrix
-/// (SciPy employs column-major order for its coo_matrix).
-func (rcv *SparseTensorIndexCOO) IsCanonical() bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.GetBool(o + rcv._tab.Pos)
- }
- return false
-}
-
-/// This flag is true if and only if the indices matrix is sorted in
-/// row-major order, and does not have duplicated entries.
-/// This sort order is the same as of Tensorflow's SparseTensor,
-/// but it is inverse order of SciPy's canonical coo_matrix
-/// (SciPy employs column-major order for its coo_matrix).
-func (rcv *SparseTensorIndexCOO) MutateIsCanonical(n bool) bool {
- return rcv._tab.MutateBoolSlot(10, n)
-}
-
-func SparseTensorIndexCOOStart(builder *flatbuffers.Builder) {
- builder.StartObject(4)
-}
-func SparseTensorIndexCOOAddIndicesType(builder *flatbuffers.Builder, indicesType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(indicesType), 0)
-}
-func SparseTensorIndexCOOAddIndicesStrides(builder *flatbuffers.Builder, indicesStrides flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(indicesStrides), 0)
-}
-func SparseTensorIndexCOOStartIndicesStridesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(8, numElems, 8)
-}
-func SparseTensorIndexCOOAddIndicesBuffer(builder *flatbuffers.Builder, indicesBuffer flatbuffers.UOffsetT) {
- builder.PrependStructSlot(2, flatbuffers.UOffsetT(indicesBuffer), 0)
-}
-func SparseTensorIndexCOOAddIsCanonical(builder *flatbuffers.Builder, isCanonical bool) {
- builder.PrependBoolSlot(3, isCanonical, false)
-}
-func SparseTensorIndexCOOEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCSF.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCSF.go
deleted file mode 100644
index a824c84eb..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/SparseTensorIndexCSF.go
+++ /dev/null
@@ -1,291 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Compressed Sparse Fiber (CSF) sparse tensor index.
-type SparseTensorIndexCSF struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsSparseTensorIndexCSF(buf []byte, offset flatbuffers.UOffsetT) *SparseTensorIndexCSF {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &SparseTensorIndexCSF{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *SparseTensorIndexCSF) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *SparseTensorIndexCSF) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// CSF is a generalization of compressed sparse row (CSR) index.
-/// See [smith2017knl](http://shaden.io/pub-files/smith2017knl.pdf)
-///
-/// CSF index recursively compresses each dimension of a tensor into a set
-/// of prefix trees. Each path from a root to leaf forms one tensor
-/// non-zero index. CSF is implemented with two arrays of buffers and one
-/// arrays of integers.
-///
-/// For example, let X be a 2x3x4x5 tensor and let it have the following
-/// 8 non-zero values:
-/// ```text
-/// X[0, 0, 0, 1] := 1
-/// X[0, 0, 0, 2] := 2
-/// X[0, 1, 0, 0] := 3
-/// X[0, 1, 0, 2] := 4
-/// X[0, 1, 1, 0] := 5
-/// X[1, 1, 1, 0] := 6
-/// X[1, 1, 1, 1] := 7
-/// X[1, 1, 1, 2] := 8
-/// ```
-/// As a prefix tree this would be represented as:
-/// ```text
-/// 0 1
-/// / \ |
-/// 0 1 1
-/// / / \ |
-/// 0 0 1 1
-/// /| /| | /| |
-/// 1 2 0 2 0 0 1 2
-/// ```
-/// The type of values in indptrBuffers
-func (rcv *SparseTensorIndexCSF) IndptrType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// CSF is a generalization of compressed sparse row (CSR) index.
-/// See [smith2017knl](http://shaden.io/pub-files/smith2017knl.pdf)
-///
-/// CSF index recursively compresses each dimension of a tensor into a set
-/// of prefix trees. Each path from a root to leaf forms one tensor
-/// non-zero index. CSF is implemented with two arrays of buffers and one
-/// arrays of integers.
-///
-/// For example, let X be a 2x3x4x5 tensor and let it have the following
-/// 8 non-zero values:
-/// ```text
-/// X[0, 0, 0, 1] := 1
-/// X[0, 0, 0, 2] := 2
-/// X[0, 1, 0, 0] := 3
-/// X[0, 1, 0, 2] := 4
-/// X[0, 1, 1, 0] := 5
-/// X[1, 1, 1, 0] := 6
-/// X[1, 1, 1, 1] := 7
-/// X[1, 1, 1, 2] := 8
-/// ```
-/// As a prefix tree this would be represented as:
-/// ```text
-/// 0 1
-/// / \ |
-/// 0 1 1
-/// / / \ |
-/// 0 0 1 1
-/// /| /| | /| |
-/// 1 2 0 2 0 0 1 2
-/// ```
-/// The type of values in indptrBuffers
-/// indptrBuffers stores the sparsity structure.
-/// Each two consecutive dimensions in a tensor correspond to a buffer in
-/// indptrBuffers. A pair of consecutive values at `indptrBuffers[dim][i]`
-/// and `indptrBuffers[dim][i + 1]` signify a range of nodes in
-/// `indicesBuffers[dim + 1]` who are children of `indicesBuffers[dim][i]` node.
-///
-/// For example, the indptrBuffers for the above X is:
-/// ```text
-/// indptrBuffer(X) = [
-/// [0, 2, 3],
-/// [0, 1, 3, 4],
-/// [0, 2, 4, 5, 8]
-/// ].
-/// ```
-func (rcv *SparseTensorIndexCSF) IndptrBuffers(obj *Buffer, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 16
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *SparseTensorIndexCSF) IndptrBuffersLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// indptrBuffers stores the sparsity structure.
-/// Each two consecutive dimensions in a tensor correspond to a buffer in
-/// indptrBuffers. A pair of consecutive values at `indptrBuffers[dim][i]`
-/// and `indptrBuffers[dim][i + 1]` signify a range of nodes in
-/// `indicesBuffers[dim + 1]` who are children of `indicesBuffers[dim][i]` node.
-///
-/// For example, the indptrBuffers for the above X is:
-/// ```text
-/// indptrBuffer(X) = [
-/// [0, 2, 3],
-/// [0, 1, 3, 4],
-/// [0, 2, 4, 5, 8]
-/// ].
-/// ```
-/// The type of values in indicesBuffers
-func (rcv *SparseTensorIndexCSF) IndicesType(obj *Int) *Int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Indirect(o + rcv._tab.Pos)
- if obj == nil {
- obj = new(Int)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The type of values in indicesBuffers
-/// indicesBuffers stores values of nodes.
-/// Each tensor dimension corresponds to a buffer in indicesBuffers.
-/// For example, the indicesBuffers for the above X is:
-/// ```text
-/// indicesBuffer(X) = [
-/// [0, 1],
-/// [0, 1, 1],
-/// [0, 0, 1, 1],
-/// [1, 2, 0, 2, 0, 0, 1, 2]
-/// ].
-/// ```
-func (rcv *SparseTensorIndexCSF) IndicesBuffers(obj *Buffer, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 16
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *SparseTensorIndexCSF) IndicesBuffersLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// indicesBuffers stores values of nodes.
-/// Each tensor dimension corresponds to a buffer in indicesBuffers.
-/// For example, the indicesBuffers for the above X is:
-/// ```text
-/// indicesBuffer(X) = [
-/// [0, 1],
-/// [0, 1, 1],
-/// [0, 0, 1, 1],
-/// [1, 2, 0, 2, 0, 0, 1, 2]
-/// ].
-/// ```
-/// axisOrder stores the sequence in which dimensions were traversed to
-/// produce the prefix tree.
-/// For example, the axisOrder for the above X is:
-/// ```text
-/// axisOrder(X) = [0, 1, 2, 3].
-/// ```
-func (rcv *SparseTensorIndexCSF) AxisOrder(j int) int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetInt32(a + flatbuffers.UOffsetT(j*4))
- }
- return 0
-}
-
-func (rcv *SparseTensorIndexCSF) AxisOrderLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// axisOrder stores the sequence in which dimensions were traversed to
-/// produce the prefix tree.
-/// For example, the axisOrder for the above X is:
-/// ```text
-/// axisOrder(X) = [0, 1, 2, 3].
-/// ```
-func (rcv *SparseTensorIndexCSF) MutateAxisOrder(j int, n int32) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt32(a+flatbuffers.UOffsetT(j*4), n)
- }
- return false
-}
-
-func SparseTensorIndexCSFStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func SparseTensorIndexCSFAddIndptrType(builder *flatbuffers.Builder, indptrType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(indptrType), 0)
-}
-func SparseTensorIndexCSFAddIndptrBuffers(builder *flatbuffers.Builder, indptrBuffers flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(indptrBuffers), 0)
-}
-func SparseTensorIndexCSFStartIndptrBuffersVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(16, numElems, 8)
-}
-func SparseTensorIndexCSFAddIndicesType(builder *flatbuffers.Builder, indicesType flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(indicesType), 0)
-}
-func SparseTensorIndexCSFAddIndicesBuffers(builder *flatbuffers.Builder, indicesBuffers flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(indicesBuffers), 0)
-}
-func SparseTensorIndexCSFStartIndicesBuffersVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(16, numElems, 8)
-}
-func SparseTensorIndexCSFAddAxisOrder(builder *flatbuffers.Builder, axisOrder flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(axisOrder), 0)
-}
-func SparseTensorIndexCSFStartAxisOrderVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func SparseTensorIndexCSFEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Struct_.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Struct_.go
deleted file mode 100644
index 427e70603..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Struct_.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// A Struct_ in the flatbuffer metadata is the same as an Arrow Struct
-/// (according to the physical memory layout). We used Struct_ here as
-/// Struct is a reserved word in Flatbuffers
-type Struct_ struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsStruct_(buf []byte, offset flatbuffers.UOffsetT) *Struct_ {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Struct_{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Struct_) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Struct_) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func Struct_Start(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func Struct_End(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Tensor.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Tensor.go
deleted file mode 100644
index 39d70e351..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Tensor.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-type Tensor struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTensor(buf []byte, offset flatbuffers.UOffsetT) *Tensor {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Tensor{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Tensor) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Tensor) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Tensor) TypeType() Type {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return Type(rcv._tab.GetByte(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Tensor) MutateTypeType(n Type) bool {
- return rcv._tab.MutateByteSlot(4, byte(n))
-}
-
-/// The type of data contained in a value cell. Currently only fixed-width
-/// value types are supported, no strings or nested types
-func (rcv *Tensor) Type(obj *flatbuffers.Table) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- rcv._tab.Union(obj, o)
- return true
- }
- return false
-}
-
-/// The type of data contained in a value cell. Currently only fixed-width
-/// value types are supported, no strings or nested types
-/// The dimensions of the tensor, optionally named
-func (rcv *Tensor) Shape(obj *TensorDim, j int) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- x := rcv._tab.Vector(o)
- x += flatbuffers.UOffsetT(j) * 4
- x = rcv._tab.Indirect(x)
- obj.Init(rcv._tab.Bytes, x)
- return true
- }
- return false
-}
-
-func (rcv *Tensor) ShapeLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// The dimensions of the tensor, optionally named
-/// Non-negative byte offsets to advance one value cell along each dimension
-/// If omitted, default to row-major order (C-like).
-func (rcv *Tensor) Strides(j int) int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetInt64(a + flatbuffers.UOffsetT(j*8))
- }
- return 0
-}
-
-func (rcv *Tensor) StridesLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-/// Non-negative byte offsets to advance one value cell along each dimension
-/// If omitted, default to row-major order (C-like).
-func (rcv *Tensor) MutateStrides(j int, n int64) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt64(a+flatbuffers.UOffsetT(j*8), n)
- }
- return false
-}
-
-/// The location and size of the tensor's data
-func (rcv *Tensor) Data(obj *Buffer) *Buffer {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
- if o != 0 {
- x := o + rcv._tab.Pos
- if obj == nil {
- obj = new(Buffer)
- }
- obj.Init(rcv._tab.Bytes, x)
- return obj
- }
- return nil
-}
-
-/// The location and size of the tensor's data
-func TensorStart(builder *flatbuffers.Builder) {
- builder.StartObject(5)
-}
-func TensorAddTypeType(builder *flatbuffers.Builder, typeType Type) {
- builder.PrependByteSlot(0, byte(typeType), 0)
-}
-func TensorAddType(builder *flatbuffers.Builder, type_ flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(type_), 0)
-}
-func TensorAddShape(builder *flatbuffers.Builder, shape flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(shape), 0)
-}
-func TensorStartShapeVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func TensorAddStrides(builder *flatbuffers.Builder, strides flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(strides), 0)
-}
-func TensorStartStridesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(8, numElems, 8)
-}
-func TensorAddData(builder *flatbuffers.Builder, data flatbuffers.UOffsetT) {
- builder.PrependStructSlot(4, flatbuffers.UOffsetT(data), 0)
-}
-func TensorEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TensorDim.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TensorDim.go
deleted file mode 100644
index 14b821208..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TensorDim.go
+++ /dev/null
@@ -1,83 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// ----------------------------------------------------------------------
-/// Data structures for dense tensors
-/// Shape data for a single axis in a tensor
-type TensorDim struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTensorDim(buf []byte, offset flatbuffers.UOffsetT) *TensorDim {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &TensorDim{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *TensorDim) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *TensorDim) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-/// Length of dimension
-func (rcv *TensorDim) Size() int64 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return rcv._tab.GetInt64(o + rcv._tab.Pos)
- }
- return 0
-}
-
-/// Length of dimension
-func (rcv *TensorDim) MutateSize(n int64) bool {
- return rcv._tab.MutateInt64Slot(4, n)
-}
-
-/// Name of the dimension, optional
-func (rcv *TensorDim) Name() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-/// Name of the dimension, optional
-func TensorDimStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func TensorDimAddSize(builder *flatbuffers.Builder, size int64) {
- builder.PrependInt64Slot(0, size, 0)
-}
-func TensorDimAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(name), 0)
-}
-func TensorDimEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Time.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Time.go
deleted file mode 100644
index 2fb6e4c11..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Time.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Time is either a 32-bit or 64-bit signed integer type representing an
-/// elapsed time since midnight, stored in either of four units: seconds,
-/// milliseconds, microseconds or nanoseconds.
-///
-/// The integer `bitWidth` depends on the `unit` and must be one of the following:
-/// * SECOND and MILLISECOND: 32 bits
-/// * MICROSECOND and NANOSECOND: 64 bits
-///
-/// The allowed values are between 0 (inclusive) and 86400 (=24*60*60) seconds
-/// (exclusive), adjusted for the time unit (for example, up to 86400000
-/// exclusive for the MILLISECOND unit).
-/// This definition doesn't allow for leap seconds. Time values from
-/// measurements with leap seconds will need to be corrected when ingesting
-/// into Arrow (for example by replacing the value 86400 with 86399).
-type Time struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTime(buf []byte, offset flatbuffers.UOffsetT) *Time {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Time{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Time) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Time) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Time) Unit() TimeUnit {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return TimeUnit(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 1
-}
-
-func (rcv *Time) MutateUnit(n TimeUnit) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func (rcv *Time) BitWidth() int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.GetInt32(o + rcv._tab.Pos)
- }
- return 32
-}
-
-func (rcv *Time) MutateBitWidth(n int32) bool {
- return rcv._tab.MutateInt32Slot(6, n)
-}
-
-func TimeStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func TimeAddUnit(builder *flatbuffers.Builder, unit TimeUnit) {
- builder.PrependInt16Slot(0, int16(unit), 1)
-}
-func TimeAddBitWidth(builder *flatbuffers.Builder, bitWidth int32) {
- builder.PrependInt32Slot(1, bitWidth, 32)
-}
-func TimeEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TimeUnit.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TimeUnit.go
deleted file mode 100644
index df14ece4f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/TimeUnit.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type TimeUnit int16
-
-const (
- TimeUnitSECOND TimeUnit = 0
- TimeUnitMILLISECOND TimeUnit = 1
- TimeUnitMICROSECOND TimeUnit = 2
- TimeUnitNANOSECOND TimeUnit = 3
-)
-
-var EnumNamesTimeUnit = map[TimeUnit]string{
- TimeUnitSECOND: "SECOND",
- TimeUnitMILLISECOND: "MILLISECOND",
- TimeUnitMICROSECOND: "MICROSECOND",
- TimeUnitNANOSECOND: "NANOSECOND",
-}
-
-var EnumValuesTimeUnit = map[string]TimeUnit{
- "SECOND": TimeUnitSECOND,
- "MILLISECOND": TimeUnitMILLISECOND,
- "MICROSECOND": TimeUnitMICROSECOND,
- "NANOSECOND": TimeUnitNANOSECOND,
-}
-
-func (v TimeUnit) String() string {
- if s, ok := EnumNamesTimeUnit[v]; ok {
- return s
- }
- return "TimeUnit(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Timestamp.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Timestamp.go
deleted file mode 100644
index d0058e13e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Timestamp.go
+++ /dev/null
@@ -1,201 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Timestamp is a 64-bit signed integer representing an elapsed time since a
-/// fixed epoch, stored in either of four units: seconds, milliseconds,
-/// microseconds or nanoseconds, and is optionally annotated with a timezone.
-///
-/// Timestamp values do not include any leap seconds (in other words, all
-/// days are considered 86400 seconds long).
-///
-/// Timestamps with a non-empty timezone
-/// ------------------------------------
-///
-/// If a Timestamp column has a non-empty timezone value, its epoch is
-/// 1970-01-01 00:00:00 (January 1st 1970, midnight) in the *UTC* timezone
-/// (the Unix epoch), regardless of the Timestamp's own timezone.
-///
-/// Therefore, timestamp values with a non-empty timezone correspond to
-/// physical points in time together with some additional information about
-/// how the data was obtained and/or how to display it (the timezone).
-///
-/// For example, the timestamp value 0 with the timezone string "Europe/Paris"
-/// corresponds to "January 1st 1970, 00h00" in the UTC timezone, but the
-/// application may prefer to display it as "January 1st 1970, 01h00" in
-/// the Europe/Paris timezone (which is the same physical point in time).
-///
-/// One consequence is that timestamp values with a non-empty timezone
-/// can be compared and ordered directly, since they all share the same
-/// well-known point of reference (the Unix epoch).
-///
-/// Timestamps with an unset / empty timezone
-/// -----------------------------------------
-///
-/// If a Timestamp column has no timezone value, its epoch is
-/// 1970-01-01 00:00:00 (January 1st 1970, midnight) in an *unknown* timezone.
-///
-/// Therefore, timestamp values without a timezone cannot be meaningfully
-/// interpreted as physical points in time, but only as calendar / clock
-/// indications ("wall clock time") in an unspecified timezone.
-///
-/// For example, the timestamp value 0 with an empty timezone string
-/// corresponds to "January 1st 1970, 00h00" in an unknown timezone: there
-/// is not enough information to interpret it as a well-defined physical
-/// point in time.
-///
-/// One consequence is that timestamp values without a timezone cannot
-/// be reliably compared or ordered, since they may have different points of
-/// reference. In particular, it is *not* possible to interpret an unset
-/// or empty timezone as the same as "UTC".
-///
-/// Conversion between timezones
-/// ----------------------------
-///
-/// If a Timestamp column has a non-empty timezone, changing the timezone
-/// to a different non-empty value is a metadata-only operation:
-/// the timestamp values need not change as their point of reference remains
-/// the same (the Unix epoch).
-///
-/// However, if a Timestamp column has no timezone value, changing it to a
-/// non-empty value requires to think about the desired semantics.
-/// One possibility is to assume that the original timestamp values are
-/// relative to the epoch of the timezone being set; timestamp values should
-/// then adjusted to the Unix epoch (for example, changing the timezone from
-/// empty to "Europe/Paris" would require converting the timestamp values
-/// from "Europe/Paris" to "UTC", which seems counter-intuitive but is
-/// nevertheless correct).
-///
-/// Guidelines for encoding data from external libraries
-/// ----------------------------------------------------
-///
-/// Date & time libraries often have multiple different data types for temporal
-/// data. In order to ease interoperability between different implementations the
-/// Arrow project has some recommendations for encoding these types into a Timestamp
-/// column.
-///
-/// An "instant" represents a physical point in time that has no relevant timezone
-/// (for example, astronomical data). To encode an instant, use a Timestamp with
-/// the timezone string set to "UTC", and make sure the Timestamp values
-/// are relative to the UTC epoch (January 1st 1970, midnight).
-///
-/// A "zoned date-time" represents a physical point in time annotated with an
-/// informative timezone (for example, the timezone in which the data was
-/// recorded). To encode a zoned date-time, use a Timestamp with the timezone
-/// string set to the name of the timezone, and make sure the Timestamp values
-/// are relative to the UTC epoch (January 1st 1970, midnight).
-///
-/// (There is some ambiguity between an instant and a zoned date-time with the
-/// UTC timezone. Both of these are stored the same in Arrow. Typically,
-/// this distinction does not matter. If it does, then an application should
-/// use custom metadata or an extension type to distinguish between the two cases.)
-///
-/// An "offset date-time" represents a physical point in time combined with an
-/// explicit offset from UTC. To encode an offset date-time, use a Timestamp
-/// with the timezone string set to the numeric timezone offset string
-/// (e.g. "+03:00"), and make sure the Timestamp values are relative to
-/// the UTC epoch (January 1st 1970, midnight).
-///
-/// A "naive date-time" (also called "local date-time" in some libraries)
-/// represents a wall clock time combined with a calendar date, but with
-/// no indication of how to map this information to a physical point in time.
-/// Naive date-times must be handled with care because of this missing
-/// information, and also because daylight saving time (DST) may make
-/// some values ambiguous or nonexistent. A naive date-time may be
-/// stored as a struct with Date and Time fields. However, it may also be
-/// encoded into a Timestamp column with an empty timezone. The timestamp
-/// values should be computed "as if" the timezone of the date-time values
-/// was UTC; for example, the naive date-time "January 1st 1970, 00h00" would
-/// be encoded as timestamp value 0.
-type Timestamp struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsTimestamp(buf []byte, offset flatbuffers.UOffsetT) *Timestamp {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Timestamp{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Timestamp) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Timestamp) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Timestamp) Unit() TimeUnit {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return TimeUnit(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Timestamp) MutateUnit(n TimeUnit) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-/// The timezone is an optional string indicating the name of a timezone,
-/// one of:
-///
-/// * As used in the Olson timezone database (the "tz database" or
-/// "tzdata"), such as "America/New_York".
-/// * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
-/// such as "+07:30".
-///
-/// Whether a timezone string is present indicates different semantics about
-/// the data (see above).
-func (rcv *Timestamp) Timezone() []byte {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.ByteVector(o + rcv._tab.Pos)
- }
- return nil
-}
-
-/// The timezone is an optional string indicating the name of a timezone,
-/// one of:
-///
-/// * As used in the Olson timezone database (the "tz database" or
-/// "tzdata"), such as "America/New_York".
-/// * An absolute timezone offset of the form "+XX:XX" or "-XX:XX",
-/// such as "+07:30".
-///
-/// Whether a timezone string is present indicates different semantics about
-/// the data (see above).
-func TimestampStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func TimestampAddUnit(builder *flatbuffers.Builder, unit TimeUnit) {
- builder.PrependInt16Slot(0, int16(unit), 0)
-}
-func TimestampAddTimezone(builder *flatbuffers.Builder, timezone flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(timezone), 0)
-}
-func TimestampEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Type.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Type.go
deleted file mode 100644
index ab2bce9c6..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Type.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-/// ----------------------------------------------------------------------
-/// Top-level Type value, enabling extensible type-specific metadata. We can
-/// add new logical types to Type without breaking backwards compatibility
-type Type byte
-
-const (
- TypeNONE Type = 0
- TypeNull Type = 1
- TypeInt Type = 2
- TypeFloatingPoint Type = 3
- TypeBinary Type = 4
- TypeUtf8 Type = 5
- TypeBool Type = 6
- TypeDecimal Type = 7
- TypeDate Type = 8
- TypeTime Type = 9
- TypeTimestamp Type = 10
- TypeInterval Type = 11
- TypeList Type = 12
- TypeStruct_ Type = 13
- TypeUnion Type = 14
- TypeFixedSizeBinary Type = 15
- TypeFixedSizeList Type = 16
- TypeMap Type = 17
- TypeDuration Type = 18
- TypeLargeBinary Type = 19
- TypeLargeUtf8 Type = 20
- TypeLargeList Type = 21
- TypeRunEndEncoded Type = 22
- TypeBinaryView Type = 23
- TypeUtf8View Type = 24
- TypeListView Type = 25
- TypeLargeListView Type = 26
-)
-
-var EnumNamesType = map[Type]string{
- TypeNONE: "NONE",
- TypeNull: "Null",
- TypeInt: "Int",
- TypeFloatingPoint: "FloatingPoint",
- TypeBinary: "Binary",
- TypeUtf8: "Utf8",
- TypeBool: "Bool",
- TypeDecimal: "Decimal",
- TypeDate: "Date",
- TypeTime: "Time",
- TypeTimestamp: "Timestamp",
- TypeInterval: "Interval",
- TypeList: "List",
- TypeStruct_: "Struct_",
- TypeUnion: "Union",
- TypeFixedSizeBinary: "FixedSizeBinary",
- TypeFixedSizeList: "FixedSizeList",
- TypeMap: "Map",
- TypeDuration: "Duration",
- TypeLargeBinary: "LargeBinary",
- TypeLargeUtf8: "LargeUtf8",
- TypeLargeList: "LargeList",
- TypeRunEndEncoded: "RunEndEncoded",
- TypeBinaryView: "BinaryView",
- TypeUtf8View: "Utf8View",
- TypeListView: "ListView",
- TypeLargeListView: "LargeListView",
-}
-
-var EnumValuesType = map[string]Type{
- "NONE": TypeNONE,
- "Null": TypeNull,
- "Int": TypeInt,
- "FloatingPoint": TypeFloatingPoint,
- "Binary": TypeBinary,
- "Utf8": TypeUtf8,
- "Bool": TypeBool,
- "Decimal": TypeDecimal,
- "Date": TypeDate,
- "Time": TypeTime,
- "Timestamp": TypeTimestamp,
- "Interval": TypeInterval,
- "List": TypeList,
- "Struct_": TypeStruct_,
- "Union": TypeUnion,
- "FixedSizeBinary": TypeFixedSizeBinary,
- "FixedSizeList": TypeFixedSizeList,
- "Map": TypeMap,
- "Duration": TypeDuration,
- "LargeBinary": TypeLargeBinary,
- "LargeUtf8": TypeLargeUtf8,
- "LargeList": TypeLargeList,
- "RunEndEncoded": TypeRunEndEncoded,
- "BinaryView": TypeBinaryView,
- "Utf8View": TypeUtf8View,
- "ListView": TypeListView,
- "LargeListView": TypeLargeListView,
-}
-
-func (v Type) String() string {
- if s, ok := EnumNamesType[v]; ok {
- return s
- }
- return "Type(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Union.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Union.go
deleted file mode 100644
index e34121d47..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Union.go
+++ /dev/null
@@ -1,101 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// A union is a complex type with children in Field
-/// By default ids in the type vector refer to the offsets in the children
-/// optionally typeIds provides an indirection between the child offset and the type id
-/// for each child `typeIds[offset]` is the id used in the type vector
-type Union struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsUnion(buf []byte, offset flatbuffers.UOffsetT) *Union {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Union{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Union) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Union) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func (rcv *Union) Mode() UnionMode {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
- if o != 0 {
- return UnionMode(rcv._tab.GetInt16(o + rcv._tab.Pos))
- }
- return 0
-}
-
-func (rcv *Union) MutateMode(n UnionMode) bool {
- return rcv._tab.MutateInt16Slot(4, int16(n))
-}
-
-func (rcv *Union) TypeIds(j int) int32 {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.GetInt32(a + flatbuffers.UOffsetT(j*4))
- }
- return 0
-}
-
-func (rcv *Union) TypeIdsLength() int {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- return rcv._tab.VectorLen(o)
- }
- return 0
-}
-
-func (rcv *Union) MutateTypeIds(j int, n int32) bool {
- o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
- if o != 0 {
- a := rcv._tab.Vector(o)
- return rcv._tab.MutateInt32(a+flatbuffers.UOffsetT(j*4), n)
- }
- return false
-}
-
-func UnionStart(builder *flatbuffers.Builder) {
- builder.StartObject(2)
-}
-func UnionAddMode(builder *flatbuffers.Builder, mode UnionMode) {
- builder.PrependInt16Slot(0, int16(mode), 0)
-}
-func UnionAddTypeIds(builder *flatbuffers.Builder, typeIds flatbuffers.UOffsetT) {
- builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(typeIds), 0)
-}
-func UnionStartTypeIdsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
- return builder.StartVector(4, numElems, 4)
-}
-func UnionEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/UnionMode.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/UnionMode.go
deleted file mode 100644
index 357c1f3cb..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/UnionMode.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import "strconv"
-
-type UnionMode int16
-
-const (
- UnionModeSparse UnionMode = 0
- UnionModeDense UnionMode = 1
-)
-
-var EnumNamesUnionMode = map[UnionMode]string{
- UnionModeSparse: "Sparse",
- UnionModeDense: "Dense",
-}
-
-var EnumValuesUnionMode = map[string]UnionMode{
- "Sparse": UnionModeSparse,
- "Dense": UnionModeDense,
-}
-
-func (v UnionMode) String() string {
- if s, ok := EnumNamesUnionMode[v]; ok {
- return s
- }
- return "UnionMode(" + strconv.FormatInt(int64(v), 10) + ")"
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8.go
deleted file mode 100644
index 4ff365a37..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Unicode with UTF-8 encoding
-type Utf8 struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsUtf8(buf []byte, offset flatbuffers.UOffsetT) *Utf8 {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Utf8{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Utf8) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Utf8) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func Utf8Start(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func Utf8End(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8View.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8View.go
deleted file mode 100644
index 9cf821490..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/flatbuf/Utf8View.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Code generated by the FlatBuffers compiler. DO NOT EDIT.
-
-package flatbuf
-
-import (
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-/// Logically the same as Utf8, but the internal representation uses a view
-/// struct that contains the string length and either the string's entire data
-/// inline (for small strings) or an inlined prefix, an index of another buffer,
-/// and an offset pointing to a slice in that buffer (for non-small strings).
-///
-/// Since it uses a variable number of data buffers, each Field with this type
-/// must have a corresponding entry in `variadicBufferCounts`.
-type Utf8View struct {
- _tab flatbuffers.Table
-}
-
-func GetRootAsUtf8View(buf []byte, offset flatbuffers.UOffsetT) *Utf8View {
- n := flatbuffers.GetUOffsetT(buf[offset:])
- x := &Utf8View{}
- x.Init(buf, n+offset)
- return x
-}
-
-func (rcv *Utf8View) Init(buf []byte, i flatbuffers.UOffsetT) {
- rcv._tab.Bytes = buf
- rcv._tab.Pos = i
-}
-
-func (rcv *Utf8View) Table() flatbuffers.Table {
- return rcv._tab
-}
-
-func Utf8ViewStart(builder *flatbuffers.Builder) {
- builder.StartObject(0)
-}
-func Utf8ViewEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
- return builder.EndObject()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/internal/utils.go b/vendor/github.com/apache/arrow/go/v15/arrow/internal/utils.go
deleted file mode 100644
index 7b5df167e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/internal/utils.go
+++ /dev/null
@@ -1,59 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package internal
-
-import (
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
-)
-
-const CurMetadataVersion = flatbuf.MetadataVersionV5
-
-// DefaultHasValidityBitmap is a convenience function equivalent to
-// calling HasValidityBitmap with CurMetadataVersion.
-func DefaultHasValidityBitmap(id arrow.Type) bool { return HasValidityBitmap(id, CurMetadataVersion) }
-
-// HasValidityBitmap returns whether the given type at the provided version is
-// expected to have a validity bitmap in it's representation.
-//
-// Typically this is necessary because of the change between V4 and V5
-// where union types no longer have validity bitmaps.
-func HasValidityBitmap(id arrow.Type, version flatbuf.MetadataVersion) bool {
- // in <=V4 Null types had no validity bitmap
- // in >=V5 Null and Union types have no validity bitmap
- if version < flatbuf.MetadataVersionV5 {
- return id != arrow.NULL
- }
-
- switch id {
- case arrow.NULL, arrow.DENSE_UNION, arrow.SPARSE_UNION, arrow.RUN_END_ENCODED:
- return false
- }
- return true
-}
-
-// HasBufferSizesBuffer returns whether a given type has an extra buffer
-// in the C ABI to store the sizes of other buffers. Currently this is only
-// StringView and BinaryView.
-func HasBufferSizesBuffer(id arrow.Type) bool {
- switch id {
- case arrow.STRING_VIEW, arrow.BINARY_VIEW:
- return true
- default:
- return false
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/compression.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/compression.go
deleted file mode 100644
index 06a9cf67c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/compression.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "io"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/klauspost/compress/zstd"
- "github.com/pierrec/lz4/v4"
-)
-
-type compressor interface {
- MaxCompressedLen(n int) int
- Reset(io.Writer)
- io.WriteCloser
- Type() flatbuf.CompressionType
-}
-
-type lz4Compressor struct {
- *lz4.Writer
-}
-
-func (lz4Compressor) MaxCompressedLen(n int) int {
- return lz4.CompressBlockBound(n)
-}
-
-func (lz4Compressor) Type() flatbuf.CompressionType {
- return flatbuf.CompressionTypeLZ4_FRAME
-}
-
-type zstdCompressor struct {
- *zstd.Encoder
-}
-
-// from zstd.h, ZSTD_COMPRESSBOUND
-func (zstdCompressor) MaxCompressedLen(len int) int {
- debug.Assert(len >= 0, "MaxCompressedLen called with len less than 0")
- extra := uint((uint(128<<10) - uint(len)) >> 11)
- if len >= (128 << 10) {
- extra = 0
- }
- return int(uint(len+(len>>8)) + extra)
-}
-
-func (zstdCompressor) Type() flatbuf.CompressionType {
- return flatbuf.CompressionTypeZSTD
-}
-
-func getCompressor(codec flatbuf.CompressionType) compressor {
- switch codec {
- case flatbuf.CompressionTypeLZ4_FRAME:
- w := lz4.NewWriter(nil)
- // options here chosen in order to match the C++ implementation
- w.Apply(lz4.ChecksumOption(false), lz4.BlockSizeOption(lz4.Block64Kb))
- return &lz4Compressor{w}
- case flatbuf.CompressionTypeZSTD:
- enc, err := zstd.NewWriter(nil)
- if err != nil {
- panic(err)
- }
- return zstdCompressor{enc}
- }
- return nil
-}
-
-type decompressor interface {
- io.Reader
- Reset(io.Reader)
- Close()
-}
-
-type zstdDecompressor struct {
- *zstd.Decoder
-}
-
-func (z *zstdDecompressor) Reset(r io.Reader) {
- if err := z.Decoder.Reset(r); err != nil {
- panic(err)
- }
-}
-
-func (z *zstdDecompressor) Close() {
- z.Decoder.Close()
-}
-
-type lz4Decompressor struct {
- *lz4.Reader
-}
-
-func (z *lz4Decompressor) Close() {
- z.Reader.Reset(nil)
-}
-
-func getDecompressor(codec flatbuf.CompressionType) decompressor {
- switch codec {
- case flatbuf.CompressionTypeLZ4_FRAME:
- return &lz4Decompressor{lz4.NewReader(nil)}
- case flatbuf.CompressionTypeZSTD:
- dec, err := zstd.NewReader(nil)
- if err != nil {
- panic(err)
- }
- return &zstdDecompressor{dec}
- }
- return nil
-}
-
-type bufferWriter struct {
- buf *memory.Buffer
- pos int
-}
-
-func (bw *bufferWriter) Write(p []byte) (n int, err error) {
- if bw.pos+len(p) >= bw.buf.Cap() {
- bw.buf.Reserve(bw.pos + len(p))
- }
- n = copy(bw.buf.Buf()[bw.pos:], p)
- bw.pos += n
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/endian_swap.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/endian_swap.go
deleted file mode 100644
index 35ba0e4e7..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/endian_swap.go
+++ /dev/null
@@ -1,166 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "errors"
- "fmt"
- "math/bits"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// swap the endianness of the array's buffers as needed in-place to save
-// the cost of reallocation.
-//
-// assumes that nested data buffers are never re-used, if an *array.Data
-// child is re-used among the children or the dictionary then this might
-// end up double-swapping (putting it back into the original endianness).
-// if it is needed to support re-using the buffers, then this can be
-// re-factored to instead return a NEW array.Data object with newly
-// allocated buffers, rather than doing it in place.
-//
-// For now this is intended to be used by the IPC readers after loading
-// arrays from an IPC message which currently is guaranteed to not re-use
-// buffers between arrays.
-func swapEndianArrayData(data *array.Data) error {
- if data.Offset() != 0 {
- return errors.New("unsupported data format: data.offset != 0")
- }
- if err := swapType(data.DataType(), data); err != nil {
- return err
- }
- return swapChildren(data.Children())
-}
-
-func swapChildren(children []arrow.ArrayData) (err error) {
- for i := range children {
- if err = swapEndianArrayData(children[i].(*array.Data)); err != nil {
- break
- }
- }
- return
-}
-
-func swapType(dt arrow.DataType, data *array.Data) (err error) {
- switch dt.ID() {
- case arrow.BINARY, arrow.STRING:
- swapOffsets(1, 32, data)
- return
- case arrow.LARGE_BINARY, arrow.LARGE_STRING:
- swapOffsets(1, 64, data)
- return
- case arrow.NULL, arrow.BOOL, arrow.INT8, arrow.UINT8,
- arrow.FIXED_SIZE_BINARY, arrow.FIXED_SIZE_LIST, arrow.STRUCT:
- return
- }
-
- switch dt := dt.(type) {
- case *arrow.Decimal128Type:
- rawdata := arrow.Uint64Traits.CastFromBytes(data.Buffers()[1].Bytes())
- length := data.Buffers()[1].Len() / arrow.Decimal128SizeBytes
- for i := 0; i < length; i++ {
- idx := i * 2
- tmp := bits.ReverseBytes64(rawdata[idx])
- rawdata[idx] = bits.ReverseBytes64(rawdata[idx+1])
- rawdata[idx+1] = tmp
- }
- case *arrow.Decimal256Type:
- rawdata := arrow.Uint64Traits.CastFromBytes(data.Buffers()[1].Bytes())
- length := data.Buffers()[1].Len() / arrow.Decimal256SizeBytes
- for i := 0; i < length; i++ {
- idx := i * 4
- tmp0 := bits.ReverseBytes64(rawdata[idx])
- tmp1 := bits.ReverseBytes64(rawdata[idx+1])
- tmp2 := bits.ReverseBytes64(rawdata[idx+2])
- rawdata[idx] = bits.ReverseBytes64(rawdata[idx+3])
- rawdata[idx+1] = tmp2
- rawdata[idx+2] = tmp1
- rawdata[idx+3] = tmp0
- }
- case arrow.UnionType:
- if dt.Mode() == arrow.DenseMode {
- swapOffsets(2, 32, data)
- }
- case *arrow.ListType:
- swapOffsets(1, 32, data)
- case *arrow.LargeListType:
- swapOffsets(1, 64, data)
- case *arrow.MapType:
- swapOffsets(1, 32, data)
- case *arrow.DayTimeIntervalType:
- byteSwapBuffer(32, data.Buffers()[1])
- case *arrow.MonthDayNanoIntervalType:
- rawdata := arrow.MonthDayNanoIntervalTraits.CastFromBytes(data.Buffers()[1].Bytes())
- for i, tmp := range rawdata {
- rawdata[i].Days = int32(bits.ReverseBytes32(uint32(tmp.Days)))
- rawdata[i].Months = int32(bits.ReverseBytes32(uint32(tmp.Months)))
- rawdata[i].Nanoseconds = int64(bits.ReverseBytes64(uint64(tmp.Nanoseconds)))
- }
- case arrow.ExtensionType:
- return swapType(dt.StorageType(), data)
- case *arrow.DictionaryType:
- // dictionary itself was already swapped in ReadDictionary calls
- return swapType(dt.IndexType, data)
- case arrow.FixedWidthDataType:
- byteSwapBuffer(dt.BitWidth(), data.Buffers()[1])
- default:
- err = fmt.Errorf("%w: swapping endianness of %s", arrow.ErrNotImplemented, dt)
- }
-
- return
-}
-
-// this can get called on an invalid Array Data object by the IPC reader,
-// so we won't rely on the data.length and will instead rely on the buffer's
-// own size instead.
-func byteSwapBuffer(bw int, buf *memory.Buffer) {
- if bw == 1 || buf == nil {
- // if byte width == 1, no need to swap anything
- return
- }
-
- switch bw {
- case 16:
- data := arrow.Uint16Traits.CastFromBytes(buf.Bytes())
- for i := range data {
- data[i] = bits.ReverseBytes16(data[i])
- }
- case 32:
- data := arrow.Uint32Traits.CastFromBytes(buf.Bytes())
- for i := range data {
- data[i] = bits.ReverseBytes32(data[i])
- }
- case 64:
- data := arrow.Uint64Traits.CastFromBytes(buf.Bytes())
- for i := range data {
- data[i] = bits.ReverseBytes64(data[i])
- }
- }
-}
-
-func swapOffsets(index int, bitWidth int, data *array.Data) {
- if data.Buffers()[index] == nil || data.Buffers()[index].Len() == 0 {
- return
- }
-
- // other than unions, offset has one more element than the data.length
- // don't yet implement large types, so hardcode 32bit offsets for now
- byteSwapBuffer(bitWidth, data.Buffers()[index])
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_reader.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_reader.go
deleted file mode 100644
index 7bc7f6ebf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_reader.go
+++ /dev/null
@@ -1,770 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "bytes"
- "encoding/binary"
- "errors"
- "fmt"
- "io"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal"
- "github.com/apache/arrow/go/v15/arrow/internal/dictutils"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// FileReader is an Arrow file reader.
-type FileReader struct {
- r ReadAtSeeker
-
- footer struct {
- offset int64
- buffer *memory.Buffer
- data *flatbuf.Footer
- }
-
- // fields dictTypeMap
- memo dictutils.Memo
-
- schema *arrow.Schema
- record arrow.Record
-
- irec int // current record index. used for the arrio.Reader interface
- err error // last error
-
- mem memory.Allocator
- swapEndianness bool
-}
-
-// NewFileReader opens an Arrow file using the provided reader r.
-func NewFileReader(r ReadAtSeeker, opts ...Option) (*FileReader, error) {
- var (
- cfg = newConfig(opts...)
- err error
-
- f = FileReader{
- r: r,
- memo: dictutils.NewMemo(),
- mem: cfg.alloc,
- }
- )
-
- if cfg.footer.offset <= 0 {
- cfg.footer.offset, err = f.r.Seek(0, io.SeekEnd)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could retrieve footer offset: %w", err)
- }
- }
- f.footer.offset = cfg.footer.offset
-
- err = f.readFooter()
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not decode footer: %w", err)
- }
-
- err = f.readSchema(cfg.ensureNativeEndian)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not decode schema: %w", err)
- }
-
- if cfg.schema != nil && !cfg.schema.Equal(f.schema) {
- return nil, fmt.Errorf("arrow/ipc: inconsistent schema for reading (got: %v, want: %v)", f.schema, cfg.schema)
- }
-
- return &f, err
-}
-
-func (f *FileReader) readFooter() error {
- var err error
-
- if f.footer.offset <= int64(len(Magic)*2+4) {
- return fmt.Errorf("arrow/ipc: file too small (size=%d)", f.footer.offset)
- }
-
- eof := int64(len(Magic) + 4)
- buf := make([]byte, eof)
- n, err := f.r.ReadAt(buf, f.footer.offset-eof)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not read footer: %w", err)
- }
- if n != len(buf) {
- return fmt.Errorf("arrow/ipc: could not read %d bytes from end of file", len(buf))
- }
-
- if !bytes.Equal(buf[4:], Magic) {
- return errNotArrowFile
- }
-
- size := int64(binary.LittleEndian.Uint32(buf[:4]))
- if size <= 0 || size+int64(len(Magic)*2+4) > f.footer.offset {
- return errInconsistentFileMetadata
- }
-
- buf = make([]byte, size)
- n, err = f.r.ReadAt(buf, f.footer.offset-size-eof)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not read footer data: %w", err)
- }
- if n != len(buf) {
- return fmt.Errorf("arrow/ipc: could not read %d bytes from footer data", len(buf))
- }
-
- f.footer.buffer = memory.NewBufferBytes(buf)
- f.footer.data = flatbuf.GetRootAsFooter(buf, 0)
- return err
-}
-
-func (f *FileReader) readSchema(ensureNativeEndian bool) error {
- var (
- err error
- kind dictutils.Kind
- )
-
- schema := f.footer.data.Schema(nil)
- if schema == nil {
- return fmt.Errorf("arrow/ipc: could not load schema from flatbuffer data")
- }
- f.schema, err = schemaFromFB(schema, &f.memo)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not read schema: %w", err)
- }
-
- if ensureNativeEndian && !f.schema.IsNativeEndian() {
- f.swapEndianness = true
- f.schema = f.schema.WithEndianness(endian.NativeEndian)
- }
-
- for i := 0; i < f.NumDictionaries(); i++ {
- blk, err := f.dict(i)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not read dictionary[%d]: %w", i, err)
- }
- switch {
- case !bitutil.IsMultipleOf8(blk.Offset):
- return fmt.Errorf("arrow/ipc: invalid file offset=%d for dictionary %d", blk.Offset, i)
- case !bitutil.IsMultipleOf8(int64(blk.Meta)):
- return fmt.Errorf("arrow/ipc: invalid file metadata=%d position for dictionary %d", blk.Meta, i)
- case !bitutil.IsMultipleOf8(blk.Body):
- return fmt.Errorf("arrow/ipc: invalid file body=%d position for dictionary %d", blk.Body, i)
- }
-
- msg, err := blk.NewMessage()
- if err != nil {
- return err
- }
-
- kind, err = readDictionary(&f.memo, msg.meta, bytes.NewReader(msg.body.Bytes()), f.swapEndianness, f.mem)
- if err != nil {
- return err
- }
- if kind == dictutils.KindReplacement {
- return errors.New("arrow/ipc: unsupported dictionary replacement in IPC file")
- }
- }
-
- return err
-}
-
-func (f *FileReader) block(i int) (fileBlock, error) {
- var blk flatbuf.Block
- if !f.footer.data.RecordBatches(&blk, i) {
- return fileBlock{}, fmt.Errorf("arrow/ipc: could not extract file block %d", i)
- }
-
- return fileBlock{
- Offset: blk.Offset(),
- Meta: blk.MetaDataLength(),
- Body: blk.BodyLength(),
- r: f.r,
- mem: f.mem,
- }, nil
-}
-
-func (f *FileReader) dict(i int) (fileBlock, error) {
- var blk flatbuf.Block
- if !f.footer.data.Dictionaries(&blk, i) {
- return fileBlock{}, fmt.Errorf("arrow/ipc: could not extract dictionary block %d", i)
- }
-
- return fileBlock{
- Offset: blk.Offset(),
- Meta: blk.MetaDataLength(),
- Body: blk.BodyLength(),
- r: f.r,
- mem: f.mem,
- }, nil
-}
-
-func (f *FileReader) Schema() *arrow.Schema {
- return f.schema
-}
-
-func (f *FileReader) NumDictionaries() int {
- if f.footer.data == nil {
- return 0
- }
- return f.footer.data.DictionariesLength()
-}
-
-func (f *FileReader) NumRecords() int {
- return f.footer.data.RecordBatchesLength()
-}
-
-func (f *FileReader) Version() MetadataVersion {
- return MetadataVersion(f.footer.data.Version())
-}
-
-// Close cleans up resources used by the File.
-// Close does not close the underlying reader.
-func (f *FileReader) Close() error {
- if f.footer.data != nil {
- f.footer.data = nil
- }
-
- if f.footer.buffer != nil {
- f.footer.buffer.Release()
- f.footer.buffer = nil
- }
-
- if f.record != nil {
- f.record.Release()
- f.record = nil
- }
- return nil
-}
-
-// Record returns the i-th record from the file.
-// The returned value is valid until the next call to Record.
-// Users need to call Retain on that Record to keep it valid for longer.
-func (f *FileReader) Record(i int) (arrow.Record, error) {
- record, err := f.RecordAt(i)
- if err != nil {
- return nil, err
- }
-
- if f.record != nil {
- f.record.Release()
- }
-
- f.record = record
- return record, nil
-}
-
-// Record returns the i-th record from the file. Ownership is transferred to the
-// caller and must call Release() to free the memory. This method is safe to
-// call concurrently.
-func (f *FileReader) RecordAt(i int) (arrow.Record, error) {
- if i < 0 || i > f.NumRecords() {
- panic("arrow/ipc: record index out of bounds")
- }
-
- blk, err := f.block(i)
- if err != nil {
- return nil, err
- }
- switch {
- case !bitutil.IsMultipleOf8(blk.Offset):
- return nil, fmt.Errorf("arrow/ipc: invalid file offset=%d for record %d", blk.Offset, i)
- case !bitutil.IsMultipleOf8(int64(blk.Meta)):
- return nil, fmt.Errorf("arrow/ipc: invalid file metadata=%d position for record %d", blk.Meta, i)
- case !bitutil.IsMultipleOf8(blk.Body):
- return nil, fmt.Errorf("arrow/ipc: invalid file body=%d position for record %d", blk.Body, i)
- }
-
- msg, err := blk.NewMessage()
- if err != nil {
- return nil, err
- }
- defer msg.Release()
-
- if msg.Type() != MessageRecordBatch {
- return nil, fmt.Errorf("arrow/ipc: message %d is not a Record", i)
- }
-
- return newRecord(f.schema, &f.memo, msg.meta, bytes.NewReader(msg.body.Bytes()), f.swapEndianness, f.mem), nil
-}
-
-// Read reads the current record from the underlying stream and an error, if any.
-// When the Reader reaches the end of the underlying stream, it returns (nil, io.EOF).
-//
-// The returned record value is valid until the next call to Read.
-// Users need to call Retain on that Record to keep it valid for longer.
-func (f *FileReader) Read() (rec arrow.Record, err error) {
- if f.irec == f.NumRecords() {
- return nil, io.EOF
- }
- rec, f.err = f.Record(f.irec)
- f.irec++
- return rec, f.err
-}
-
-// ReadAt reads the i-th record from the underlying stream and an error, if any.
-func (f *FileReader) ReadAt(i int64) (arrow.Record, error) {
- return f.Record(int(i))
-}
-
-func newRecord(schema *arrow.Schema, memo *dictutils.Memo, meta *memory.Buffer, body ReadAtSeeker, swapEndianness bool, mem memory.Allocator) arrow.Record {
- var (
- msg = flatbuf.GetRootAsMessage(meta.Bytes(), 0)
- md flatbuf.RecordBatch
- codec decompressor
- )
- initFB(&md, msg.Header)
- rows := md.Length()
-
- bodyCompress := md.Compression(nil)
- if bodyCompress != nil {
- codec = getDecompressor(bodyCompress.Codec())
- defer codec.Close()
- }
-
- ctx := &arrayLoaderContext{
- src: ipcSource{
- meta: &md,
- r: body,
- codec: codec,
- mem: mem,
- },
- memo: memo,
- max: kMaxNestingDepth,
- version: MetadataVersion(msg.Version()),
- }
-
- pos := dictutils.NewFieldPos()
- cols := make([]arrow.Array, schema.NumFields())
- for i := 0; i < schema.NumFields(); i++ {
- data := ctx.loadArray(schema.Field(i).Type)
- defer data.Release()
-
- if err := dictutils.ResolveFieldDict(memo, data, pos.Child(int32(i)), mem); err != nil {
- panic(err)
- }
-
- if swapEndianness {
- swapEndianArrayData(data.(*array.Data))
- }
-
- cols[i] = array.MakeFromData(data)
- defer cols[i].Release()
- }
-
- return array.NewRecord(schema, cols, rows)
-}
-
-type ipcSource struct {
- meta *flatbuf.RecordBatch
- r ReadAtSeeker
- codec decompressor
- mem memory.Allocator
-}
-
-func (src *ipcSource) buffer(i int) *memory.Buffer {
- var buf flatbuf.Buffer
- if !src.meta.Buffers(&buf, i) {
- panic("arrow/ipc: buffer index out of bound")
- }
-
- if buf.Length() == 0 {
- return memory.NewBufferBytes(nil)
- }
-
- raw := memory.NewResizableBuffer(src.mem)
- if src.codec == nil {
- raw.Resize(int(buf.Length()))
- _, err := src.r.ReadAt(raw.Bytes(), buf.Offset())
- if err != nil {
- panic(err)
- }
- } else {
- sr := io.NewSectionReader(src.r, buf.Offset(), buf.Length())
- var uncompressedSize uint64
-
- err := binary.Read(sr, binary.LittleEndian, &uncompressedSize)
- if err != nil {
- panic(err)
- }
-
- var r io.Reader = sr
- // check for an uncompressed buffer
- if int64(uncompressedSize) != -1 {
- raw.Resize(int(uncompressedSize))
- src.codec.Reset(sr)
- r = src.codec
- } else {
- raw.Resize(int(buf.Length() - 8))
- }
-
- if _, err = io.ReadFull(r, raw.Bytes()); err != nil {
- panic(err)
- }
- }
-
- return raw
-}
-
-func (src *ipcSource) fieldMetadata(i int) *flatbuf.FieldNode {
- var node flatbuf.FieldNode
- if !src.meta.Nodes(&node, i) {
- panic("arrow/ipc: field metadata out of bound")
- }
- return &node
-}
-
-func (src *ipcSource) variadicCount(i int) int64 {
- return src.meta.VariadicBufferCounts(i)
-}
-
-type arrayLoaderContext struct {
- src ipcSource
- ifield int
- ibuffer int
- ivariadic int
- max int
- memo *dictutils.Memo
- version MetadataVersion
-}
-
-func (ctx *arrayLoaderContext) field() *flatbuf.FieldNode {
- field := ctx.src.fieldMetadata(ctx.ifield)
- ctx.ifield++
- return field
-}
-
-func (ctx *arrayLoaderContext) buffer() *memory.Buffer {
- buf := ctx.src.buffer(ctx.ibuffer)
- ctx.ibuffer++
- return buf
-}
-
-func (ctx *arrayLoaderContext) variadic() int64 {
- v := ctx.src.variadicCount(ctx.ivariadic)
- ctx.ivariadic++
- return v
-}
-
-func (ctx *arrayLoaderContext) loadArray(dt arrow.DataType) arrow.ArrayData {
- switch dt := dt.(type) {
- case *arrow.NullType:
- return ctx.loadNull()
-
- case *arrow.DictionaryType:
- indices := ctx.loadPrimitive(dt.IndexType)
- defer indices.Release()
- return array.NewData(dt, indices.Len(), indices.Buffers(), indices.Children(), indices.NullN(), indices.Offset())
-
- case *arrow.BooleanType,
- *arrow.Int8Type, *arrow.Int16Type, *arrow.Int32Type, *arrow.Int64Type,
- *arrow.Uint8Type, *arrow.Uint16Type, *arrow.Uint32Type, *arrow.Uint64Type,
- *arrow.Float16Type, *arrow.Float32Type, *arrow.Float64Type,
- *arrow.Decimal128Type, *arrow.Decimal256Type,
- *arrow.Time32Type, *arrow.Time64Type,
- *arrow.TimestampType,
- *arrow.Date32Type, *arrow.Date64Type,
- *arrow.MonthIntervalType, *arrow.DayTimeIntervalType, *arrow.MonthDayNanoIntervalType,
- *arrow.DurationType:
- return ctx.loadPrimitive(dt)
-
- case *arrow.BinaryType, *arrow.StringType, *arrow.LargeStringType, *arrow.LargeBinaryType:
- return ctx.loadBinary(dt)
-
- case arrow.BinaryViewDataType:
- return ctx.loadBinaryView(dt)
-
- case *arrow.FixedSizeBinaryType:
- return ctx.loadFixedSizeBinary(dt)
-
- case *arrow.ListType:
- return ctx.loadList(dt)
-
- case *arrow.LargeListType:
- return ctx.loadList(dt)
-
- case *arrow.ListViewType:
- return ctx.loadListView(dt)
-
- case *arrow.LargeListViewType:
- return ctx.loadListView(dt)
-
- case *arrow.FixedSizeListType:
- return ctx.loadFixedSizeList(dt)
-
- case *arrow.StructType:
- return ctx.loadStruct(dt)
-
- case *arrow.MapType:
- return ctx.loadMap(dt)
-
- case arrow.ExtensionType:
- storage := ctx.loadArray(dt.StorageType())
- defer storage.Release()
- return array.NewData(dt, storage.Len(), storage.Buffers(), storage.Children(), storage.NullN(), storage.Offset())
-
- case *arrow.RunEndEncodedType:
- field, buffers := ctx.loadCommon(dt.ID(), 1)
- defer memory.ReleaseBuffers(buffers)
-
- runEnds := ctx.loadChild(dt.RunEnds())
- defer runEnds.Release()
- values := ctx.loadChild(dt.Encoded())
- defer values.Release()
-
- return array.NewData(dt, int(field.Length()), buffers, []arrow.ArrayData{runEnds, values}, int(field.NullCount()), 0)
-
- case arrow.UnionType:
- return ctx.loadUnion(dt)
-
- default:
- panic(fmt.Errorf("arrow/ipc: array type %T not handled yet", dt))
- }
-}
-
-func (ctx *arrayLoaderContext) loadCommon(typ arrow.Type, nbufs int) (*flatbuf.FieldNode, []*memory.Buffer) {
- buffers := make([]*memory.Buffer, 0, nbufs)
- field := ctx.field()
-
- var buf *memory.Buffer
-
- if internal.HasValidityBitmap(typ, flatbuf.MetadataVersion(ctx.version)) {
- switch field.NullCount() {
- case 0:
- ctx.ibuffer++
- default:
- buf = ctx.buffer()
- }
- }
- buffers = append(buffers, buf)
-
- return field, buffers
-}
-
-func (ctx *arrayLoaderContext) loadChild(dt arrow.DataType) arrow.ArrayData {
- if ctx.max == 0 {
- panic("arrow/ipc: nested type limit reached")
- }
- ctx.max--
- sub := ctx.loadArray(dt)
- ctx.max++
- return sub
-}
-
-func (ctx *arrayLoaderContext) loadNull() arrow.ArrayData {
- field := ctx.field()
- return array.NewData(arrow.Null, int(field.Length()), nil, nil, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadPrimitive(dt arrow.DataType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 2)
-
- switch field.Length() {
- case 0:
- buffers = append(buffers, nil)
- ctx.ibuffer++
- default:
- buffers = append(buffers, ctx.buffer())
- }
-
- defer memory.ReleaseBuffers(buffers)
-
- return array.NewData(dt, int(field.Length()), buffers, nil, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadBinary(dt arrow.DataType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 3)
- buffers = append(buffers, ctx.buffer(), ctx.buffer())
- defer memory.ReleaseBuffers(buffers)
-
- return array.NewData(dt, int(field.Length()), buffers, nil, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadBinaryView(dt arrow.DataType) arrow.ArrayData {
- nVariadicBufs := ctx.variadic()
- field, buffers := ctx.loadCommon(dt.ID(), 2+int(nVariadicBufs))
- buffers = append(buffers, ctx.buffer())
- for i := 0; i < int(nVariadicBufs); i++ {
- buffers = append(buffers, ctx.buffer())
- }
- defer memory.ReleaseBuffers(buffers)
-
- return array.NewData(dt, int(field.Length()), buffers, nil, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadFixedSizeBinary(dt *arrow.FixedSizeBinaryType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 2)
- buffers = append(buffers, ctx.buffer())
- defer memory.ReleaseBuffers(buffers)
-
- return array.NewData(dt, int(field.Length()), buffers, nil, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadMap(dt *arrow.MapType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 2)
- buffers = append(buffers, ctx.buffer())
- defer memory.ReleaseBuffers(buffers)
-
- sub := ctx.loadChild(dt.Elem())
- defer sub.Release()
-
- return array.NewData(dt, int(field.Length()), buffers, []arrow.ArrayData{sub}, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadList(dt arrow.ListLikeType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 2)
- buffers = append(buffers, ctx.buffer())
- defer memory.ReleaseBuffers(buffers)
-
- sub := ctx.loadChild(dt.Elem())
- defer sub.Release()
-
- return array.NewData(dt, int(field.Length()), buffers, []arrow.ArrayData{sub}, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadListView(dt arrow.VarLenListLikeType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 3)
- buffers = append(buffers, ctx.buffer(), ctx.buffer())
- defer memory.ReleaseBuffers(buffers)
-
- sub := ctx.loadChild(dt.Elem())
- defer sub.Release()
-
- return array.NewData(dt, int(field.Length()), buffers, []arrow.ArrayData{sub}, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadFixedSizeList(dt *arrow.FixedSizeListType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 1)
- defer memory.ReleaseBuffers(buffers)
-
- sub := ctx.loadChild(dt.Elem())
- defer sub.Release()
-
- return array.NewData(dt, int(field.Length()), buffers, []arrow.ArrayData{sub}, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadStruct(dt *arrow.StructType) arrow.ArrayData {
- field, buffers := ctx.loadCommon(dt.ID(), 1)
- defer memory.ReleaseBuffers(buffers)
-
- subs := make([]arrow.ArrayData, dt.NumFields())
- for i, f := range dt.Fields() {
- subs[i] = ctx.loadChild(f.Type)
- }
- defer func() {
- for i := range subs {
- subs[i].Release()
- }
- }()
-
- return array.NewData(dt, int(field.Length()), buffers, subs, int(field.NullCount()), 0)
-}
-
-func (ctx *arrayLoaderContext) loadUnion(dt arrow.UnionType) arrow.ArrayData {
- // Sparse unions have 2 buffers (a nil validity bitmap, and the type ids)
- nBuffers := 2
- // Dense unions have a third buffer, the offsets
- if dt.Mode() == arrow.DenseMode {
- nBuffers = 3
- }
-
- field, buffers := ctx.loadCommon(dt.ID(), nBuffers)
- if field.NullCount() != 0 && buffers[0] != nil {
- panic("arrow/ipc: cannot read pre-1.0.0 union array with top-level validity bitmap")
- }
-
- switch field.Length() {
- case 0:
- buffers = append(buffers, memory.NewBufferBytes([]byte{}))
- ctx.ibuffer++
- if dt.Mode() == arrow.DenseMode {
- buffers = append(buffers, nil)
- ctx.ibuffer++
- }
- default:
- buffers = append(buffers, ctx.buffer())
- if dt.Mode() == arrow.DenseMode {
- buffers = append(buffers, ctx.buffer())
- }
- }
-
- defer memory.ReleaseBuffers(buffers)
- subs := make([]arrow.ArrayData, dt.NumFields())
- for i, f := range dt.Fields() {
- subs[i] = ctx.loadChild(f.Type)
- }
- defer func() {
- for i := range subs {
- subs[i].Release()
- }
- }()
- return array.NewData(dt, int(field.Length()), buffers, subs, 0, 0)
-}
-
-func readDictionary(memo *dictutils.Memo, meta *memory.Buffer, body ReadAtSeeker, swapEndianness bool, mem memory.Allocator) (dictutils.Kind, error) {
- var (
- msg = flatbuf.GetRootAsMessage(meta.Bytes(), 0)
- md flatbuf.DictionaryBatch
- data flatbuf.RecordBatch
- codec decompressor
- )
- initFB(&md, msg.Header)
-
- md.Data(&data)
- bodyCompress := data.Compression(nil)
- if bodyCompress != nil {
- codec = getDecompressor(bodyCompress.Codec())
- defer codec.Close()
- }
-
- id := md.Id()
- // look up the dictionary value type, which must have been added to the
- // memo already before calling this function
- valueType, ok := memo.Type(id)
- if !ok {
- return 0, fmt.Errorf("arrow/ipc: no dictionary type found with id: %d", id)
- }
-
- ctx := &arrayLoaderContext{
- src: ipcSource{
- meta: &data,
- codec: codec,
- r: body,
- mem: mem,
- },
- memo: memo,
- max: kMaxNestingDepth,
- }
-
- dict := ctx.loadArray(valueType)
- defer dict.Release()
-
- if swapEndianness {
- swapEndianArrayData(dict.(*array.Data))
- }
-
- if md.IsDelta() {
- memo.AddDelta(id, dict)
- return dictutils.KindDelta, nil
- }
- if memo.AddOrReplace(id, dict) {
- return dictutils.KindNew, nil
- }
- return dictutils.KindReplacement, nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_writer.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_writer.go
deleted file mode 100644
index 55e4d7c2d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/file_writer.go
+++ /dev/null
@@ -1,394 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "encoding/binary"
- "fmt"
- "io"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal/dictutils"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// PayloadWriter is an interface for injecting a different payloadwriter
-// allowing more reusability with the Writer object with other scenarios,
-// such as with Flight data
-type PayloadWriter interface {
- Start() error
- WritePayload(Payload) error
- Close() error
-}
-
-type pwriter struct {
- w io.WriteSeeker
- pos int64
-
- schema *arrow.Schema
- dicts []fileBlock
- recs []fileBlock
-}
-
-func (w *pwriter) Start() error {
- var err error
-
- err = w.updatePos()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not update position while in start: %w", err)
- }
-
- // only necessary to align to 8-byte boundary at the start of the file
- _, err = w.Write(Magic)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not write magic Arrow bytes: %w", err)
- }
-
- err = w.align(kArrowIPCAlignment)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not align start block: %w", err)
- }
-
- return err
-}
-
-func (w *pwriter) WritePayload(p Payload) error {
- blk := fileBlock{Offset: w.pos, Meta: 0, Body: p.size}
- n, err := writeIPCPayload(w, p)
- if err != nil {
- return err
- }
-
- blk.Meta = int32(n)
-
- err = w.updatePos()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not update position while in write-payload: %w", err)
- }
-
- switch flatbuf.MessageHeader(p.msg) {
- case flatbuf.MessageHeaderDictionaryBatch:
- w.dicts = append(w.dicts, blk)
- case flatbuf.MessageHeaderRecordBatch:
- w.recs = append(w.recs, blk)
- }
-
- return nil
-}
-
-func (w *pwriter) Close() error {
- var err error
-
- // write file footer
- err = w.updatePos()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not update position while in close: %w", err)
- }
-
- pos := w.pos
- err = writeFileFooter(w.schema, w.dicts, w.recs, w)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not write file footer: %w", err)
- }
-
- // write file footer length
- err = w.updatePos() // not strictly needed as we passed w to writeFileFooter...
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not compute file footer length: %w", err)
- }
-
- size := w.pos - pos
- if size <= 0 {
- return fmt.Errorf("arrow/ipc: invalid file footer size (size=%d)", size)
- }
-
- buf := make([]byte, 4)
- binary.LittleEndian.PutUint32(buf, uint32(size))
- _, err = w.Write(buf)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not write file footer size: %w", err)
- }
-
- _, err = w.Write(Magic)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not write Arrow magic bytes: %w", err)
- }
-
- return nil
-}
-
-func (w *pwriter) updatePos() error {
- var err error
- w.pos, err = w.w.Seek(0, io.SeekCurrent)
- return err
-}
-
-func (w *pwriter) align(align int32) error {
- remainder := paddedLength(w.pos, align) - w.pos
- if remainder == 0 {
- return nil
- }
-
- _, err := w.Write(paddingBytes[:int(remainder)])
- return err
-}
-
-func (w *pwriter) Write(p []byte) (int, error) {
- n, err := w.w.Write(p)
- w.pos += int64(n)
- return n, err
-}
-
-func writeIPCPayload(w io.Writer, p Payload) (int, error) {
- n, err := writeMessage(p.meta, kArrowIPCAlignment, w)
- if err != nil {
- return n, err
- }
-
- // now write the buffers
- for _, buf := range p.body {
- var (
- size int64
- padding int64
- )
-
- // the buffer might be null if we are handling zero row lengths.
- if buf != nil {
- size = int64(buf.Len())
- padding = bitutil.CeilByte64(size) - size
- }
-
- if size > 0 {
- _, err = w.Write(buf.Bytes())
- if err != nil {
- return n, fmt.Errorf("arrow/ipc: could not write payload message body: %w", err)
- }
- }
-
- if padding > 0 {
- _, err = w.Write(paddingBytes[:padding])
- if err != nil {
- return n, fmt.Errorf("arrow/ipc: could not write payload message padding: %w", err)
- }
- }
- }
-
- return n, err
-}
-
-// Payload is the underlying message object which is passed to the payload writer
-// for actually writing out ipc messages
-type Payload struct {
- msg MessageType
- meta *memory.Buffer
- body []*memory.Buffer
- size int64 // length of body
-}
-
-// Meta returns the buffer containing the metadata for this payload,
-// callers must call Release on the buffer
-func (p *Payload) Meta() *memory.Buffer {
- if p.meta != nil {
- p.meta.Retain()
- }
- return p.meta
-}
-
-// SerializeBody serializes the body buffers and writes them to the provided
-// writer.
-func (p *Payload) SerializeBody(w io.Writer) error {
- for _, data := range p.body {
- if data == nil {
- continue
- }
-
- size := int64(data.Len())
- padding := bitutil.CeilByte64(size) - size
- if size > 0 {
- if _, err := w.Write(data.Bytes()); err != nil {
- return fmt.Errorf("arrow/ipc: could not write payload message body: %w", err)
- }
-
- if padding > 0 {
- if _, err := w.Write(paddingBytes[:padding]); err != nil {
- return fmt.Errorf("arrow/ipc: could not write payload message padding bytes: %w", err)
- }
- }
- }
- }
- return nil
-}
-
-func (p *Payload) Release() {
- if p.meta != nil {
- p.meta.Release()
- p.meta = nil
- }
- for i, b := range p.body {
- if b == nil {
- continue
- }
- b.Release()
- p.body[i] = nil
- }
-}
-
-type payloads []Payload
-
-func (ps payloads) Release() {
- for i := range ps {
- ps[i].Release()
- }
-}
-
-// FileWriter is an Arrow file writer.
-type FileWriter struct {
- w io.WriteSeeker
-
- mem memory.Allocator
-
- header struct {
- started bool
- offset int64
- }
-
- footer struct {
- written bool
- }
-
- pw PayloadWriter
-
- schema *arrow.Schema
- mapper dictutils.Mapper
- codec flatbuf.CompressionType
- compressNP int
- minSpaceSavings *float64
-
- // map of the last written dictionaries by id
- // so we can avoid writing the same dictionary over and over
- // also needed for correctness when writing IPC format which
- // does not allow replacements or deltas.
- lastWrittenDicts map[int64]arrow.Array
-}
-
-// NewFileWriter opens an Arrow file using the provided writer w.
-func NewFileWriter(w io.WriteSeeker, opts ...Option) (*FileWriter, error) {
- var (
- cfg = newConfig(opts...)
- err error
- )
-
- f := FileWriter{
- w: w,
- pw: &pwriter{w: w, schema: cfg.schema, pos: -1},
- mem: cfg.alloc,
- schema: cfg.schema,
- codec: cfg.codec,
- compressNP: cfg.compressNP,
- minSpaceSavings: cfg.minSpaceSavings,
- }
-
- pos, err := f.w.Seek(0, io.SeekCurrent)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not seek current position: %w", err)
- }
- f.header.offset = pos
-
- return &f, err
-}
-
-func (f *FileWriter) Close() error {
- err := f.checkStarted()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not write empty file: %w", err)
- }
-
- if f.footer.written {
- return nil
- }
-
- err = f.pw.Close()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not close payload writer: %w", err)
- }
- f.footer.written = true
-
- return nil
-}
-
-func (f *FileWriter) Write(rec arrow.Record) error {
- schema := rec.Schema()
- if schema == nil || !schema.Equal(f.schema) {
- return errInconsistentSchema
- }
-
- if err := f.checkStarted(); err != nil {
- return fmt.Errorf("arrow/ipc: could not write header: %w", err)
- }
-
- const allow64b = true
- var (
- data = Payload{msg: MessageRecordBatch}
- enc = newRecordEncoder(f.mem, 0, kMaxNestingDepth, allow64b, f.codec, f.compressNP, f.minSpaceSavings)
- )
- defer data.Release()
-
- err := writeDictionaryPayloads(f.mem, rec, true, false, &f.mapper, f.lastWrittenDicts, f.pw, enc)
- if err != nil {
- return fmt.Errorf("arrow/ipc: failure writing dictionary batches: %w", err)
- }
-
- enc.reset()
- if err := enc.Encode(&data, rec); err != nil {
- return fmt.Errorf("arrow/ipc: could not encode record to payload: %w", err)
- }
-
- return f.pw.WritePayload(data)
-}
-
-func (f *FileWriter) checkStarted() error {
- if !f.header.started {
- return f.start()
- }
- return nil
-}
-
-func (f *FileWriter) start() error {
- f.header.started = true
- err := f.pw.Start()
- if err != nil {
- return err
- }
-
- f.mapper.ImportSchema(f.schema)
- f.lastWrittenDicts = make(map[int64]arrow.Array)
-
- // write out schema payloads
- ps := payloadFromSchema(f.schema, f.mem, &f.mapper)
- defer ps.Release()
-
- for _, data := range ps {
- err = f.pw.WritePayload(data)
- if err != nil {
- return err
- }
- }
-
- return nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/ipc.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/ipc.go
deleted file mode 100644
index 8cf56e833..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/ipc.go
+++ /dev/null
@@ -1,199 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "io"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/arrio"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-const (
- errNotArrowFile = errString("arrow/ipc: not an Arrow file")
- errInconsistentFileMetadata = errString("arrow/ipc: file is smaller than indicated metadata size")
- errInconsistentSchema = errString("arrow/ipc: tried to write record batch with different schema")
- errMaxRecursion = errString("arrow/ipc: max recursion depth reached")
- errBigArray = errString("arrow/ipc: array larger than 2^31-1 in length")
-
- kArrowAlignment = 64 // buffers are padded to 64b boundaries (for SIMD)
- kTensorAlignment = 64 // tensors are padded to 64b boundaries
- kArrowIPCAlignment = 8 // align on 8b boundaries in IPC
-)
-
-var (
- paddingBytes [kArrowAlignment]byte
- kEOS = [8]byte{0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0, 0} // end of stream message
- kIPCContToken uint32 = 0xFFFFFFFF // 32b continuation indicator for FlatBuffers 8b alignment
-)
-
-func paddedLength(nbytes int64, alignment int32) int64 {
- align := int64(alignment)
- return ((nbytes + align - 1) / align) * align
-}
-
-type errString string
-
-func (s errString) Error() string {
- return string(s)
-}
-
-type ReadAtSeeker interface {
- io.Reader
- io.Seeker
- io.ReaderAt
-}
-
-type config struct {
- alloc memory.Allocator
- schema *arrow.Schema
- footer struct {
- offset int64
- }
- codec flatbuf.CompressionType
- compressNP int
- ensureNativeEndian bool
- noAutoSchema bool
- emitDictDeltas bool
- minSpaceSavings *float64
-}
-
-func newConfig(opts ...Option) *config {
- cfg := &config{
- alloc: memory.NewGoAllocator(),
- codec: -1, // uncompressed
- ensureNativeEndian: true,
- }
-
- for _, opt := range opts {
- opt(cfg)
- }
-
- return cfg
-}
-
-// Option is a functional option to configure opening or creating Arrow files
-// and streams.
-type Option func(*config)
-
-// WithFooterOffset specifies the Arrow footer position in bytes.
-func WithFooterOffset(offset int64) Option {
- return func(cfg *config) {
- cfg.footer.offset = offset
- }
-}
-
-// WithAllocator specifies the Arrow memory allocator used while building records.
-func WithAllocator(mem memory.Allocator) Option {
- return func(cfg *config) {
- cfg.alloc = mem
- }
-}
-
-// WithSchema specifies the Arrow schema to be used for reading or writing.
-func WithSchema(schema *arrow.Schema) Option {
- return func(cfg *config) {
- cfg.schema = schema
- }
-}
-
-// WithLZ4 tells the writer to use LZ4 Frame compression on the data
-// buffers before writing. Requires >= Arrow 1.0.0 to read/decompress
-func WithLZ4() Option {
- return func(cfg *config) {
- cfg.codec = flatbuf.CompressionTypeLZ4_FRAME
- }
-}
-
-// WithZstd tells the writer to use ZSTD compression on the data
-// buffers before writing. Requires >= Arrow 1.0.0 to read/decompress
-func WithZstd() Option {
- return func(cfg *config) {
- cfg.codec = flatbuf.CompressionTypeZSTD
- }
-}
-
-// WithCompressConcurrency specifies a number of goroutines to spin up for
-// concurrent compression of the body buffers when writing compress IPC records.
-// If n <= 1 then compression will be done serially without goroutine
-// parallelization. Default is 0.
-func WithCompressConcurrency(n int) Option {
- return func(cfg *config) {
- cfg.compressNP = n
- }
-}
-
-// WithEnsureNativeEndian specifies whether or not to automatically byte-swap
-// buffers with endian-sensitive data if the schema's endianness is not the
-// platform-native endianness. This includes all numeric types, temporal types,
-// decimal types, as well as the offset buffers of variable-sized binary and
-// list-like types.
-//
-// This is only relevant to ipc Reader objects, not to writers. This defaults
-// to true.
-func WithEnsureNativeEndian(v bool) Option {
- return func(cfg *config) {
- cfg.ensureNativeEndian = v
- }
-}
-
-// WithDelayedReadSchema alters the ipc.Reader behavior to delay attempting
-// to read the schema from the stream until the first call to Next instead
-// of immediately attempting to read a schema from the stream when created.
-func WithDelayReadSchema(v bool) Option {
- return func(cfg *config) {
- cfg.noAutoSchema = v
- }
-}
-
-// WithDictionaryDeltas specifies whether or not to emit dictionary deltas.
-func WithDictionaryDeltas(v bool) Option {
- return func(cfg *config) {
- cfg.emitDictDeltas = v
- }
-}
-
-// WithMinSpaceSavings specifies a percentage of space savings for
-// compression to be applied to buffers.
-//
-// Space savings is calculated as (1.0 - compressedSize / uncompressedSize).
-//
-// For example, if minSpaceSavings = 0.1, a 100-byte body buffer won't
-// undergo compression if its expected compressed size exceeds 90 bytes.
-// If this option is unset, compression will be used indiscriminately. If
-// no codec was supplied, this option is ignored.
-//
-// Values outside of the range [0,1] are handled as errors.
-//
-// Note that enabling this option may result in unreadable data for Arrow
-// Go and C++ versions prior to 12.0.0.
-func WithMinSpaceSavings(savings float64) Option {
- return func(cfg *config) {
- cfg.minSpaceSavings = &savings
- }
-}
-
-var (
- _ arrio.Reader = (*Reader)(nil)
- _ arrio.Writer = (*Writer)(nil)
- _ arrio.Reader = (*FileReader)(nil)
- _ arrio.Writer = (*FileWriter)(nil)
-
- _ arrio.ReaderAt = (*FileReader)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/message.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/message.go
deleted file mode 100644
index 5295c5df3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/message.go
+++ /dev/null
@@ -1,242 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "encoding/binary"
- "fmt"
- "io"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// MetadataVersion represents the Arrow metadata version.
-type MetadataVersion flatbuf.MetadataVersion
-
-const (
- MetadataV1 = MetadataVersion(flatbuf.MetadataVersionV1) // version for Arrow Format-0.1.0
- MetadataV2 = MetadataVersion(flatbuf.MetadataVersionV2) // version for Arrow Format-0.2.0
- MetadataV3 = MetadataVersion(flatbuf.MetadataVersionV3) // version for Arrow Format-0.3.0 to 0.7.1
- MetadataV4 = MetadataVersion(flatbuf.MetadataVersionV4) // version for >= Arrow Format-0.8.0
- MetadataV5 = MetadataVersion(flatbuf.MetadataVersionV5) // version for >= Arrow Format-1.0.0, backward compatible with v4
-)
-
-func (m MetadataVersion) String() string {
- if v, ok := flatbuf.EnumNamesMetadataVersion[flatbuf.MetadataVersion(m)]; ok {
- return v
- }
- return fmt.Sprintf("MetadataVersion(%d)", int16(m))
-}
-
-// MessageType represents the type of Message in an Arrow format.
-type MessageType flatbuf.MessageHeader
-
-const (
- MessageNone = MessageType(flatbuf.MessageHeaderNONE)
- MessageSchema = MessageType(flatbuf.MessageHeaderSchema)
- MessageDictionaryBatch = MessageType(flatbuf.MessageHeaderDictionaryBatch)
- MessageRecordBatch = MessageType(flatbuf.MessageHeaderRecordBatch)
- MessageTensor = MessageType(flatbuf.MessageHeaderTensor)
- MessageSparseTensor = MessageType(flatbuf.MessageHeaderSparseTensor)
-)
-
-func (m MessageType) String() string {
- if v, ok := flatbuf.EnumNamesMessageHeader[flatbuf.MessageHeader(m)]; ok {
- return v
- }
- return fmt.Sprintf("MessageType(%d)", int(m))
-}
-
-// Message is an IPC message, including metadata and body.
-type Message struct {
- refCount int64
- msg *flatbuf.Message
- meta *memory.Buffer
- body *memory.Buffer
-}
-
-// NewMessage creates a new message from the metadata and body buffers.
-// NewMessage panics if any of these buffers is nil.
-func NewMessage(meta, body *memory.Buffer) *Message {
- if meta == nil || body == nil {
- panic("arrow/ipc: nil buffers")
- }
- meta.Retain()
- body.Retain()
- return &Message{
- refCount: 1,
- msg: flatbuf.GetRootAsMessage(meta.Bytes(), 0),
- meta: meta,
- body: body,
- }
-}
-
-func newMessageFromFB(meta *flatbuf.Message, body *memory.Buffer) *Message {
- if meta == nil || body == nil {
- panic("arrow/ipc: nil buffers")
- }
- body.Retain()
- return &Message{
- refCount: 1,
- msg: meta,
- meta: memory.NewBufferBytes(meta.Table().Bytes),
- body: body,
- }
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (msg *Message) Retain() {
- atomic.AddInt64(&msg.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// Release may be called simultaneously from multiple goroutines.
-// When the reference count goes to zero, the memory is freed.
-func (msg *Message) Release() {
- debug.Assert(atomic.LoadInt64(&msg.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&msg.refCount, -1) == 0 {
- msg.meta.Release()
- msg.body.Release()
- msg.msg = nil
- msg.meta = nil
- msg.body = nil
- }
-}
-
-func (msg *Message) Version() MetadataVersion {
- return MetadataVersion(msg.msg.Version())
-}
-
-func (msg *Message) Type() MessageType {
- return MessageType(msg.msg.HeaderType())
-}
-
-func (msg *Message) BodyLen() int64 {
- return msg.msg.BodyLength()
-}
-
-type MessageReader interface {
- Message() (*Message, error)
- Release()
- Retain()
-}
-
-// MessageReader reads messages from an io.Reader.
-type messageReader struct {
- r io.Reader
-
- refCount int64
- msg *Message
-
- mem memory.Allocator
-}
-
-// NewMessageReader returns a reader that reads messages from an input stream.
-func NewMessageReader(r io.Reader, opts ...Option) MessageReader {
- cfg := newConfig()
- for _, opt := range opts {
- opt(cfg)
- }
-
- return &messageReader{r: r, refCount: 1, mem: cfg.alloc}
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (r *messageReader) Retain() {
- atomic.AddInt64(&r.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (r *messageReader) Release() {
- debug.Assert(atomic.LoadInt64(&r.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&r.refCount, -1) == 0 {
- if r.msg != nil {
- r.msg.Release()
- r.msg = nil
- }
- }
-}
-
-// Message returns the current message that has been extracted from the
-// underlying stream.
-// It is valid until the next call to Message.
-func (r *messageReader) Message() (*Message, error) {
- var buf = make([]byte, 4)
- _, err := io.ReadFull(r.r, buf)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read continuation indicator: %w", err)
- }
- var (
- cid = binary.LittleEndian.Uint32(buf)
- msgLen int32
- )
- switch cid {
- case 0:
- // EOS message.
- return nil, io.EOF // FIXME(sbinet): send nil instead? or a special EOS error?
- case kIPCContToken:
- _, err = io.ReadFull(r.r, buf)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read message length: %w", err)
- }
- msgLen = int32(binary.LittleEndian.Uint32(buf))
- if msgLen == 0 {
- // optional 0 EOS control message
- return nil, io.EOF // FIXME(sbinet): send nil instead? or a special EOS error?
- }
-
- default:
- // ARROW-6314: backwards compatibility for reading old IPC
- // messages produced prior to version 0.15.0
- msgLen = int32(cid)
- }
-
- buf = make([]byte, msgLen)
- _, err = io.ReadFull(r.r, buf)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read message metadata: %w", err)
- }
-
- meta := flatbuf.GetRootAsMessage(buf, 0)
- bodyLen := meta.BodyLength()
-
- body := memory.NewResizableBuffer(r.mem)
- defer body.Release()
- body.Resize(int(bodyLen))
-
- _, err = io.ReadFull(r.r, body.Bytes())
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read message body: %w", err)
- }
-
- if r.msg != nil {
- r.msg.Release()
- r.msg = nil
- }
- r.msg = newMessageFromFB(meta, body)
-
- return r.msg, nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/metadata.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/metadata.go
deleted file mode 100644
index 7a7f9b3e2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/metadata.go
+++ /dev/null
@@ -1,1317 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "sort"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal/dictutils"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
- flatbuffers "github.com/google/flatbuffers/go"
-)
-
-// Magic string identifying an Apache Arrow file.
-var Magic = []byte("ARROW1")
-
-const (
- currentMetadataVersion = MetadataV5
- minMetadataVersion = MetadataV4
-
- // constants for the extension type metadata keys for the type name and
- // any extension metadata to be passed to deserialize.
- ExtensionTypeKeyName = "ARROW:extension:name"
- ExtensionMetadataKeyName = "ARROW:extension:metadata"
-
- // ARROW-109: We set this number arbitrarily to help catch user mistakes. For
- // deeply nested schemas, it is expected the user will indicate explicitly the
- // maximum allowed recursion depth
- kMaxNestingDepth = 64
-)
-
-type startVecFunc func(b *flatbuffers.Builder, n int) flatbuffers.UOffsetT
-
-type fieldMetadata struct {
- Len int64
- Nulls int64
- Offset int64
-}
-
-type bufferMetadata struct {
- Offset int64 // relative offset into the memory page to the starting byte of the buffer
- Len int64 // absolute length in bytes of the buffer
-}
-
-type fileBlock struct {
- Offset int64
- Meta int32
- Body int64
-
- r io.ReaderAt
- mem memory.Allocator
-}
-
-func fileBlocksToFB(b *flatbuffers.Builder, blocks []fileBlock, start startVecFunc) flatbuffers.UOffsetT {
- start(b, len(blocks))
- for i := len(blocks) - 1; i >= 0; i-- {
- blk := blocks[i]
- flatbuf.CreateBlock(b, blk.Offset, blk.Meta, blk.Body)
- }
-
- return b.EndVector(len(blocks))
-}
-
-func (blk fileBlock) NewMessage() (*Message, error) {
- var (
- err error
- buf []byte
- body *memory.Buffer
- meta *memory.Buffer
- r = blk.section()
- )
-
- meta = memory.NewResizableBuffer(blk.mem)
- meta.Resize(int(blk.Meta))
- defer meta.Release()
-
- buf = meta.Bytes()
- _, err = io.ReadFull(r, buf)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read message metadata: %w", err)
- }
-
- prefix := 0
- switch binary.LittleEndian.Uint32(buf) {
- case 0:
- case kIPCContToken:
- prefix = 8
- default:
- // ARROW-6314: backwards compatibility for reading old IPC
- // messages produced prior to version 0.15.0
- prefix = 4
- }
-
- // drop buf-size already known from blk.Meta
- meta = memory.SliceBuffer(meta, prefix, int(blk.Meta)-prefix)
- defer meta.Release()
-
- body = memory.NewResizableBuffer(blk.mem)
- defer body.Release()
- body.Resize(int(blk.Body))
- buf = body.Bytes()
- _, err = io.ReadFull(r, buf)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not read message body: %w", err)
- }
-
- return NewMessage(meta, body), nil
-}
-
-func (blk fileBlock) section() io.Reader {
- return io.NewSectionReader(blk.r, blk.Offset, int64(blk.Meta)+blk.Body)
-}
-
-func unitFromFB(unit flatbuf.TimeUnit) arrow.TimeUnit {
- switch unit {
- case flatbuf.TimeUnitSECOND:
- return arrow.Second
- case flatbuf.TimeUnitMILLISECOND:
- return arrow.Millisecond
- case flatbuf.TimeUnitMICROSECOND:
- return arrow.Microsecond
- case flatbuf.TimeUnitNANOSECOND:
- return arrow.Nanosecond
- default:
- panic(fmt.Errorf("arrow/ipc: invalid flatbuf.TimeUnit(%d) value", unit))
- }
-}
-
-func unitToFB(unit arrow.TimeUnit) flatbuf.TimeUnit {
- switch unit {
- case arrow.Second:
- return flatbuf.TimeUnitSECOND
- case arrow.Millisecond:
- return flatbuf.TimeUnitMILLISECOND
- case arrow.Microsecond:
- return flatbuf.TimeUnitMICROSECOND
- case arrow.Nanosecond:
- return flatbuf.TimeUnitNANOSECOND
- default:
- panic(fmt.Errorf("arrow/ipc: invalid arrow.TimeUnit(%d) value", unit))
- }
-}
-
-// initFB is a helper function to handle flatbuffers' polymorphism.
-func initFB(t interface {
- Table() flatbuffers.Table
- Init([]byte, flatbuffers.UOffsetT)
-}, f func(tbl *flatbuffers.Table) bool) {
- tbl := t.Table()
- if !f(&tbl) {
- panic(fmt.Errorf("arrow/ipc: could not initialize %T from flatbuffer", t))
- }
- t.Init(tbl.Bytes, tbl.Pos)
-}
-
-func fieldFromFB(field *flatbuf.Field, pos dictutils.FieldPos, memo *dictutils.Memo) (arrow.Field, error) {
- var (
- err error
- o arrow.Field
- )
-
- o.Name = string(field.Name())
- o.Nullable = field.Nullable()
- o.Metadata, err = metadataFromFB(field)
- if err != nil {
- return o, err
- }
-
- n := field.ChildrenLength()
- children := make([]arrow.Field, n)
- for i := range children {
- var childFB flatbuf.Field
- if !field.Children(&childFB, i) {
- return o, fmt.Errorf("arrow/ipc: could not load field child %d", i)
-
- }
- child, err := fieldFromFB(&childFB, pos.Child(int32(i)), memo)
- if err != nil {
- return o, fmt.Errorf("arrow/ipc: could not convert field child %d: %w", i, err)
- }
- children[i] = child
- }
-
- o.Type, err = typeFromFB(field, pos, children, &o.Metadata, memo)
- if err != nil {
- return o, fmt.Errorf("arrow/ipc: could not convert field type: %w", err)
- }
-
- return o, nil
-}
-
-func fieldToFB(b *flatbuffers.Builder, pos dictutils.FieldPos, field arrow.Field, memo *dictutils.Mapper) flatbuffers.UOffsetT {
- var visitor = fieldVisitor{b: b, memo: memo, pos: pos, meta: make(map[string]string)}
- return visitor.result(field)
-}
-
-type fieldVisitor struct {
- b *flatbuffers.Builder
- memo *dictutils.Mapper
- pos dictutils.FieldPos
- dtype flatbuf.Type
- offset flatbuffers.UOffsetT
- kids []flatbuffers.UOffsetT
- meta map[string]string
-}
-
-func (fv *fieldVisitor) visit(field arrow.Field) {
- dt := field.Type
- switch dt := dt.(type) {
- case *arrow.NullType:
- fv.dtype = flatbuf.TypeNull
- flatbuf.NullStart(fv.b)
- fv.offset = flatbuf.NullEnd(fv.b)
-
- case *arrow.BooleanType:
- fv.dtype = flatbuf.TypeBool
- flatbuf.BoolStart(fv.b)
- fv.offset = flatbuf.BoolEnd(fv.b)
-
- case *arrow.Uint8Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), false)
-
- case *arrow.Uint16Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), false)
-
- case *arrow.Uint32Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), false)
-
- case *arrow.Uint64Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), false)
-
- case *arrow.Int8Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), true)
-
- case *arrow.Int16Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), true)
-
- case *arrow.Int32Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), true)
-
- case *arrow.Int64Type:
- fv.dtype = flatbuf.TypeInt
- fv.offset = intToFB(fv.b, int32(dt.BitWidth()), true)
-
- case *arrow.Float16Type:
- fv.dtype = flatbuf.TypeFloatingPoint
- fv.offset = floatToFB(fv.b, int32(dt.BitWidth()))
-
- case *arrow.Float32Type:
- fv.dtype = flatbuf.TypeFloatingPoint
- fv.offset = floatToFB(fv.b, int32(dt.BitWidth()))
-
- case *arrow.Float64Type:
- fv.dtype = flatbuf.TypeFloatingPoint
- fv.offset = floatToFB(fv.b, int32(dt.BitWidth()))
-
- case *arrow.Decimal128Type:
- fv.dtype = flatbuf.TypeDecimal
- flatbuf.DecimalStart(fv.b)
- flatbuf.DecimalAddPrecision(fv.b, dt.Precision)
- flatbuf.DecimalAddScale(fv.b, dt.Scale)
- flatbuf.DecimalAddBitWidth(fv.b, 128)
- fv.offset = flatbuf.DecimalEnd(fv.b)
-
- case *arrow.Decimal256Type:
- fv.dtype = flatbuf.TypeDecimal
- flatbuf.DecimalStart(fv.b)
- flatbuf.DecimalAddPrecision(fv.b, dt.Precision)
- flatbuf.DecimalAddScale(fv.b, dt.Scale)
- flatbuf.DecimalAddBitWidth(fv.b, 256)
- fv.offset = flatbuf.DecimalEnd(fv.b)
-
- case *arrow.FixedSizeBinaryType:
- fv.dtype = flatbuf.TypeFixedSizeBinary
- flatbuf.FixedSizeBinaryStart(fv.b)
- flatbuf.FixedSizeBinaryAddByteWidth(fv.b, int32(dt.ByteWidth))
- fv.offset = flatbuf.FixedSizeBinaryEnd(fv.b)
-
- case *arrow.BinaryType:
- fv.dtype = flatbuf.TypeBinary
- flatbuf.BinaryStart(fv.b)
- fv.offset = flatbuf.BinaryEnd(fv.b)
-
- case *arrow.LargeBinaryType:
- fv.dtype = flatbuf.TypeLargeBinary
- flatbuf.LargeBinaryStart(fv.b)
- fv.offset = flatbuf.LargeBinaryEnd(fv.b)
-
- case *arrow.StringType:
- fv.dtype = flatbuf.TypeUtf8
- flatbuf.Utf8Start(fv.b)
- fv.offset = flatbuf.Utf8End(fv.b)
-
- case *arrow.LargeStringType:
- fv.dtype = flatbuf.TypeLargeUtf8
- flatbuf.LargeUtf8Start(fv.b)
- fv.offset = flatbuf.LargeUtf8End(fv.b)
-
- case *arrow.BinaryViewType:
- fv.dtype = flatbuf.TypeBinaryView
- flatbuf.BinaryViewStart(fv.b)
- fv.offset = flatbuf.BinaryViewEnd(fv.b)
-
- case *arrow.StringViewType:
- fv.dtype = flatbuf.TypeUtf8View
- flatbuf.Utf8ViewStart(fv.b)
- fv.offset = flatbuf.Utf8ViewEnd(fv.b)
-
- case *arrow.Date32Type:
- fv.dtype = flatbuf.TypeDate
- flatbuf.DateStart(fv.b)
- flatbuf.DateAddUnit(fv.b, flatbuf.DateUnitDAY)
- fv.offset = flatbuf.DateEnd(fv.b)
-
- case *arrow.Date64Type:
- fv.dtype = flatbuf.TypeDate
- flatbuf.DateStart(fv.b)
- flatbuf.DateAddUnit(fv.b, flatbuf.DateUnitMILLISECOND)
- fv.offset = flatbuf.DateEnd(fv.b)
-
- case *arrow.Time32Type:
- fv.dtype = flatbuf.TypeTime
- flatbuf.TimeStart(fv.b)
- flatbuf.TimeAddUnit(fv.b, unitToFB(dt.Unit))
- flatbuf.TimeAddBitWidth(fv.b, 32)
- fv.offset = flatbuf.TimeEnd(fv.b)
-
- case *arrow.Time64Type:
- fv.dtype = flatbuf.TypeTime
- flatbuf.TimeStart(fv.b)
- flatbuf.TimeAddUnit(fv.b, unitToFB(dt.Unit))
- flatbuf.TimeAddBitWidth(fv.b, 64)
- fv.offset = flatbuf.TimeEnd(fv.b)
-
- case *arrow.TimestampType:
- fv.dtype = flatbuf.TypeTimestamp
- unit := unitToFB(dt.Unit)
- var tz flatbuffers.UOffsetT
- if dt.TimeZone != "" {
- tz = fv.b.CreateString(dt.TimeZone)
- }
- flatbuf.TimestampStart(fv.b)
- flatbuf.TimestampAddUnit(fv.b, unit)
- flatbuf.TimestampAddTimezone(fv.b, tz)
- fv.offset = flatbuf.TimestampEnd(fv.b)
-
- case *arrow.StructType:
- fv.dtype = flatbuf.TypeStruct_
- offsets := make([]flatbuffers.UOffsetT, dt.NumFields())
- for i, field := range dt.Fields() {
- offsets[i] = fieldToFB(fv.b, fv.pos.Child(int32(i)), field, fv.memo)
- }
- flatbuf.Struct_Start(fv.b)
- for i := len(offsets) - 1; i >= 0; i-- {
- fv.b.PrependUOffsetT(offsets[i])
- }
- fv.offset = flatbuf.Struct_End(fv.b)
- fv.kids = append(fv.kids, offsets...)
-
- case *arrow.ListType:
- fv.dtype = flatbuf.TypeList
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.ListStart(fv.b)
- fv.offset = flatbuf.ListEnd(fv.b)
-
- case *arrow.LargeListType:
- fv.dtype = flatbuf.TypeLargeList
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.LargeListStart(fv.b)
- fv.offset = flatbuf.LargeListEnd(fv.b)
-
- case *arrow.ListViewType:
- fv.dtype = flatbuf.TypeListView
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.ListViewStart(fv.b)
- fv.offset = flatbuf.ListViewEnd(fv.b)
-
- case *arrow.LargeListViewType:
- fv.dtype = flatbuf.TypeLargeListView
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.LargeListViewStart(fv.b)
- fv.offset = flatbuf.LargeListViewEnd(fv.b)
-
- case *arrow.FixedSizeListType:
- fv.dtype = flatbuf.TypeFixedSizeList
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.FixedSizeListStart(fv.b)
- flatbuf.FixedSizeListAddListSize(fv.b, dt.Len())
- fv.offset = flatbuf.FixedSizeListEnd(fv.b)
-
- case *arrow.MonthIntervalType:
- fv.dtype = flatbuf.TypeInterval
- flatbuf.IntervalStart(fv.b)
- flatbuf.IntervalAddUnit(fv.b, flatbuf.IntervalUnitYEAR_MONTH)
- fv.offset = flatbuf.IntervalEnd(fv.b)
-
- case *arrow.DayTimeIntervalType:
- fv.dtype = flatbuf.TypeInterval
- flatbuf.IntervalStart(fv.b)
- flatbuf.IntervalAddUnit(fv.b, flatbuf.IntervalUnitDAY_TIME)
- fv.offset = flatbuf.IntervalEnd(fv.b)
-
- case *arrow.MonthDayNanoIntervalType:
- fv.dtype = flatbuf.TypeInterval
- flatbuf.IntervalStart(fv.b)
- flatbuf.IntervalAddUnit(fv.b, flatbuf.IntervalUnitMONTH_DAY_NANO)
- fv.offset = flatbuf.IntervalEnd(fv.b)
-
- case *arrow.DurationType:
- fv.dtype = flatbuf.TypeDuration
- unit := unitToFB(dt.Unit)
- flatbuf.DurationStart(fv.b)
- flatbuf.DurationAddUnit(fv.b, unit)
- fv.offset = flatbuf.DurationEnd(fv.b)
-
- case *arrow.MapType:
- fv.dtype = flatbuf.TypeMap
- fv.kids = append(fv.kids, fieldToFB(fv.b, fv.pos.Child(0), dt.ElemField(), fv.memo))
- flatbuf.MapStart(fv.b)
- flatbuf.MapAddKeysSorted(fv.b, dt.KeysSorted)
- fv.offset = flatbuf.MapEnd(fv.b)
-
- case *arrow.RunEndEncodedType:
- fv.dtype = flatbuf.TypeRunEndEncoded
- var offsets [2]flatbuffers.UOffsetT
- offsets[0] = fieldToFB(fv.b, fv.pos.Child(0),
- arrow.Field{Name: "run_ends", Type: dt.RunEnds()}, fv.memo)
- offsets[1] = fieldToFB(fv.b, fv.pos.Child(1),
- arrow.Field{Name: "values", Type: dt.Encoded(), Nullable: true}, fv.memo)
- flatbuf.RunEndEncodedStart(fv.b)
- fv.b.PrependUOffsetT(offsets[1])
- fv.b.PrependUOffsetT(offsets[0])
- fv.offset = flatbuf.RunEndEncodedEnd(fv.b)
- fv.kids = append(fv.kids, offsets[0], offsets[1])
-
- case arrow.ExtensionType:
- field.Type = dt.StorageType()
- fv.visit(field)
- fv.meta[ExtensionTypeKeyName] = dt.ExtensionName()
- fv.meta[ExtensionMetadataKeyName] = string(dt.Serialize())
-
- case *arrow.DictionaryType:
- field.Type = dt.ValueType
- fv.visit(field)
-
- case arrow.UnionType:
- fv.dtype = flatbuf.TypeUnion
- offsets := make([]flatbuffers.UOffsetT, dt.NumFields())
- for i, field := range dt.Fields() {
- offsets[i] = fieldToFB(fv.b, fv.pos.Child(int32(i)), field, fv.memo)
- }
-
- codes := dt.TypeCodes()
- flatbuf.UnionStartTypeIdsVector(fv.b, len(codes))
-
- for i := len(codes) - 1; i >= 0; i-- {
- fv.b.PlaceInt32(int32(codes[i]))
- }
- fbTypeIDs := fv.b.EndVector(len(dt.TypeCodes()))
- flatbuf.UnionStart(fv.b)
- switch dt.Mode() {
- case arrow.SparseMode:
- flatbuf.UnionAddMode(fv.b, flatbuf.UnionModeSparse)
- case arrow.DenseMode:
- flatbuf.UnionAddMode(fv.b, flatbuf.UnionModeDense)
- default:
- panic("invalid union mode")
- }
- flatbuf.UnionAddTypeIds(fv.b, fbTypeIDs)
- fv.offset = flatbuf.UnionEnd(fv.b)
- fv.kids = append(fv.kids, offsets...)
-
- default:
- err := fmt.Errorf("arrow/ipc: invalid data type %v", dt)
- panic(err) // FIXME(sbinet): implement all data-types.
- }
-}
-
-func (fv *fieldVisitor) result(field arrow.Field) flatbuffers.UOffsetT {
- nameFB := fv.b.CreateString(field.Name)
-
- fv.visit(field)
-
- flatbuf.FieldStartChildrenVector(fv.b, len(fv.kids))
- for i := len(fv.kids) - 1; i >= 0; i-- {
- fv.b.PrependUOffsetT(fv.kids[i])
- }
- kidsFB := fv.b.EndVector(len(fv.kids))
-
- storageType := field.Type
- if storageType.ID() == arrow.EXTENSION {
- storageType = storageType.(arrow.ExtensionType).StorageType()
- }
-
- var dictFB flatbuffers.UOffsetT
- if storageType.ID() == arrow.DICTIONARY {
- idxType := field.Type.(*arrow.DictionaryType).IndexType.(arrow.FixedWidthDataType)
-
- dictID, err := fv.memo.GetFieldID(fv.pos.Path())
- if err != nil {
- panic(err)
- }
- var signed bool
- switch idxType.ID() {
- case arrow.UINT8, arrow.UINT16, arrow.UINT32, arrow.UINT64:
- signed = false
- case arrow.INT8, arrow.INT16, arrow.INT32, arrow.INT64:
- signed = true
- }
- indexTypeOffset := intToFB(fv.b, int32(idxType.BitWidth()), signed)
- flatbuf.DictionaryEncodingStart(fv.b)
- flatbuf.DictionaryEncodingAddId(fv.b, dictID)
- flatbuf.DictionaryEncodingAddIndexType(fv.b, indexTypeOffset)
- flatbuf.DictionaryEncodingAddIsOrdered(fv.b, field.Type.(*arrow.DictionaryType).Ordered)
- dictFB = flatbuf.DictionaryEncodingEnd(fv.b)
- }
-
- var (
- metaFB flatbuffers.UOffsetT
- kvs []flatbuffers.UOffsetT
- )
- for i, k := range field.Metadata.Keys() {
- v := field.Metadata.Values()[i]
- kk := fv.b.CreateString(k)
- vv := fv.b.CreateString(v)
- flatbuf.KeyValueStart(fv.b)
- flatbuf.KeyValueAddKey(fv.b, kk)
- flatbuf.KeyValueAddValue(fv.b, vv)
- kvs = append(kvs, flatbuf.KeyValueEnd(fv.b))
- }
- {
- keys := make([]string, 0, len(fv.meta))
- for k := range fv.meta {
- keys = append(keys, k)
- }
- sort.Strings(keys)
- for _, k := range keys {
- v := fv.meta[k]
- kk := fv.b.CreateString(k)
- vv := fv.b.CreateString(v)
- flatbuf.KeyValueStart(fv.b)
- flatbuf.KeyValueAddKey(fv.b, kk)
- flatbuf.KeyValueAddValue(fv.b, vv)
- kvs = append(kvs, flatbuf.KeyValueEnd(fv.b))
- }
- }
- if len(kvs) > 0 {
- flatbuf.FieldStartCustomMetadataVector(fv.b, len(kvs))
- for i := len(kvs) - 1; i >= 0; i-- {
- fv.b.PrependUOffsetT(kvs[i])
- }
- metaFB = fv.b.EndVector(len(kvs))
- }
-
- flatbuf.FieldStart(fv.b)
- flatbuf.FieldAddName(fv.b, nameFB)
- flatbuf.FieldAddNullable(fv.b, field.Nullable)
- flatbuf.FieldAddTypeType(fv.b, fv.dtype)
- flatbuf.FieldAddType(fv.b, fv.offset)
- flatbuf.FieldAddDictionary(fv.b, dictFB)
- flatbuf.FieldAddChildren(fv.b, kidsFB)
- flatbuf.FieldAddCustomMetadata(fv.b, metaFB)
-
- offset := flatbuf.FieldEnd(fv.b)
-
- return offset
-}
-
-func typeFromFB(field *flatbuf.Field, pos dictutils.FieldPos, children []arrow.Field, md *arrow.Metadata, memo *dictutils.Memo) (arrow.DataType, error) {
- var data flatbuffers.Table
- if !field.Type(&data) {
- return nil, fmt.Errorf("arrow/ipc: could not load field type data")
- }
-
- dt, err := concreteTypeFromFB(field.TypeType(), data, children)
- if err != nil {
- return dt, err
- }
-
- var (
- dictID = int64(-1)
- dictValueType arrow.DataType
- encoding = field.Dictionary(nil)
- )
- if encoding != nil {
- var idt flatbuf.Int
- encoding.IndexType(&idt)
- idxType, err := intFromFB(idt)
- if err != nil {
- return nil, err
- }
-
- dictValueType = dt
- dt = &arrow.DictionaryType{IndexType: idxType, ValueType: dictValueType, Ordered: encoding.IsOrdered()}
- dictID = encoding.Id()
-
- if err = memo.Mapper.AddField(dictID, pos.Path()); err != nil {
- return dt, err
- }
- if err = memo.AddType(dictID, dictValueType); err != nil {
- return dt, err
- }
-
- }
-
- // look for extension metadata in custom metadata field.
- if md.Len() > 0 {
- i := md.FindKey(ExtensionTypeKeyName)
- if i < 0 {
- return dt, err
- }
-
- extType := arrow.GetExtensionType(md.Values()[i])
- if extType == nil {
- // if the extension type is unknown, we do not error here.
- // simply return the storage type.
- return dt, err
- }
-
- var (
- data string
- dataIdx int
- )
-
- if dataIdx = md.FindKey(ExtensionMetadataKeyName); dataIdx >= 0 {
- data = md.Values()[dataIdx]
- }
-
- dt, err = extType.Deserialize(dt, data)
- if err != nil {
- return dt, err
- }
-
- mdkeys := md.Keys()
- mdvals := md.Values()
- if dataIdx < 0 {
- // if there was no extension metadata, just the name, we only have to
- // remove the extension name metadata key/value to ensure roundtrip
- // metadata consistency
- *md = arrow.NewMetadata(append(mdkeys[:i], mdkeys[i+1:]...), append(mdvals[:i], mdvals[i+1:]...))
- } else {
- // if there was extension metadata, we need to remove both the type name
- // and the extension metadata keys and values.
- newkeys := make([]string, 0, md.Len()-2)
- newvals := make([]string, 0, md.Len()-2)
- for j := range mdkeys {
- if j != i && j != dataIdx { // copy everything except the extension metadata keys/values
- newkeys = append(newkeys, mdkeys[j])
- newvals = append(newvals, mdvals[j])
- }
- }
- *md = arrow.NewMetadata(newkeys, newvals)
- }
- }
-
- return dt, err
-}
-
-func concreteTypeFromFB(typ flatbuf.Type, data flatbuffers.Table, children []arrow.Field) (arrow.DataType, error) {
- switch typ {
- case flatbuf.TypeNONE:
- return nil, fmt.Errorf("arrow/ipc: Type metadata cannot be none")
-
- case flatbuf.TypeNull:
- return arrow.Null, nil
-
- case flatbuf.TypeInt:
- var dt flatbuf.Int
- dt.Init(data.Bytes, data.Pos)
- return intFromFB(dt)
-
- case flatbuf.TypeFloatingPoint:
- var dt flatbuf.FloatingPoint
- dt.Init(data.Bytes, data.Pos)
- return floatFromFB(dt)
-
- case flatbuf.TypeDecimal:
- var dt flatbuf.Decimal
- dt.Init(data.Bytes, data.Pos)
- return decimalFromFB(dt)
-
- case flatbuf.TypeBinary:
- return arrow.BinaryTypes.Binary, nil
-
- case flatbuf.TypeFixedSizeBinary:
- var dt flatbuf.FixedSizeBinary
- dt.Init(data.Bytes, data.Pos)
- return &arrow.FixedSizeBinaryType{ByteWidth: int(dt.ByteWidth())}, nil
-
- case flatbuf.TypeUtf8:
- return arrow.BinaryTypes.String, nil
-
- case flatbuf.TypeLargeBinary:
- return arrow.BinaryTypes.LargeBinary, nil
-
- case flatbuf.TypeLargeUtf8:
- return arrow.BinaryTypes.LargeString, nil
-
- case flatbuf.TypeUtf8View:
- return arrow.BinaryTypes.StringView, nil
-
- case flatbuf.TypeBinaryView:
- return arrow.BinaryTypes.BinaryView, nil
-
- case flatbuf.TypeBool:
- return arrow.FixedWidthTypes.Boolean, nil
-
- case flatbuf.TypeList:
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: List must have exactly 1 child field (got=%d)", len(children))
- }
- dt := arrow.ListOfField(children[0])
- return dt, nil
-
- case flatbuf.TypeLargeList:
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: LargeList must have exactly 1 child field (got=%d)", len(children))
- }
- dt := arrow.LargeListOfField(children[0])
- return dt, nil
-
- case flatbuf.TypeListView:
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: ListView must have exactly 1 child field (got=%d)", len(children))
- }
- dt := arrow.ListViewOfField(children[0])
- return dt, nil
-
- case flatbuf.TypeLargeListView:
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: LargeListView must have exactly 1 child field (got=%d)", len(children))
- }
- dt := arrow.LargeListViewOfField(children[0])
- return dt, nil
-
- case flatbuf.TypeFixedSizeList:
- var dt flatbuf.FixedSizeList
- dt.Init(data.Bytes, data.Pos)
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: FixedSizeList must have exactly 1 child field (got=%d)", len(children))
- }
- ret := arrow.FixedSizeListOfField(dt.ListSize(), children[0])
- return ret, nil
-
- case flatbuf.TypeStruct_:
- return arrow.StructOf(children...), nil
-
- case flatbuf.TypeUnion:
- var dt flatbuf.Union
- dt.Init(data.Bytes, data.Pos)
- var (
- mode arrow.UnionMode
- typeIDs []arrow.UnionTypeCode
- )
-
- switch dt.Mode() {
- case flatbuf.UnionModeSparse:
- mode = arrow.SparseMode
- case flatbuf.UnionModeDense:
- mode = arrow.DenseMode
- }
-
- typeIDLen := dt.TypeIdsLength()
-
- if typeIDLen == 0 {
- for i := range children {
- typeIDs = append(typeIDs, int8(i))
- }
- } else {
- for i := 0; i < typeIDLen; i++ {
- id := dt.TypeIds(i)
- code := arrow.UnionTypeCode(id)
- if int32(code) != id {
- return nil, errors.New("union type id out of bounds")
- }
- typeIDs = append(typeIDs, code)
- }
- }
-
- return arrow.UnionOf(mode, children, typeIDs), nil
-
- case flatbuf.TypeTime:
- var dt flatbuf.Time
- dt.Init(data.Bytes, data.Pos)
- return timeFromFB(dt)
-
- case flatbuf.TypeTimestamp:
- var dt flatbuf.Timestamp
- dt.Init(data.Bytes, data.Pos)
- return timestampFromFB(dt)
-
- case flatbuf.TypeDate:
- var dt flatbuf.Date
- dt.Init(data.Bytes, data.Pos)
- return dateFromFB(dt)
-
- case flatbuf.TypeInterval:
- var dt flatbuf.Interval
- dt.Init(data.Bytes, data.Pos)
- return intervalFromFB(dt)
-
- case flatbuf.TypeDuration:
- var dt flatbuf.Duration
- dt.Init(data.Bytes, data.Pos)
- return durationFromFB(dt)
-
- case flatbuf.TypeMap:
- if len(children) != 1 {
- return nil, fmt.Errorf("arrow/ipc: Map must have exactly 1 child field")
- }
-
- if children[0].Nullable || children[0].Type.ID() != arrow.STRUCT || len(children[0].Type.(*arrow.StructType).Fields()) != 2 {
- return nil, fmt.Errorf("arrow/ipc: Map's key-item pairs must be non-nullable structs")
- }
-
- pairType := children[0].Type.(*arrow.StructType)
- if pairType.Field(0).Nullable {
- return nil, fmt.Errorf("arrow/ipc: Map's keys must be non-nullable")
- }
-
- var dt flatbuf.Map
- dt.Init(data.Bytes, data.Pos)
- ret := arrow.MapOf(pairType.Field(0).Type, pairType.Field(1).Type)
- ret.SetItemNullable(pairType.Field(1).Nullable)
- ret.KeysSorted = dt.KeysSorted()
- return ret, nil
-
- case flatbuf.TypeRunEndEncoded:
- if len(children) != 2 {
- return nil, fmt.Errorf("%w: arrow/ipc: RunEndEncoded must have exactly 2 child fields", arrow.ErrInvalid)
- }
- switch children[0].Type.ID() {
- case arrow.INT16, arrow.INT32, arrow.INT64:
- default:
- return nil, fmt.Errorf("%w: arrow/ipc: run-end encoded run_ends field must be one of int16, int32, or int64 type", arrow.ErrInvalid)
- }
- return arrow.RunEndEncodedOf(children[0].Type, children[1].Type), nil
-
- default:
- panic(fmt.Errorf("arrow/ipc: type %v not implemented", flatbuf.EnumNamesType[typ]))
- }
-}
-
-func intFromFB(data flatbuf.Int) (arrow.DataType, error) {
- bw := data.BitWidth()
- if bw > 64 {
- return nil, fmt.Errorf("arrow/ipc: integers with more than 64 bits not implemented (bits=%d)", bw)
- }
- if bw < 8 {
- return nil, fmt.Errorf("arrow/ipc: integers with less than 8 bits not implemented (bits=%d)", bw)
- }
-
- switch bw {
- case 8:
- if !data.IsSigned() {
- return arrow.PrimitiveTypes.Uint8, nil
- }
- return arrow.PrimitiveTypes.Int8, nil
-
- case 16:
- if !data.IsSigned() {
- return arrow.PrimitiveTypes.Uint16, nil
- }
- return arrow.PrimitiveTypes.Int16, nil
-
- case 32:
- if !data.IsSigned() {
- return arrow.PrimitiveTypes.Uint32, nil
- }
- return arrow.PrimitiveTypes.Int32, nil
-
- case 64:
- if !data.IsSigned() {
- return arrow.PrimitiveTypes.Uint64, nil
- }
- return arrow.PrimitiveTypes.Int64, nil
- default:
- return nil, fmt.Errorf("arrow/ipc: integers not in cstdint are not implemented")
- }
-}
-
-func intToFB(b *flatbuffers.Builder, bw int32, isSigned bool) flatbuffers.UOffsetT {
- flatbuf.IntStart(b)
- flatbuf.IntAddBitWidth(b, bw)
- flatbuf.IntAddIsSigned(b, isSigned)
- return flatbuf.IntEnd(b)
-}
-
-func floatFromFB(data flatbuf.FloatingPoint) (arrow.DataType, error) {
- switch p := data.Precision(); p {
- case flatbuf.PrecisionHALF:
- return arrow.FixedWidthTypes.Float16, nil
- case flatbuf.PrecisionSINGLE:
- return arrow.PrimitiveTypes.Float32, nil
- case flatbuf.PrecisionDOUBLE:
- return arrow.PrimitiveTypes.Float64, nil
- default:
- return nil, fmt.Errorf("arrow/ipc: floating point type with %d precision not implemented", p)
- }
-}
-
-func floatToFB(b *flatbuffers.Builder, bw int32) flatbuffers.UOffsetT {
- switch bw {
- case 16:
- flatbuf.FloatingPointStart(b)
- flatbuf.FloatingPointAddPrecision(b, flatbuf.PrecisionHALF)
- return flatbuf.FloatingPointEnd(b)
- case 32:
- flatbuf.FloatingPointStart(b)
- flatbuf.FloatingPointAddPrecision(b, flatbuf.PrecisionSINGLE)
- return flatbuf.FloatingPointEnd(b)
- case 64:
- flatbuf.FloatingPointStart(b)
- flatbuf.FloatingPointAddPrecision(b, flatbuf.PrecisionDOUBLE)
- return flatbuf.FloatingPointEnd(b)
- default:
- panic(fmt.Errorf("arrow/ipc: invalid floating point precision %d-bits", bw))
- }
-}
-
-func decimalFromFB(data flatbuf.Decimal) (arrow.DataType, error) {
- switch data.BitWidth() {
- case 128:
- return &arrow.Decimal128Type{Precision: data.Precision(), Scale: data.Scale()}, nil
- case 256:
- return &arrow.Decimal256Type{Precision: data.Precision(), Scale: data.Scale()}, nil
- default:
- return nil, fmt.Errorf("arrow/ipc: invalid decimal bitwidth: %d", data.BitWidth())
- }
-}
-
-func timeFromFB(data flatbuf.Time) (arrow.DataType, error) {
- bw := data.BitWidth()
- unit := unitFromFB(data.Unit())
-
- switch bw {
- case 32:
- switch unit {
- case arrow.Millisecond:
- return arrow.FixedWidthTypes.Time32ms, nil
- case arrow.Second:
- return arrow.FixedWidthTypes.Time32s, nil
- default:
- return nil, fmt.Errorf("arrow/ipc: Time32 type with %v unit not implemented", unit)
- }
- case 64:
- switch unit {
- case arrow.Nanosecond:
- return arrow.FixedWidthTypes.Time64ns, nil
- case arrow.Microsecond:
- return arrow.FixedWidthTypes.Time64us, nil
- default:
- return nil, fmt.Errorf("arrow/ipc: Time64 type with %v unit not implemented", unit)
- }
- default:
- return nil, fmt.Errorf("arrow/ipc: Time type with %d bitwidth not implemented", bw)
- }
-}
-
-func timestampFromFB(data flatbuf.Timestamp) (arrow.DataType, error) {
- unit := unitFromFB(data.Unit())
- tz := string(data.Timezone())
- return &arrow.TimestampType{Unit: unit, TimeZone: tz}, nil
-}
-
-func dateFromFB(data flatbuf.Date) (arrow.DataType, error) {
- switch data.Unit() {
- case flatbuf.DateUnitDAY:
- return arrow.FixedWidthTypes.Date32, nil
- case flatbuf.DateUnitMILLISECOND:
- return arrow.FixedWidthTypes.Date64, nil
- }
- return nil, fmt.Errorf("arrow/ipc: Date type with %d unit not implemented", data.Unit())
-}
-
-func intervalFromFB(data flatbuf.Interval) (arrow.DataType, error) {
- switch data.Unit() {
- case flatbuf.IntervalUnitYEAR_MONTH:
- return arrow.FixedWidthTypes.MonthInterval, nil
- case flatbuf.IntervalUnitDAY_TIME:
- return arrow.FixedWidthTypes.DayTimeInterval, nil
- case flatbuf.IntervalUnitMONTH_DAY_NANO:
- return arrow.FixedWidthTypes.MonthDayNanoInterval, nil
- }
- return nil, fmt.Errorf("arrow/ipc: Interval type with %d unit not implemented", data.Unit())
-}
-
-func durationFromFB(data flatbuf.Duration) (arrow.DataType, error) {
- switch data.Unit() {
- case flatbuf.TimeUnitSECOND:
- return arrow.FixedWidthTypes.Duration_s, nil
- case flatbuf.TimeUnitMILLISECOND:
- return arrow.FixedWidthTypes.Duration_ms, nil
- case flatbuf.TimeUnitMICROSECOND:
- return arrow.FixedWidthTypes.Duration_us, nil
- case flatbuf.TimeUnitNANOSECOND:
- return arrow.FixedWidthTypes.Duration_ns, nil
- }
- return nil, fmt.Errorf("arrow/ipc: Duration type with %d unit not implemented", data.Unit())
-}
-
-type customMetadataer interface {
- CustomMetadataLength() int
- CustomMetadata(*flatbuf.KeyValue, int) bool
-}
-
-func metadataFromFB(md customMetadataer) (arrow.Metadata, error) {
- var (
- keys = make([]string, md.CustomMetadataLength())
- vals = make([]string, md.CustomMetadataLength())
- )
-
- for i := range keys {
- var kv flatbuf.KeyValue
- if !md.CustomMetadata(&kv, i) {
- return arrow.Metadata{}, fmt.Errorf("arrow/ipc: could not read key-value %d from flatbuffer", i)
- }
- keys[i] = string(kv.Key())
- vals[i] = string(kv.Value())
- }
-
- return arrow.NewMetadata(keys, vals), nil
-}
-
-func metadataToFB(b *flatbuffers.Builder, meta arrow.Metadata, start startVecFunc) flatbuffers.UOffsetT {
- if meta.Len() == 0 {
- return 0
- }
-
- n := meta.Len()
- kvs := make([]flatbuffers.UOffsetT, n)
- for i := range kvs {
- k := b.CreateString(meta.Keys()[i])
- v := b.CreateString(meta.Values()[i])
- flatbuf.KeyValueStart(b)
- flatbuf.KeyValueAddKey(b, k)
- flatbuf.KeyValueAddValue(b, v)
- kvs[i] = flatbuf.KeyValueEnd(b)
- }
-
- start(b, n)
- for i := n - 1; i >= 0; i-- {
- b.PrependUOffsetT(kvs[i])
- }
- return b.EndVector(n)
-}
-
-func schemaFromFB(schema *flatbuf.Schema, memo *dictutils.Memo) (*arrow.Schema, error) {
- var (
- err error
- fields = make([]arrow.Field, schema.FieldsLength())
- pos = dictutils.NewFieldPos()
- )
-
- for i := range fields {
- var field flatbuf.Field
- if !schema.Fields(&field, i) {
- return nil, fmt.Errorf("arrow/ipc: could not read field %d from schema", i)
- }
-
- fields[i], err = fieldFromFB(&field, pos.Child(int32(i)), memo)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not convert field %d from flatbuf: %w", i, err)
- }
- }
-
- md, err := metadataFromFB(schema)
- if err != nil {
- return nil, fmt.Errorf("arrow/ipc: could not convert schema metadata from flatbuf: %w", err)
- }
-
- return arrow.NewSchemaWithEndian(fields, &md, endian.Endianness(schema.Endianness())), nil
-}
-
-func schemaToFB(b *flatbuffers.Builder, schema *arrow.Schema, memo *dictutils.Mapper) flatbuffers.UOffsetT {
- fields := make([]flatbuffers.UOffsetT, schema.NumFields())
- pos := dictutils.NewFieldPos()
- for i := 0; i < schema.NumFields(); i++ {
- fields[i] = fieldToFB(b, pos.Child(int32(i)), schema.Field(i), memo)
- }
-
- flatbuf.SchemaStartFieldsVector(b, len(fields))
- for i := len(fields) - 1; i >= 0; i-- {
- b.PrependUOffsetT(fields[i])
- }
- fieldsFB := b.EndVector(len(fields))
-
- metaFB := metadataToFB(b, schema.Metadata(), flatbuf.SchemaStartCustomMetadataVector)
-
- flatbuf.SchemaStart(b)
- flatbuf.SchemaAddEndianness(b, flatbuf.Endianness(schema.Endianness()))
- flatbuf.SchemaAddFields(b, fieldsFB)
- flatbuf.SchemaAddCustomMetadata(b, metaFB)
- offset := flatbuf.SchemaEnd(b)
-
- return offset
-}
-
-// payloadFromSchema returns a slice of payloads corresponding to the given schema.
-// Callers of payloadFromSchema will need to call Release after use.
-func payloadFromSchema(schema *arrow.Schema, mem memory.Allocator, memo *dictutils.Mapper) payloads {
- ps := make(payloads, 1)
- ps[0].msg = MessageSchema
- ps[0].meta = writeSchemaMessage(schema, mem, memo)
-
- return ps
-}
-
-func writeFBBuilder(b *flatbuffers.Builder, mem memory.Allocator) *memory.Buffer {
- raw := b.FinishedBytes()
- buf := memory.NewResizableBuffer(mem)
- buf.Resize(len(raw))
- copy(buf.Bytes(), raw)
- return buf
-}
-
-func writeMessageFB(b *flatbuffers.Builder, mem memory.Allocator, hdrType flatbuf.MessageHeader, hdr flatbuffers.UOffsetT, bodyLen int64) *memory.Buffer {
-
- flatbuf.MessageStart(b)
- flatbuf.MessageAddVersion(b, flatbuf.MetadataVersion(currentMetadataVersion))
- flatbuf.MessageAddHeaderType(b, hdrType)
- flatbuf.MessageAddHeader(b, hdr)
- flatbuf.MessageAddBodyLength(b, bodyLen)
- msg := flatbuf.MessageEnd(b)
- b.Finish(msg)
-
- return writeFBBuilder(b, mem)
-}
-
-func writeSchemaMessage(schema *arrow.Schema, mem memory.Allocator, dict *dictutils.Mapper) *memory.Buffer {
- b := flatbuffers.NewBuilder(1024)
- schemaFB := schemaToFB(b, schema, dict)
- return writeMessageFB(b, mem, flatbuf.MessageHeaderSchema, schemaFB, 0)
-}
-
-func writeFileFooter(schema *arrow.Schema, dicts, recs []fileBlock, w io.Writer) error {
- var (
- b = flatbuffers.NewBuilder(1024)
- memo dictutils.Mapper
- )
- memo.ImportSchema(schema)
-
- schemaFB := schemaToFB(b, schema, &memo)
- dictsFB := fileBlocksToFB(b, dicts, flatbuf.FooterStartDictionariesVector)
- recsFB := fileBlocksToFB(b, recs, flatbuf.FooterStartRecordBatchesVector)
-
- flatbuf.FooterStart(b)
- flatbuf.FooterAddVersion(b, flatbuf.MetadataVersion(currentMetadataVersion))
- flatbuf.FooterAddSchema(b, schemaFB)
- flatbuf.FooterAddDictionaries(b, dictsFB)
- flatbuf.FooterAddRecordBatches(b, recsFB)
- footer := flatbuf.FooterEnd(b)
-
- b.Finish(footer)
-
- _, err := w.Write(b.FinishedBytes())
- return err
-}
-
-func writeRecordMessage(mem memory.Allocator, size, bodyLength int64, fields []fieldMetadata, meta []bufferMetadata, codec flatbuf.CompressionType, variadicCounts []int64) *memory.Buffer {
- b := flatbuffers.NewBuilder(0)
- recFB := recordToFB(b, size, bodyLength, fields, meta, codec, variadicCounts)
- return writeMessageFB(b, mem, flatbuf.MessageHeaderRecordBatch, recFB, bodyLength)
-}
-
-func writeDictionaryMessage(mem memory.Allocator, id int64, isDelta bool, size, bodyLength int64, fields []fieldMetadata, meta []bufferMetadata, codec flatbuf.CompressionType, variadicCounts []int64) *memory.Buffer {
- b := flatbuffers.NewBuilder(0)
- recFB := recordToFB(b, size, bodyLength, fields, meta, codec, variadicCounts)
-
- flatbuf.DictionaryBatchStart(b)
- flatbuf.DictionaryBatchAddId(b, id)
- flatbuf.DictionaryBatchAddData(b, recFB)
- flatbuf.DictionaryBatchAddIsDelta(b, isDelta)
- dictFB := flatbuf.DictionaryBatchEnd(b)
- return writeMessageFB(b, mem, flatbuf.MessageHeaderDictionaryBatch, dictFB, bodyLength)
-}
-
-func recordToFB(b *flatbuffers.Builder, size, bodyLength int64, fields []fieldMetadata, meta []bufferMetadata, codec flatbuf.CompressionType, variadicCounts []int64) flatbuffers.UOffsetT {
- fieldsFB := writeFieldNodes(b, fields, flatbuf.RecordBatchStartNodesVector)
- metaFB := writeBuffers(b, meta, flatbuf.RecordBatchStartBuffersVector)
- var bodyCompressFB flatbuffers.UOffsetT
- if codec != -1 {
- bodyCompressFB = writeBodyCompression(b, codec)
- }
-
- var vcFB *flatbuffers.UOffsetT
- if len(variadicCounts) > 0 {
- flatbuf.RecordBatchStartVariadicBufferCountsVector(b, len(variadicCounts))
- for i := len(variadicCounts) - 1; i >= 0; i-- {
- b.PrependInt64(variadicCounts[i])
- }
- vcFBVal := b.EndVector(len(variadicCounts))
- vcFB = &vcFBVal
- }
-
- flatbuf.RecordBatchStart(b)
- flatbuf.RecordBatchAddLength(b, size)
- flatbuf.RecordBatchAddNodes(b, fieldsFB)
- flatbuf.RecordBatchAddBuffers(b, metaFB)
- if vcFB != nil {
- flatbuf.RecordBatchAddVariadicBufferCounts(b, *vcFB)
- }
-
- if codec != -1 {
- flatbuf.RecordBatchAddCompression(b, bodyCompressFB)
- }
-
- return flatbuf.RecordBatchEnd(b)
-}
-
-func writeFieldNodes(b *flatbuffers.Builder, fields []fieldMetadata, start startVecFunc) flatbuffers.UOffsetT {
-
- start(b, len(fields))
- for i := len(fields) - 1; i >= 0; i-- {
- field := fields[i]
- if field.Offset != 0 {
- panic(fmt.Errorf("arrow/ipc: field metadata for IPC must have offset 0"))
- }
- flatbuf.CreateFieldNode(b, field.Len, field.Nulls)
- }
-
- return b.EndVector(len(fields))
-}
-
-func writeBuffers(b *flatbuffers.Builder, buffers []bufferMetadata, start startVecFunc) flatbuffers.UOffsetT {
- start(b, len(buffers))
- for i := len(buffers) - 1; i >= 0; i-- {
- buffer := buffers[i]
- flatbuf.CreateBuffer(b, buffer.Offset, buffer.Len)
- }
- return b.EndVector(len(buffers))
-}
-
-func writeBodyCompression(b *flatbuffers.Builder, codec flatbuf.CompressionType) flatbuffers.UOffsetT {
- flatbuf.BodyCompressionStart(b)
- flatbuf.BodyCompressionAddCodec(b, codec)
- flatbuf.BodyCompressionAddMethod(b, flatbuf.BodyCompressionMethodBUFFER)
- return flatbuf.BodyCompressionEnd(b)
-}
-
-func writeMessage(msg *memory.Buffer, alignment int32, w io.Writer) (int, error) {
- var (
- n int
- err error
- )
-
- // ARROW-3212: we do not make any assumption on whether the output stream is aligned or not.
- paddedMsgLen := int32(msg.Len()) + 8
- remainder := paddedMsgLen % alignment
- if remainder != 0 {
- paddedMsgLen += alignment - remainder
- }
-
- tmp := make([]byte, 4)
-
- // write continuation indicator, to address 8-byte alignment requirement from FlatBuffers.
- binary.LittleEndian.PutUint32(tmp, kIPCContToken)
- _, err = w.Write(tmp)
- if err != nil {
- return 0, fmt.Errorf("arrow/ipc: could not write continuation bit indicator: %w", err)
- }
-
- // the returned message size includes the length prefix, the flatbuffer, + padding
- n = int(paddedMsgLen)
-
- // write the flatbuffer size prefix, including padding
- sizeFB := paddedMsgLen - 8
- binary.LittleEndian.PutUint32(tmp, uint32(sizeFB))
- _, err = w.Write(tmp)
- if err != nil {
- return n, fmt.Errorf("arrow/ipc: could not write message flatbuffer size prefix: %w", err)
- }
-
- // write the flatbuffer
- _, err = w.Write(msg.Bytes())
- if err != nil {
- return n, fmt.Errorf("arrow/ipc: could not write message flatbuffer: %w", err)
- }
-
- // write any padding
- padding := paddedMsgLen - int32(msg.Len()) - 8
- if padding > 0 {
- _, err = w.Write(paddingBytes[:padding])
- if err != nil {
- return n, fmt.Errorf("arrow/ipc: could not write message padding bytes: %w", err)
- }
- }
-
- return n, err
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/reader.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/reader.go
deleted file mode 100644
index 826062faf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/reader.go
+++ /dev/null
@@ -1,285 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "bytes"
- "errors"
- "fmt"
- "io"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/internal/dictutils"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
-)
-
-// Reader reads records from an io.Reader.
-// Reader expects a schema (plus any dictionaries) as the first messages
-// in the stream, followed by records.
-type Reader struct {
- r MessageReader
- schema *arrow.Schema
-
- refCount int64
- rec arrow.Record
- err error
-
- // types dictTypeMap
- memo dictutils.Memo
- readInitialDicts bool
- done bool
- swapEndianness bool
- ensureNativeEndian bool
- expectedSchema *arrow.Schema
-
- mem memory.Allocator
-}
-
-// NewReaderFromMessageReader allows constructing a new reader object with the
-// provided MessageReader allowing injection of reading messages other than
-// by simple streaming bytes such as Arrow Flight which receives a protobuf message
-func NewReaderFromMessageReader(r MessageReader, opts ...Option) (reader *Reader, err error) {
- defer func() {
- if pErr := recover(); pErr != nil {
- err = fmt.Errorf("arrow/ipc: unknown error while reading: %v", pErr)
- }
- }()
- cfg := newConfig()
- for _, opt := range opts {
- opt(cfg)
- }
-
- rr := &Reader{
- r: r,
- refCount: 1,
- // types: make(dictTypeMap),
- memo: dictutils.NewMemo(),
- mem: cfg.alloc,
- ensureNativeEndian: cfg.ensureNativeEndian,
- expectedSchema: cfg.schema,
- }
-
- if !cfg.noAutoSchema {
- if err := rr.readSchema(cfg.schema); err != nil {
- return nil, err
- }
- }
-
- return rr, nil
-}
-
-// NewReader returns a reader that reads records from an input stream.
-func NewReader(r io.Reader, opts ...Option) (*Reader, error) {
- return NewReaderFromMessageReader(NewMessageReader(r, opts...), opts...)
-}
-
-// Err returns the last error encountered during the iteration over the
-// underlying stream.
-func (r *Reader) Err() error { return r.err }
-
-func (r *Reader) Schema() *arrow.Schema {
- if r.schema == nil {
- if err := r.readSchema(r.expectedSchema); err != nil {
- r.err = fmt.Errorf("arrow/ipc: could not read schema from stream: %w", err)
- r.done = true
- }
- }
- return r.schema
-}
-
-func (r *Reader) readSchema(schema *arrow.Schema) error {
- msg, err := r.r.Message()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not read message schema: %w", err)
- }
-
- if msg.Type() != MessageSchema {
- return fmt.Errorf("arrow/ipc: invalid message type (got=%v, want=%v)", msg.Type(), MessageSchema)
- }
-
- // FIXME(sbinet) refactor msg-header handling.
- var schemaFB flatbuf.Schema
- initFB(&schemaFB, msg.msg.Header)
-
- r.schema, err = schemaFromFB(&schemaFB, &r.memo)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not decode schema from message schema: %w", err)
- }
-
- // check the provided schema match the one read from stream.
- if schema != nil && !schema.Equal(r.schema) {
- return errInconsistentSchema
- }
-
- if r.ensureNativeEndian && !r.schema.IsNativeEndian() {
- r.swapEndianness = true
- r.schema = r.schema.WithEndianness(endian.NativeEndian)
- }
-
- return nil
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (r *Reader) Retain() {
- atomic.AddInt64(&r.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (r *Reader) Release() {
- debug.Assert(atomic.LoadInt64(&r.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&r.refCount, -1) == 0 {
- if r.rec != nil {
- r.rec.Release()
- r.rec = nil
- }
- if r.r != nil {
- r.r.Release()
- r.r = nil
- }
- r.memo.Clear()
- }
-}
-
-// Next returns whether a Record could be extracted from the underlying stream.
-func (r *Reader) Next() bool {
- if r.rec != nil {
- r.rec.Release()
- r.rec = nil
- }
-
- if r.err != nil || r.done {
- return false
- }
-
- return r.next()
-}
-
-func (r *Reader) getInitialDicts() bool {
- var msg *Message
- // we have to get all dictionaries before reconstructing the first
- // record. subsequent deltas and replacements modify the memo
- numDicts := r.memo.Mapper.NumDicts()
- // there should be numDicts dictionary messages
- for i := 0; i < numDicts; i++ {
- msg, r.err = r.r.Message()
- if r.err != nil {
- r.done = true
- if r.err == io.EOF {
- if i == 0 {
- r.err = nil
- } else {
- r.err = fmt.Errorf("arrow/ipc: IPC stream ended without reading the expected (%d) dictionaries", numDicts)
- }
- }
- return false
- }
-
- if msg.Type() != MessageDictionaryBatch {
- r.err = fmt.Errorf("arrow/ipc: IPC stream did not have the expected (%d) dictionaries at the start of the stream", numDicts)
- }
- if _, err := readDictionary(&r.memo, msg.meta, bytes.NewReader(msg.body.Bytes()), r.swapEndianness, r.mem); err != nil {
- r.done = true
- r.err = err
- return false
- }
- }
- r.readInitialDicts = true
- return true
-}
-
-func (r *Reader) next() bool {
- defer func() {
- if pErr := recover(); pErr != nil {
- r.err = fmt.Errorf("arrow/ipc: unknown error while reading: %v", pErr)
- }
- }()
- if r.schema == nil {
- if err := r.readSchema(r.expectedSchema); err != nil {
- r.err = fmt.Errorf("arrow/ipc: could not read schema from stream: %w", err)
- r.done = true
- return false
- }
- }
-
- if !r.readInitialDicts && !r.getInitialDicts() {
- return false
- }
-
- var msg *Message
- msg, r.err = r.r.Message()
-
- for msg != nil && msg.Type() == MessageDictionaryBatch {
- if _, r.err = readDictionary(&r.memo, msg.meta, bytes.NewReader(msg.body.Bytes()), r.swapEndianness, r.mem); r.err != nil {
- r.done = true
- return false
- }
- msg, r.err = r.r.Message()
- }
- if r.err != nil {
- r.done = true
- if errors.Is(r.err, io.EOF) {
- r.err = nil
- }
- return false
- }
-
- if got, want := msg.Type(), MessageRecordBatch; got != want {
- r.err = fmt.Errorf("arrow/ipc: invalid message type (got=%v, want=%v", got, want)
- return false
- }
-
- r.rec = newRecord(r.schema, &r.memo, msg.meta, bytes.NewReader(msg.body.Bytes()), r.swapEndianness, r.mem)
- return true
-}
-
-// Record returns the current record that has been extracted from the
-// underlying stream.
-// It is valid until the next call to Next.
-func (r *Reader) Record() arrow.Record {
- return r.rec
-}
-
-// Read reads the current record from the underlying stream and an error, if any.
-// When the Reader reaches the end of the underlying stream, it returns (nil, io.EOF).
-func (r *Reader) Read() (arrow.Record, error) {
- if r.rec != nil {
- r.rec.Release()
- r.rec = nil
- }
-
- if !r.next() {
- if r.done && r.err == nil {
- return nil, io.EOF
- }
- return nil, r.err
- }
-
- return r.rec, nil
-}
-
-var (
- _ array.RecordReader = (*Reader)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/writer.go b/vendor/github.com/apache/arrow/go/v15/arrow/ipc/writer.go
deleted file mode 100644
index 31ce53a0f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/ipc/writer.go
+++ /dev/null
@@ -1,1044 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ipc
-
-import (
- "context"
- "encoding/binary"
- "errors"
- "fmt"
- "io"
- "math"
- "sync"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/array"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/arrow/internal"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
- "github.com/apache/arrow/go/v15/arrow/internal/dictutils"
- "github.com/apache/arrow/go/v15/arrow/internal/flatbuf"
- "github.com/apache/arrow/go/v15/arrow/memory"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-type swriter struct {
- w io.Writer
- pos int64
-}
-
-func (w *swriter) Start() error { return nil }
-func (w *swriter) Close() error {
- _, err := w.Write(kEOS[:])
- return err
-}
-
-func (w *swriter) WritePayload(p Payload) error {
- _, err := writeIPCPayload(w, p)
- if err != nil {
- return err
- }
- return nil
-}
-
-func (w *swriter) Write(p []byte) (int, error) {
- n, err := w.w.Write(p)
- w.pos += int64(n)
- return n, err
-}
-
-func hasNestedDict(data arrow.ArrayData) bool {
- if data.DataType().ID() == arrow.DICTIONARY {
- return true
- }
- for _, c := range data.Children() {
- if hasNestedDict(c) {
- return true
- }
- }
- return false
-}
-
-// Writer is an Arrow stream writer.
-type Writer struct {
- w io.Writer
-
- mem memory.Allocator
- pw PayloadWriter
-
- started bool
- schema *arrow.Schema
- mapper dictutils.Mapper
- codec flatbuf.CompressionType
- compressNP int
- minSpaceSavings *float64
-
- // map of the last written dictionaries by id
- // so we can avoid writing the same dictionary over and over
- lastWrittenDicts map[int64]arrow.Array
- emitDictDeltas bool
-}
-
-// NewWriterWithPayloadWriter constructs a writer with the provided payload writer
-// instead of the default stream payload writer. This makes the writer more
-// reusable such as by the Arrow Flight writer.
-func NewWriterWithPayloadWriter(pw PayloadWriter, opts ...Option) *Writer {
- cfg := newConfig(opts...)
- return &Writer{
- mem: cfg.alloc,
- pw: pw,
- schema: cfg.schema,
- codec: cfg.codec,
- compressNP: cfg.compressNP,
- minSpaceSavings: cfg.minSpaceSavings,
- emitDictDeltas: cfg.emitDictDeltas,
- }
-}
-
-// NewWriter returns a writer that writes records to the provided output stream.
-func NewWriter(w io.Writer, opts ...Option) *Writer {
- cfg := newConfig(opts...)
- return &Writer{
- w: w,
- mem: cfg.alloc,
- pw: &swriter{w: w},
- schema: cfg.schema,
- codec: cfg.codec,
- emitDictDeltas: cfg.emitDictDeltas,
- }
-}
-
-func (w *Writer) Close() error {
- if !w.started {
- err := w.start()
- if err != nil {
- return err
- }
- }
-
- if w.pw == nil {
- return nil
- }
-
- err := w.pw.Close()
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not close payload writer: %w", err)
- }
- w.pw = nil
-
- for _, d := range w.lastWrittenDicts {
- d.Release()
- }
-
- return nil
-}
-
-func (w *Writer) Write(rec arrow.Record) (err error) {
- defer func() {
- if pErr := recover(); pErr != nil {
- err = fmt.Errorf("arrow/ipc: unknown error while writing: %v", pErr)
- }
- }()
-
- if !w.started {
- err := w.start()
- if err != nil {
- return err
- }
- }
-
- schema := rec.Schema()
- if schema == nil || !schema.Equal(w.schema) {
- return errInconsistentSchema
- }
-
- const allow64b = true
- var (
- data = Payload{msg: MessageRecordBatch}
- enc = newRecordEncoder(w.mem, 0, kMaxNestingDepth, allow64b, w.codec, w.compressNP, w.minSpaceSavings)
- )
- defer data.Release()
-
- err = writeDictionaryPayloads(w.mem, rec, false, w.emitDictDeltas, &w.mapper, w.lastWrittenDicts, w.pw, enc)
- if err != nil {
- return fmt.Errorf("arrow/ipc: failure writing dictionary batches: %w", err)
- }
-
- enc.reset()
- if err := enc.Encode(&data, rec); err != nil {
- return fmt.Errorf("arrow/ipc: could not encode record to payload: %w", err)
- }
-
- return w.pw.WritePayload(data)
-}
-
-func writeDictionaryPayloads(mem memory.Allocator, batch arrow.Record, isFileFormat bool, emitDictDeltas bool, mapper *dictutils.Mapper, lastWrittenDicts map[int64]arrow.Array, pw PayloadWriter, encoder *recordEncoder) error {
- dictionaries, err := dictutils.CollectDictionaries(batch, mapper)
- if err != nil {
- return err
- }
- defer func() {
- for _, d := range dictionaries {
- d.Dict.Release()
- }
- }()
-
- eqopt := array.WithNaNsEqual(true)
- for _, pair := range dictionaries {
- encoder.reset()
- var (
- deltaStart int64
- enc = dictEncoder{encoder}
- )
- lastDict, exists := lastWrittenDicts[pair.ID]
- if exists {
- if lastDict.Data() == pair.Dict.Data() {
- continue
- }
- newLen, lastLen := pair.Dict.Len(), lastDict.Len()
- if lastLen == newLen && array.ApproxEqual(lastDict, pair.Dict, eqopt) {
- // same dictionary by value
- // might cost CPU, but required for IPC file format
- continue
- }
- if isFileFormat {
- return errors.New("arrow/ipc: Dictionary replacement detected when writing IPC file format. Arrow IPC File only supports single dictionary per field")
- }
-
- if newLen > lastLen &&
- emitDictDeltas &&
- !hasNestedDict(pair.Dict.Data()) &&
- (array.SliceApproxEqual(lastDict, 0, int64(lastLen), pair.Dict, 0, int64(lastLen), eqopt)) {
- deltaStart = int64(lastLen)
- }
- }
-
- var data = Payload{msg: MessageDictionaryBatch}
- defer data.Release()
-
- dict := pair.Dict
- if deltaStart > 0 {
- dict = array.NewSlice(dict, deltaStart, int64(dict.Len()))
- defer dict.Release()
- }
- if err := enc.Encode(&data, pair.ID, deltaStart > 0, dict); err != nil {
- return err
- }
-
- if err := pw.WritePayload(data); err != nil {
- return err
- }
-
- lastWrittenDicts[pair.ID] = pair.Dict
- if lastDict != nil {
- lastDict.Release()
- }
- pair.Dict.Retain()
- }
- return nil
-}
-
-func (w *Writer) start() error {
- w.started = true
-
- w.mapper.ImportSchema(w.schema)
- w.lastWrittenDicts = make(map[int64]arrow.Array)
-
- // write out schema payloads
- ps := payloadFromSchema(w.schema, w.mem, &w.mapper)
- defer ps.Release()
-
- for _, data := range ps {
- err := w.pw.WritePayload(data)
- if err != nil {
- return err
- }
- }
-
- return nil
-}
-
-type dictEncoder struct {
- *recordEncoder
-}
-
-func (d *dictEncoder) encodeMetadata(p *Payload, isDelta bool, id, nrows int64) error {
- p.meta = writeDictionaryMessage(d.mem, id, isDelta, nrows, p.size, d.fields, d.meta, d.codec, d.variadicCounts)
- return nil
-}
-
-func (d *dictEncoder) Encode(p *Payload, id int64, isDelta bool, dict arrow.Array) error {
- d.start = 0
- defer func() {
- d.start = 0
- }()
-
- schema := arrow.NewSchema([]arrow.Field{{Name: "dictionary", Type: dict.DataType(), Nullable: true}}, nil)
- batch := array.NewRecord(schema, []arrow.Array{dict}, int64(dict.Len()))
- defer batch.Release()
- if err := d.encode(p, batch); err != nil {
- return err
- }
-
- return d.encodeMetadata(p, isDelta, id, batch.NumRows())
-}
-
-type recordEncoder struct {
- mem memory.Allocator
-
- fields []fieldMetadata
- meta []bufferMetadata
- variadicCounts []int64
-
- depth int64
- start int64
- allow64b bool
- codec flatbuf.CompressionType
- compressNP int
- minSpaceSavings *float64
-}
-
-func newRecordEncoder(mem memory.Allocator, startOffset, maxDepth int64, allow64b bool, codec flatbuf.CompressionType, compressNP int, minSpaceSavings *float64) *recordEncoder {
- return &recordEncoder{
- mem: mem,
- start: startOffset,
- depth: maxDepth,
- allow64b: allow64b,
- codec: codec,
- compressNP: compressNP,
- minSpaceSavings: minSpaceSavings,
- }
-}
-
-func (w *recordEncoder) shouldCompress(uncompressed, compressed int) bool {
- debug.Assert(uncompressed > 0, "uncompressed size is 0")
- if w.minSpaceSavings == nil {
- return true
- }
-
- savings := 1.0 - float64(compressed)/float64(uncompressed)
- return savings >= *w.minSpaceSavings
-}
-
-func (w *recordEncoder) reset() {
- w.start = 0
- w.fields = make([]fieldMetadata, 0)
-}
-
-func (w *recordEncoder) compressBodyBuffers(p *Payload) error {
- compress := func(idx int, codec compressor) error {
- if p.body[idx] == nil || p.body[idx].Len() == 0 {
- return nil
- }
-
- buf := memory.NewResizableBuffer(w.mem)
- buf.Reserve(codec.MaxCompressedLen(p.body[idx].Len()) + arrow.Int64SizeBytes)
-
- binary.LittleEndian.PutUint64(buf.Buf(), uint64(p.body[idx].Len()))
- bw := &bufferWriter{buf: buf, pos: arrow.Int64SizeBytes}
- codec.Reset(bw)
-
- n, err := codec.Write(p.body[idx].Bytes())
- if err != nil {
- return err
- }
- if err := codec.Close(); err != nil {
- return err
- }
-
- finalLen := bw.pos
- compressedLen := bw.pos - arrow.Int64SizeBytes
- if !w.shouldCompress(n, compressedLen) {
- n = copy(buf.Buf()[arrow.Int64SizeBytes:], p.body[idx].Bytes())
- // size of -1 indicates to the reader that the body
- // doesn't need to be decompressed
- var noprefix int64 = -1
- binary.LittleEndian.PutUint64(buf.Buf(), uint64(noprefix))
- finalLen = n + arrow.Int64SizeBytes
- }
- bw.buf.Resize(finalLen)
- p.body[idx].Release()
- p.body[idx] = buf
- return nil
- }
-
- if w.compressNP <= 1 {
- codec := getCompressor(w.codec)
- for idx := range p.body {
- if err := compress(idx, codec); err != nil {
- return err
- }
- }
- return nil
- }
-
- var (
- wg sync.WaitGroup
- ch = make(chan int)
- errch = make(chan error)
- ctx, cancel = context.WithCancel(context.Background())
- )
- defer cancel()
-
- for i := 0; i < w.compressNP; i++ {
- wg.Add(1)
- go func() {
- defer wg.Done()
- codec := getCompressor(w.codec)
- for {
- select {
- case idx, ok := <-ch:
- if !ok {
- // we're done, channel is closed!
- return
- }
-
- if err := compress(idx, codec); err != nil {
- errch <- err
- cancel()
- return
- }
- case <-ctx.Done():
- // cancelled, return early
- return
- }
- }
- }()
- }
-
- for idx := range p.body {
- ch <- idx
- }
-
- close(ch)
- wg.Wait()
- close(errch)
-
- return <-errch
-}
-
-func (w *recordEncoder) encode(p *Payload, rec arrow.Record) error {
- // perform depth-first traversal of the row-batch
- for i, col := range rec.Columns() {
- err := w.visit(p, col)
- if err != nil {
- return fmt.Errorf("arrow/ipc: could not encode column %d (%q): %w", i, rec.ColumnName(i), err)
- }
- }
-
- if w.codec != -1 {
- if w.minSpaceSavings != nil {
- pct := *w.minSpaceSavings
- if pct < 0 || pct > 1 {
- p.Release()
- return fmt.Errorf("%w: minSpaceSavings not in range [0,1]. Provided %.05f",
- arrow.ErrInvalid, pct)
- }
- }
- w.compressBodyBuffers(p)
- }
-
- // position for the start of a buffer relative to the passed frame of reference.
- // may be 0 or some other position in an address space.
- offset := w.start
- w.meta = make([]bufferMetadata, len(p.body))
-
- // construct the metadata for the record batch header
- for i, buf := range p.body {
- var (
- size int64
- padding int64
- )
- // the buffer might be null if we are handling zero row lengths.
- if buf != nil {
- size = int64(buf.Len())
- padding = bitutil.CeilByte64(size) - size
- }
- w.meta[i] = bufferMetadata{
- Offset: offset,
- // even though we add padding, we need the Len to be correct
- // so that decompressing works properly.
- Len: size,
- }
- offset += size + padding
- }
-
- p.size = offset - w.start
- if !bitutil.IsMultipleOf8(p.size) {
- panic("not aligned")
- }
-
- return nil
-}
-
-func (w *recordEncoder) visit(p *Payload, arr arrow.Array) error {
- if w.depth <= 0 {
- return errMaxRecursion
- }
-
- if !w.allow64b && arr.Len() > math.MaxInt32 {
- return errBigArray
- }
-
- if arr.DataType().ID() == arrow.EXTENSION {
- arr := arr.(array.ExtensionArray)
- err := w.visit(p, arr.Storage())
- if err != nil {
- return fmt.Errorf("failed visiting storage of for array %T: %w", arr, err)
- }
- return nil
- }
-
- if arr.DataType().ID() == arrow.DICTIONARY {
- arr := arr.(*array.Dictionary)
- return w.visit(p, arr.Indices())
- }
-
- // add all common elements
- w.fields = append(w.fields, fieldMetadata{
- Len: int64(arr.Len()),
- Nulls: int64(arr.NullN()),
- Offset: 0,
- })
-
- if arr.DataType().ID() == arrow.NULL {
- return nil
- }
-
- if internal.HasValidityBitmap(arr.DataType().ID(), flatbuf.MetadataVersion(currentMetadataVersion)) {
- switch arr.NullN() {
- case 0:
- // there are no null values, drop the null bitmap
- p.body = append(p.body, nil)
- default:
- data := arr.Data()
- var bitmap *memory.Buffer
- if data.NullN() == data.Len() {
- // every value is null, just use a new zero-initialized bitmap to avoid the expense of copying
- bitmap = memory.NewResizableBuffer(w.mem)
- minLength := paddedLength(bitutil.BytesForBits(int64(data.Len())), kArrowAlignment)
- bitmap.Resize(int(minLength))
- } else {
- // otherwise truncate and copy the bits
- bitmap = newTruncatedBitmap(w.mem, int64(data.Offset()), int64(data.Len()), data.Buffers()[0])
- }
- p.body = append(p.body, bitmap)
- }
- }
-
- switch dtype := arr.DataType().(type) {
- case *arrow.NullType:
- // ok. NullArrays are completely empty.
-
- case *arrow.BooleanType:
- var (
- data = arr.Data()
- bitm *memory.Buffer
- )
-
- if data.Len() != 0 {
- bitm = newTruncatedBitmap(w.mem, int64(data.Offset()), int64(data.Len()), data.Buffers()[1])
- }
- p.body = append(p.body, bitm)
-
- case arrow.FixedWidthDataType:
- data := arr.Data()
- values := data.Buffers()[1]
- arrLen := int64(arr.Len())
- typeWidth := int64(dtype.BitWidth() / 8)
- minLength := paddedLength(arrLen*typeWidth, kArrowAlignment)
-
- switch {
- case needTruncate(int64(data.Offset()), values, minLength):
- // non-zero offset: slice the buffer
- offset := int64(data.Offset()) * typeWidth
- // send padding if available
- len := minI64(bitutil.CeilByte64(arrLen*typeWidth), int64(values.Len())-offset)
- values = memory.NewBufferBytes(values.Bytes()[offset : offset+len])
- default:
- if values != nil {
- values.Retain()
- }
- }
- p.body = append(p.body, values)
-
- case *arrow.BinaryType, *arrow.LargeBinaryType, *arrow.StringType, *arrow.LargeStringType:
- arr := arr.(array.BinaryLike)
- voffsets := w.getZeroBasedValueOffsets(arr)
- data := arr.Data()
- values := data.Buffers()[2]
-
- var totalDataBytes int64
- if voffsets != nil {
- totalDataBytes = int64(len(arr.ValueBytes()))
- }
-
- switch {
- case needTruncate(int64(data.Offset()), values, totalDataBytes):
- // slice data buffer to include the range we need now.
- var (
- beg = arr.ValueOffset64(0)
- len = minI64(paddedLength(totalDataBytes, kArrowAlignment), int64(totalDataBytes))
- )
- values = memory.NewBufferBytes(data.Buffers()[2].Bytes()[beg : beg+len])
- default:
- if values != nil {
- values.Retain()
- }
- }
- p.body = append(p.body, voffsets)
- p.body = append(p.body, values)
-
- case arrow.BinaryViewDataType:
- data := arr.Data()
- values := data.Buffers()[1]
- arrLen := int64(arr.Len())
- typeWidth := int64(arrow.ViewHeaderSizeBytes)
- minLength := paddedLength(arrLen*typeWidth, kArrowAlignment)
-
- switch {
- case needTruncate(int64(data.Offset()), values, minLength):
- // non-zero offset: slice the buffer
- offset := data.Offset() * int(typeWidth)
- // send padding if available
- len := int(minI64(bitutil.CeilByte64(arrLen*typeWidth), int64(values.Len()-offset)))
- values = memory.SliceBuffer(values, offset, len)
- default:
- if values != nil {
- values.Retain()
- }
- }
- p.body = append(p.body, values)
-
- w.variadicCounts = append(w.variadicCounts, int64(len(data.Buffers())-2))
- for _, b := range data.Buffers()[2:] {
- b.Retain()
- p.body = append(p.body, b)
- }
-
- case *arrow.StructType:
- w.depth--
- arr := arr.(*array.Struct)
- for i := 0; i < arr.NumField(); i++ {
- err := w.visit(p, arr.Field(i))
- if err != nil {
- return fmt.Errorf("could not visit field %d of struct-array: %w", i, err)
- }
- }
- w.depth++
-
- case *arrow.SparseUnionType:
- offset, length := arr.Data().Offset(), arr.Len()
- arr := arr.(*array.SparseUnion)
- typeCodes := getTruncatedBuffer(int64(offset), int64(length), int32(unsafe.Sizeof(arrow.UnionTypeCode(0))), arr.TypeCodes())
- p.body = append(p.body, typeCodes)
-
- w.depth--
- for i := 0; i < arr.NumFields(); i++ {
- err := w.visit(p, arr.Field(i))
- if err != nil {
- return fmt.Errorf("could not visit field %d of sparse union array: %w", i, err)
- }
- }
- w.depth++
- case *arrow.DenseUnionType:
- offset, length := arr.Data().Offset(), arr.Len()
- arr := arr.(*array.DenseUnion)
- typeCodes := getTruncatedBuffer(int64(offset), int64(length), int32(unsafe.Sizeof(arrow.UnionTypeCode(0))), arr.TypeCodes())
- p.body = append(p.body, typeCodes)
-
- w.depth--
- dt := arr.UnionType()
-
- // union type codes are not necessarily 0-indexed
- maxCode := dt.MaxTypeCode()
-
- // allocate an array of child offsets. Set all to -1 to indicate we
- // haven't observed a first occurrence of a particular child yet
- offsets := make([]int32, maxCode+1)
- lengths := make([]int32, maxCode+1)
- offsets[0], lengths[0] = -1, 0
- for i := 1; i < len(offsets); i *= 2 {
- copy(offsets[i:], offsets[:i])
- copy(lengths[i:], lengths[:i])
- }
-
- var valueOffsets *memory.Buffer
- if offset != 0 {
- valueOffsets = w.rebaseDenseUnionValueOffsets(arr, offsets, lengths)
- } else {
- valueOffsets = getTruncatedBuffer(int64(offset), int64(length), int32(arrow.Int32SizeBytes), arr.ValueOffsets())
- }
- p.body = append(p.body, valueOffsets)
-
- // visit children and slice accordingly
- for i := range dt.Fields() {
- child := arr.Field(i)
- // for sliced unions it's tricky to know how much to truncate
- // the children. For now we'll truncate the children to be
- // no longer than the parent union.
-
- if offset != 0 {
- code := dt.TypeCodes()[i]
- childOffset := offsets[code]
- childLen := lengths[code]
-
- if childOffset > 0 {
- child = array.NewSlice(child, int64(childOffset), int64(childOffset+childLen))
- defer child.Release()
- } else if childLen < int32(child.Len()) {
- child = array.NewSlice(child, 0, int64(childLen))
- defer child.Release()
- }
- }
- if err := w.visit(p, child); err != nil {
- return fmt.Errorf("could not visit field %d of dense union array: %w", i, err)
- }
- }
- w.depth++
- case *arrow.MapType, *arrow.ListType, *arrow.LargeListType:
- arr := arr.(array.ListLike)
- voffsets := w.getZeroBasedValueOffsets(arr)
- p.body = append(p.body, voffsets)
-
- w.depth--
- var (
- values = arr.ListValues()
- mustRelease = false
- values_offset int64
- values_end int64
- )
- defer func() {
- if mustRelease {
- values.Release()
- }
- }()
-
- if arr.Len() > 0 && voffsets != nil {
- values_offset, _ = arr.ValueOffsets(0)
- _, values_end = arr.ValueOffsets(arr.Len() - 1)
- }
-
- if arr.Len() != 0 || values_end < int64(values.Len()) {
- // must also slice the values
- values = array.NewSlice(values, values_offset, values_end)
- mustRelease = true
- }
- err := w.visit(p, values)
-
- if err != nil {
- return fmt.Errorf("could not visit list element for array %T: %w", arr, err)
- }
- w.depth++
-
- case *arrow.ListViewType, *arrow.LargeListViewType:
- arr := arr.(array.VarLenListLike)
-
- voffsets, minOffset, maxEnd := w.getZeroBasedListViewOffsets(arr)
- vsizes := w.getListViewSizes(arr)
-
- p.body = append(p.body, voffsets)
- p.body = append(p.body, vsizes)
-
- w.depth--
- var (
- values = arr.ListValues()
- )
-
- if minOffset != 0 || maxEnd < int64(values.Len()) {
- values = array.NewSlice(values, minOffset, maxEnd)
- defer values.Release()
- }
- err := w.visit(p, values)
-
- if err != nil {
- return fmt.Errorf("could not visit list element for array %T: %w", arr, err)
- }
- w.depth++
-
- case *arrow.FixedSizeListType:
- arr := arr.(*array.FixedSizeList)
-
- w.depth--
-
- size := int64(arr.DataType().(*arrow.FixedSizeListType).Len())
- beg := int64(arr.Offset()) * size
- end := int64(arr.Offset()+arr.Len()) * size
-
- values := array.NewSlice(arr.ListValues(), beg, end)
- defer values.Release()
-
- err := w.visit(p, values)
-
- if err != nil {
- return fmt.Errorf("could not visit list element for array %T: %w", arr, err)
- }
- w.depth++
-
- case *arrow.RunEndEncodedType:
- arr := arr.(*array.RunEndEncoded)
- w.depth--
- child := arr.LogicalRunEndsArray(w.mem)
- defer child.Release()
- if err := w.visit(p, child); err != nil {
- return err
- }
- child = arr.LogicalValuesArray()
- defer child.Release()
- if err := w.visit(p, child); err != nil {
- return err
- }
- w.depth++
-
- default:
- panic(fmt.Errorf("arrow/ipc: unknown array %T (dtype=%T)", arr, dtype))
- }
-
- return nil
-}
-
-func (w *recordEncoder) getZeroBasedValueOffsets(arr arrow.Array) *memory.Buffer {
- data := arr.Data()
- voffsets := data.Buffers()[1]
- offsetTraits := arr.DataType().(arrow.OffsetsDataType).OffsetTypeTraits()
- offsetBytesNeeded := offsetTraits.BytesRequired(data.Len() + 1)
-
- if voffsets == nil || voffsets.Len() == 0 {
- return nil
- }
-
- // if we have a non-zero offset, then the value offsets do not start at
- // zero. we must a) create a new offsets array with shifted offsets and
- // b) slice the values array accordingly
- //
- // or if there are more value offsets than values (the array has been sliced)
- // we need to trim off the trailing offsets
- needsTruncateAndShift := data.Offset() != 0 || offsetBytesNeeded < voffsets.Len()
-
- if needsTruncateAndShift {
- shiftedOffsets := memory.NewResizableBuffer(w.mem)
- shiftedOffsets.Resize(offsetBytesNeeded)
-
- switch arr.DataType().Layout().Buffers[1].ByteWidth {
- case 8:
- dest := arrow.Int64Traits.CastFromBytes(shiftedOffsets.Bytes())
- offsets := arrow.Int64Traits.CastFromBytes(voffsets.Bytes())[data.Offset() : data.Offset()+data.Len()+1]
-
- startOffset := offsets[0]
- for i, o := range offsets {
- dest[i] = o - startOffset
- }
-
- default:
- debug.Assert(arr.DataType().Layout().Buffers[1].ByteWidth == 4, "invalid offset bytewidth")
- dest := arrow.Int32Traits.CastFromBytes(shiftedOffsets.Bytes())
- offsets := arrow.Int32Traits.CastFromBytes(voffsets.Bytes())[data.Offset() : data.Offset()+data.Len()+1]
-
- startOffset := offsets[0]
- for i, o := range offsets {
- dest[i] = o - startOffset
- }
- }
-
- voffsets = shiftedOffsets
- } else {
- voffsets.Retain()
- }
-
- return voffsets
-}
-
-func getZeroBasedListViewOffsets[OffsetT int32 | int64](mem memory.Allocator, arr array.VarLenListLike) (valueOffsets *memory.Buffer, minOffset, maxEnd OffsetT) {
- requiredBytes := int(unsafe.Sizeof(minOffset)) * arr.Len()
- if arr.Data().Offset() == 0 {
- // slice offsets to used extent, in case we have truncated slice
- minOffset, maxEnd = 0, OffsetT(arr.ListValues().Len())
- valueOffsets = arr.Data().Buffers()[1]
- if valueOffsets.Len() > requiredBytes {
- valueOffsets = memory.SliceBuffer(valueOffsets, 0, requiredBytes)
- } else {
- valueOffsets.Retain()
- }
- return
- }
-
- // non-zero offset, it's likely that the smallest offset is not zero
- // we must a) create a new offsets array with shifted offsets and
- // b) slice the values array accordingly
-
- valueOffsets = memory.NewResizableBuffer(mem)
- valueOffsets.Resize(requiredBytes)
- if arr.Len() > 0 {
- // max value of int32/int64 based on type
- minOffset = (^OffsetT(0)) << ((8 * unsafe.Sizeof(minOffset)) - 1)
- for i := 0; i < arr.Len(); i++ {
- start, end := arr.ValueOffsets(i)
- minOffset = utils.Min(minOffset, OffsetT(start))
- maxEnd = utils.Max(maxEnd, OffsetT(end))
- }
- }
-
- offsets := arrow.GetData[OffsetT](arr.Data().Buffers()[1].Bytes())[arr.Data().Offset():]
- destOffset := arrow.GetData[OffsetT](valueOffsets.Bytes())
- for i := 0; i < arr.Len(); i++ {
- destOffset[i] = offsets[i] - minOffset
- }
- return
-}
-
-func getListViewSizes[OffsetT int32 | int64](arr array.VarLenListLike) *memory.Buffer {
- var z OffsetT
- requiredBytes := int(unsafe.Sizeof(z)) * arr.Len()
- sizes := arr.Data().Buffers()[2]
-
- if arr.Data().Offset() != 0 || sizes.Len() > requiredBytes {
- // slice offsets to used extent, in case we have truncated slice
- offsetBytes := arr.Data().Offset() * int(unsafe.Sizeof(z))
- sizes = memory.SliceBuffer(sizes, offsetBytes, requiredBytes)
- } else {
- sizes.Retain()
- }
- return sizes
-}
-
-func (w *recordEncoder) getZeroBasedListViewOffsets(arr array.VarLenListLike) (*memory.Buffer, int64, int64) {
- if arr.Len() == 0 {
- return nil, 0, 0
- }
-
- var (
- outOffsets *memory.Buffer
- minOff, maxEnd int64
- )
-
- switch v := arr.(type) {
- case *array.ListView:
- voffsets, outOff, outEnd := getZeroBasedListViewOffsets[int32](w.mem, v)
- outOffsets = voffsets
- minOff, maxEnd = int64(outOff), int64(outEnd)
- case *array.LargeListView:
- outOffsets, minOff, maxEnd = getZeroBasedListViewOffsets[int64](w.mem, v)
- }
- return outOffsets, minOff, maxEnd
-}
-
-func (w *recordEncoder) getListViewSizes(arr array.VarLenListLike) *memory.Buffer {
- if arr.Len() == 0 {
- return nil
- }
-
- switch v := arr.(type) {
- case *array.ListView:
- return getListViewSizes[int32](v)
- case *array.LargeListView:
- return getListViewSizes[int64](v)
- }
- return nil
-}
-
-func (w *recordEncoder) rebaseDenseUnionValueOffsets(arr *array.DenseUnion, offsets, lengths []int32) *memory.Buffer {
- // this case sucks. Because the offsets are different for each
- // child array, when we have a sliced array, we need to re-base
- // the value offsets for each array! ew.
- unshiftedOffsets := arr.RawValueOffsets()
- codes := arr.RawTypeCodes()
-
- shiftedOffsetsBuf := memory.NewResizableBuffer(w.mem)
- shiftedOffsetsBuf.Resize(arrow.Int32Traits.BytesRequired(arr.Len()))
- shiftedOffsets := arrow.Int32Traits.CastFromBytes(shiftedOffsetsBuf.Bytes())
-
- // compute shifted offsets by subtracting child offset
- for i, c := range codes {
- if offsets[c] == -1 {
- // offsets are guaranteed to be increasing according to the spec
- // so the first offset we find for a child is the initial offset
- // and will become the "0" for this child.
- offsets[c] = unshiftedOffsets[i]
- shiftedOffsets[i] = 0
- } else {
- shiftedOffsets[i] = unshiftedOffsets[i] - offsets[c]
- }
- lengths[c] = maxI32(lengths[c], shiftedOffsets[i]+1)
- }
- return shiftedOffsetsBuf
-}
-
-func (w *recordEncoder) Encode(p *Payload, rec arrow.Record) error {
- if err := w.encode(p, rec); err != nil {
- return err
- }
- return w.encodeMetadata(p, rec.NumRows())
-}
-
-func (w *recordEncoder) encodeMetadata(p *Payload, nrows int64) error {
- p.meta = writeRecordMessage(w.mem, nrows, p.size, w.fields, w.meta, w.codec, w.variadicCounts)
- return nil
-}
-
-func newTruncatedBitmap(mem memory.Allocator, offset, length int64, input *memory.Buffer) *memory.Buffer {
- if input == nil {
- return nil
- }
-
- minLength := paddedLength(bitutil.BytesForBits(length), kArrowAlignment)
- switch {
- case offset != 0 || minLength < int64(input.Len()):
- // with a sliced array / non-zero offset, we must copy the bitmap
- buf := memory.NewResizableBuffer(mem)
- buf.Resize(int(minLength))
- bitutil.CopyBitmap(input.Bytes(), int(offset), int(length), buf.Bytes(), 0)
- return buf
- default:
- input.Retain()
- return input
- }
-}
-
-func getTruncatedBuffer(offset, length int64, byteWidth int32, buf *memory.Buffer) *memory.Buffer {
- if buf == nil {
- return buf
- }
-
- paddedLen := paddedLength(length*int64(byteWidth), kArrowAlignment)
- if offset != 0 || paddedLen < int64(buf.Len()) {
- return memory.SliceBuffer(buf, int(offset*int64(byteWidth)), int(minI64(paddedLen, int64(buf.Len()))))
- }
- buf.Retain()
- return buf
-}
-
-func needTruncate(offset int64, buf *memory.Buffer, minLength int64) bool {
- if buf == nil {
- return false
- }
- return offset != 0 || minLength < int64(buf.Len())
-}
-
-func minI64(a, b int64) int64 {
- if a < b {
- return a
- }
- return b
-}
-
-func maxI32(a, b int32) int32 {
- if a > b {
- return a
- }
- return b
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/Makefile b/vendor/github.com/apache/arrow/go/v15/arrow/memory/Makefile
deleted file mode 100644
index 1cc4079c4..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-GO_BUILD=go build
-GO_GEN=go generate
-GO_TEST=go test
-GOPATH=$(realpath ../../../..)
-
-# this converts rotate instructions from "ro[lr] <reg>" -> "ro[lr] <reg>, 1" for yasm compatibility
-PERL_FIXUP_ROTATE=perl -i -pe 's/(ro[rl]\s+\w{2,3})$$/\1, 1/'
-
-C2GOASM=c2goasm -a -f
-CC=clang
-C_FLAGS=-target x86_64-unknown-none -masm=intel -mno-red-zone -mstackrealign -mllvm -inline-threshold=1000 -fno-asynchronous-unwind-tables \
- -fno-exceptions -fno-rtti -O3 -fno-builtin -ffast-math -fno-jump-tables -I_lib
-ASM_FLAGS_AVX2=-mavx2 -mfma -mllvm -force-vector-width=32
-ASM_FLAGS_SSE3=-msse3
-ASM_FLAGS_SSE4=-msse4
-
-C_FLAGS_NEON=-O3 -fvectorize -mllvm -force-vector-width=16 -fno-asynchronous-unwind-tables -mno-red-zone -mstackrealign -fno-exceptions \
- -fno-rtti -fno-builtin -ffast-math -fno-jump-tables -I_lib
-
-GO_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -not -name '*_test.go')
-ALL_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -name '*.s' -not -name '*_test.go')
-
-
-INTEL_SOURCES := \
- memory_avx2_amd64.s memory_sse4_amd64.s
-
-.PHONEY: assembly
-
-#
-# ARROW-15320: DO NOT add the assembly target for Arm64 (ARM_SOURCES) until c2goasm added the Arm64 support.
-# memory_neon_arm64.s were generated by asm2plan9s.
-# And manually formatted it as the Arm64 Plan9.
-#
-
-assembly: $(INTEL_SOURCES)
-
-_lib/memory_avx2.s: _lib/memory.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_AVX2) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/memory_sse4.s: _lib/memory.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_SSE4) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/memory_neon.s: _lib/memory.c
- $(CC) -S $(C_FLAGS_NEON) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-memory_avx2_amd64.s: _lib/memory_avx2.s
- $(C2GOASM) -a -f $^ $@
-
-memory_sse4_amd64.s: _lib/memory_sse4.s
- $(C2GOASM) -a -f $^ $@
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/allocator.go
deleted file mode 100644
index 1427190ea..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/allocator.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package memory
-
-const (
- alignment = 64
-)
-
-type Allocator interface {
- Allocate(size int) []byte
- Reallocate(size int, b []byte) []byte
- Free(b []byte)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/buffer.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/buffer.go
deleted file mode 100644
index ffdb41e3d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/buffer.go
+++ /dev/null
@@ -1,157 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package memory
-
-import (
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-// Buffer is a wrapper type for a buffer of bytes.
-type Buffer struct {
- refCount int64
- buf []byte
- length int
- mutable bool
- mem Allocator
-
- parent *Buffer
-}
-
-// NewBufferWithAllocator returns a buffer with the mutable flag set
-// as false. The intention here is to allow wrapping a byte slice along
-// with an allocator as a buffer to track the lifetime via refcounts
-// in order to call Free when the refcount goes to zero.
-//
-// The primary example this is used for, is currently importing data
-// through the c data interface and tracking the lifetime of the
-// imported buffers.
-func NewBufferWithAllocator(data []byte, mem Allocator) *Buffer {
- return &Buffer{refCount: 1, buf: data, length: len(data), mem: mem}
-}
-
-// NewBufferBytes creates a fixed-size buffer from the specified data.
-func NewBufferBytes(data []byte) *Buffer {
- return &Buffer{refCount: 0, buf: data, length: len(data)}
-}
-
-// NewResizableBuffer creates a mutable, resizable buffer with an Allocator for managing memory.
-func NewResizableBuffer(mem Allocator) *Buffer {
- return &Buffer{refCount: 1, mutable: true, mem: mem}
-}
-
-func SliceBuffer(buf *Buffer, offset, length int) *Buffer {
- buf.Retain()
- return &Buffer{refCount: 1, parent: buf, buf: buf.Bytes()[offset : offset+length], length: length}
-}
-
-// Parent returns either nil or a pointer to the parent buffer if this buffer
-// was sliced from another.
-func (b *Buffer) Parent() *Buffer { return b.parent }
-
-// Retain increases the reference count by 1.
-func (b *Buffer) Retain() {
- if b.mem != nil || b.parent != nil {
- atomic.AddInt64(&b.refCount, 1)
- }
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-func (b *Buffer) Release() {
- if b.mem != nil || b.parent != nil {
- debug.Assert(atomic.LoadInt64(&b.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&b.refCount, -1) == 0 {
- if b.mem != nil {
- b.mem.Free(b.buf)
- } else {
- b.parent.Release()
- b.parent = nil
- }
- b.buf, b.length = nil, 0
- }
- }
-}
-
-// Reset resets the buffer for reuse.
-func (b *Buffer) Reset(buf []byte) {
- if b.parent != nil {
- b.parent.Release()
- b.parent = nil
- }
- b.buf = buf
- b.length = len(buf)
-}
-
-// Buf returns the slice of memory allocated by the Buffer, which is adjusted by calling Reserve.
-func (b *Buffer) Buf() []byte { return b.buf }
-
-// Bytes returns a slice of size Len, which is adjusted by calling Resize.
-func (b *Buffer) Bytes() []byte { return b.buf[:b.length] }
-
-// Mutable returns a bool indicating whether the buffer is mutable or not.
-func (b *Buffer) Mutable() bool { return b.mutable }
-
-// Len returns the length of the buffer.
-func (b *Buffer) Len() int { return b.length }
-
-// Cap returns the capacity of the buffer.
-func (b *Buffer) Cap() int { return len(b.buf) }
-
-// Reserve reserves the provided amount of capacity for the buffer.
-func (b *Buffer) Reserve(capacity int) {
- if capacity > len(b.buf) {
- newCap := roundUpToMultipleOf64(capacity)
- if len(b.buf) == 0 {
- b.buf = b.mem.Allocate(newCap)
- } else {
- b.buf = b.mem.Reallocate(newCap, b.buf)
- }
- }
-}
-
-// Resize resizes the buffer to the target size.
-func (b *Buffer) Resize(newSize int) {
- b.resize(newSize, true)
-}
-
-// ResizeNoShrink resizes the buffer to the target size, but will not
-// shrink it.
-func (b *Buffer) ResizeNoShrink(newSize int) {
- b.resize(newSize, false)
-}
-
-func (b *Buffer) resize(newSize int, shrink bool) {
- if !shrink || newSize > b.length {
- b.Reserve(newSize)
- } else {
- // Buffer is not growing, so shrink to the requested size without
- // excess space.
- newCap := roundUpToMultipleOf64(newSize)
- if len(b.buf) != newCap {
- if newSize == 0 {
- b.mem.Free(b.buf)
- b.buf = nil
- } else {
- b.buf = b.mem.Reallocate(newCap, b.buf)
- }
- }
- }
- b.length = newSize
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator.go
deleted file mode 100644
index af25d1899..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build cgo
-// +build ccalloc
-
-package memory
-
-import (
- "runtime"
-
- cga "github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc"
-)
-
-// CgoArrowAllocator is an allocator which exposes the C++ memory pool class
-// from the Arrow C++ Library as an allocator for memory buffers to use in Go.
-// The build tag 'ccalloc' must be used in order to include it as it requires
-// linking against the arrow library.
-//
-// The primary reason to use this would be as an allocator when dealing with
-// exporting data across the cdata interface in order to ensure that the memory
-// is allocated safely on the C side so it can be held on the CGO side beyond
-// the context of a single function call. If the memory in use isn't allocated
-// on the C side, then it is not safe for any pointers to data to be held outside
-// of Go beyond the context of a single Cgo function call as it will be invisible
-// to the Go garbage collector and could potentially get moved without being updated.
-//
-// As an alternative, if the arrow C++ libraries aren't available, remember that
-// Allocator is an interface, so anything which can allocate data using C/C++ can
-// be exposed and then used to meet the Allocator interface if wanting to export data
-// across the Cgo interfaces.
-type CgoArrowAllocator struct {
- pool cga.CGOMemPool
-}
-
-// Allocate does what it says on the tin, allocates a chunk of memory using the underlying
-// memory pool, however CGO calls are 'relatively' expensive, which means doing tons of
-// small allocations can end up being expensive and potentially slower than just using
-// go memory. This means that preallocating via reserve becomes much more important when
-// using this allocator.
-//
-// Future development TODO: look into converting this more into a slab style allocator
-// which amortizes the cost of smaller allocations by allocating bigger chunks of memory
-// and passes them out.
-func (alloc *CgoArrowAllocator) Allocate(size int) []byte {
- b := cga.CgoPoolAlloc(alloc.pool, size)
- return b
-}
-
-func (alloc *CgoArrowAllocator) Free(b []byte) {
- cga.CgoPoolFree(alloc.pool, b)
-}
-
-func (alloc *CgoArrowAllocator) Reallocate(size int, b []byte) []byte {
- oldSize := len(b)
- out := cga.CgoPoolRealloc(alloc.pool, size, b)
-
- if size > oldSize {
- // zero initialize the slice like go would do normally
- // C won't zero initialize the memory.
- Set(out[oldSize:], 0)
- }
- return out
-}
-
-// AllocatedBytes returns the current total of bytes that have been allocated by
-// the memory pool on the C++ side.
-func (alloc *CgoArrowAllocator) AllocatedBytes() int64 {
- return cga.CgoPoolCurBytes(alloc.pool)
-}
-
-// AssertSize can be used for testing to ensure and check that there are no memory
-// leaks using the allocator.
-func (alloc *CgoArrowAllocator) AssertSize(t TestingT, sz int) {
- cur := alloc.AllocatedBytes()
- if int64(sz) != cur {
- t.Helper()
- t.Errorf("invalid memory size exp=%d, got=%d", sz, cur)
- }
-}
-
-// NewCgoArrowAllocator creates a new allocator which is backed by the C++ Arrow
-// memory pool object which could potentially be using jemalloc or mimalloc or
-// otherwise as its backend. Memory allocated by this is invisible to the Go
-// garbage collector, and as such care should be taken to avoid any memory leaks.
-//
-// A finalizer is set on the allocator so when the allocator object itself is eventually
-// cleaned up by the garbage collector, it will delete the associated C++ memory pool
-// object. If the build tag 'cclog' is added, then the memory pool will output a log line
-// for every time memory is allocated, freed or reallocated.
-func NewCgoArrowAllocator() *CgoArrowAllocator {
- alloc := &CgoArrowAllocator{pool: cga.NewCgoArrowAllocator(enableLogging)}
- runtime.SetFinalizer(alloc, func(a *CgoArrowAllocator) { cga.ReleaseCGOMemPool(a.pool) })
- return alloc
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_defaults.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_defaults.go
deleted file mode 100644
index 501431a0e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_defaults.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build cgo
-// +build ccalloc
-// +build !cclog
-
-package memory
-
-const enableLogging = false
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_logging.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_logging.go
deleted file mode 100644
index 01ad6b394..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/cgo_allocator_logging.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build cgo
-// +build ccalloc
-// +build cclog
-
-package memory
-
-const enableLogging = true
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/checked_allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/checked_allocator.go
deleted file mode 100644
index 78a09a57d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/checked_allocator.go
+++ /dev/null
@@ -1,221 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !tinygo
-// +build !tinygo
-
-package memory
-
-import (
- "fmt"
- "os"
- "runtime"
- "strconv"
- "strings"
- "sync"
- "sync/atomic"
- "unsafe"
-)
-
-type CheckedAllocator struct {
- mem Allocator
- sz int64
-
- allocs sync.Map
-}
-
-func NewCheckedAllocator(mem Allocator) *CheckedAllocator {
- return &CheckedAllocator{mem: mem}
-}
-
-func (a *CheckedAllocator) CurrentAlloc() int { return int(atomic.LoadInt64(&a.sz)) }
-
-func (a *CheckedAllocator) Allocate(size int) []byte {
- atomic.AddInt64(&a.sz, int64(size))
- out := a.mem.Allocate(size)
- if size == 0 {
- return out
- }
-
- ptr := uintptr(unsafe.Pointer(&out[0]))
- pcs := make([]uintptr, maxRetainedFrames)
-
- // For historical reasons the meaning of the skip argument
- // differs between Caller and Callers. For Callers, 0 identifies
- // the frame for the caller itself. We skip 2 additional frames
- // here to get to the caller right before the call to Allocate.
- runtime.Callers(allocFrames+2, pcs)
- callersFrames := runtime.CallersFrames(pcs)
- if pc, _, l, ok := runtime.Caller(allocFrames); ok {
- a.allocs.Store(ptr, &dalloc{pc: pc, line: l, sz: size, callersFrames: callersFrames})
- }
- return out
-}
-
-func (a *CheckedAllocator) Reallocate(size int, b []byte) []byte {
- atomic.AddInt64(&a.sz, int64(size-len(b)))
-
- oldptr := uintptr(unsafe.Pointer(&b[0]))
- out := a.mem.Reallocate(size, b)
- if size == 0 {
- return out
- }
-
- newptr := uintptr(unsafe.Pointer(&out[0]))
- a.allocs.Delete(oldptr)
- pcs := make([]uintptr, maxRetainedFrames)
-
- // For historical reasons the meaning of the skip argument
- // differs between Caller and Callers. For Callers, 0 identifies
- // the frame for the caller itself. We skip 2 additional frames
- // here to get to the caller right before the call to Reallocate.
- runtime.Callers(reallocFrames+2, pcs)
- callersFrames := runtime.CallersFrames(pcs)
- if pc, _, l, ok := runtime.Caller(reallocFrames); ok {
- a.allocs.Store(newptr, &dalloc{pc: pc, line: l, sz: size, callersFrames: callersFrames})
- }
-
- return out
-}
-
-func (a *CheckedAllocator) Free(b []byte) {
- atomic.AddInt64(&a.sz, int64(len(b)*-1))
- defer a.mem.Free(b)
-
- if len(b) == 0 {
- return
- }
-
- ptr := uintptr(unsafe.Pointer(&b[0]))
- a.allocs.Delete(ptr)
-}
-
-// typically the allocations are happening in memory.Buffer, not by consumers calling
-// allocate/reallocate directly. As a result, we want to skip the caller frames
-// of the inner workings of Buffer in order to find the caller that actually triggered
-// the allocation via a call to Resize/Reserve/etc.
-const (
- defAllocFrames = 4
- defReallocFrames = 3
- defMaxRetainedFrames = 0
-)
-
-// Use the environment variables ARROW_CHECKED_ALLOC_FRAMES and ARROW_CHECKED_REALLOC_FRAMES
-// to control how many frames it skips when storing the caller for allocations/reallocs
-// when using this to find memory leaks. Use ARROW_CHECKED_MAX_RETAINED_FRAMES to control how
-// many frames are retained for printing the stack trace of a leak.
-var allocFrames, reallocFrames, maxRetainedFrames int = defAllocFrames, defReallocFrames, defMaxRetainedFrames
-
-func init() {
- if val, ok := os.LookupEnv("ARROW_CHECKED_ALLOC_FRAMES"); ok {
- if f, err := strconv.Atoi(val); err == nil {
- allocFrames = f
- }
- }
-
- if val, ok := os.LookupEnv("ARROW_CHECKED_REALLOC_FRAMES"); ok {
- if f, err := strconv.Atoi(val); err == nil {
- reallocFrames = f
- }
- }
-
- if val, ok := os.LookupEnv("ARROW_CHECKED_MAX_RETAINED_FRAMES"); ok {
- if f, err := strconv.Atoi(val); err == nil {
- maxRetainedFrames = f
- }
- }
-}
-
-type dalloc struct {
- pc uintptr
- line int
- sz int
- callersFrames *runtime.Frames
-}
-
-type TestingT interface {
- Errorf(format string, args ...interface{})
- Helper()
-}
-
-func (a *CheckedAllocator) AssertSize(t TestingT, sz int) {
- a.allocs.Range(func(_, value interface{}) bool {
- info := value.(*dalloc)
- f := runtime.FuncForPC(info.pc)
- frames := info.callersFrames
- var callersMsg strings.Builder
- for {
- frame, more := frames.Next()
- if frame.Line == 0 {
- break
- }
- callersMsg.WriteString("\t")
- // frame.Func is a useful source of information if it's present.
- // It may be nil for non-Go code or fully inlined functions.
- if fn := frame.Func; fn != nil {
- // format as func name + the offset in bytes from func entrypoint
- callersMsg.WriteString(fmt.Sprintf("%s+%x", fn.Name(), frame.PC-fn.Entry()))
- } else {
- // fallback to outer func name + file line
- callersMsg.WriteString(fmt.Sprintf("%s, line %d", frame.Function, frame.Line))
- }
-
- // Write a proper file name + line, so it's really easy to find the leak
- callersMsg.WriteString("\n\t\t")
- callersMsg.WriteString(frame.File + ":" + strconv.Itoa(frame.Line))
- callersMsg.WriteString("\n")
- if !more {
- break
- }
- }
-
- file, line := f.FileLine(info.pc)
- t.Errorf("LEAK of %d bytes FROM\n\t%s+%x\n\t\t%s:%d\n%v",
- info.sz,
- f.Name(), info.pc-f.Entry(), // func name + offset in bytes between frame & entrypoint to func
- file, line, // a proper file name + line, so it's really easy to find the leak
- callersMsg.String(),
- )
- return true
- })
-
- if int(atomic.LoadInt64(&a.sz)) != sz {
- t.Helper()
- t.Errorf("invalid memory size exp=%d, got=%d", sz, a.sz)
- }
-}
-
-type CheckedAllocatorScope struct {
- alloc *CheckedAllocator
- sz int
-}
-
-func NewCheckedAllocatorScope(alloc *CheckedAllocator) *CheckedAllocatorScope {
- sz := atomic.LoadInt64(&alloc.sz)
- return &CheckedAllocatorScope{alloc: alloc, sz: int(sz)}
-}
-
-func (c *CheckedAllocatorScope) CheckSize(t TestingT) {
- sz := int(atomic.LoadInt64(&c.alloc.sz))
- if c.sz != sz {
- t.Helper()
- t.Errorf("invalid memory size exp=%d, got=%d", c.sz, sz)
- }
-}
-
-var (
- _ Allocator = (*CheckedAllocator)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_allocator.go
deleted file mode 100644
index f60caccdb..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_allocator.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !mallocator || !cgo
-
-package memory
-
-// DefaultAllocator is a default implementation of Allocator and can be used anywhere
-// an Allocator is required.
-//
-// DefaultAllocator is safe to use from multiple goroutines.
-var DefaultAllocator Allocator = NewGoAllocator()
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_mallocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_mallocator.go
deleted file mode 100644
index 4a9ef942f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/default_mallocator.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build mallocator && cgo
-
-package memory
-
-import (
- "github.com/apache/arrow/go/v15/arrow/memory/mallocator"
-)
-
-// DefaultAllocator is a default implementation of Allocator and can be used anywhere
-// an Allocator is required.
-//
-// DefaultAllocator is safe to use from multiple goroutines.
-var DefaultAllocator Allocator = mallocator.NewMallocator()
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/doc.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/doc.go
deleted file mode 100644
index 20a28e4e2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/doc.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
-Package memory provides support for allocating and manipulating memory at a low level.
-
-The build tag 'mallocator' will switch the default allocator to one backed by libc malloc. This also requires CGO.
-*/
-package memory
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/go_allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/go_allocator.go
deleted file mode 100644
index 1017eb688..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/go_allocator.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package memory
-
-type GoAllocator struct{}
-
-func NewGoAllocator() *GoAllocator { return &GoAllocator{} }
-
-func (a *GoAllocator) Allocate(size int) []byte {
- buf := make([]byte, size+alignment) // padding for 64-byte alignment
- addr := int(addressOf(buf))
- next := roundUpToMultipleOf64(addr)
- if addr != next {
- shift := next - addr
- return buf[shift : size+shift : size+shift]
- }
- return buf[:size:size]
-}
-
-func (a *GoAllocator) Reallocate(size int, b []byte) []byte {
- if cap(b) >= size {
- return b[:size]
- }
- newBuf := a.Allocate(size)
- copy(newBuf, b)
- return newBuf
-}
-
-func (a *GoAllocator) Free(b []byte) {}
-
-var (
- _ Allocator = (*GoAllocator)(nil)
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.cc b/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.cc
deleted file mode 100644
index b2b037374..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.cc
+++ /dev/null
@@ -1,71 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// +build ccalloc
-
-#include "allocator.h"
-#include "arrow/memory_pool.h"
-#include "helpers.h"
-
-struct mem_holder {
- std::unique_ptr<arrow::MemoryPool> owned_pool;
- arrow::MemoryPool* pool;
-};
-
-ArrowMemoryPool arrow_create_memory_pool(bool enable_logging) {
- auto holder = std::make_shared<mem_holder>();
- if (enable_logging) {
- holder->owned_pool.reset(new arrow::LoggingMemoryPool(arrow::default_memory_pool()));
- holder->pool = holder->owned_pool.get();
- } else {
- holder->pool = arrow::default_memory_pool();
- }
-
- return create_ref(holder);
-}
-
-void arrow_release_pool(ArrowMemoryPool pool) {
- release_ref<mem_holder>(pool);
-}
-
-int arrow_pool_allocate(ArrowMemoryPool pool, int64_t size, uint8_t** out) {
- auto holder = retrieve_instance<mem_holder>(pool);
- auto status = holder->pool->Allocate(size, out);
- if (!status.ok()) {
- return 1;
- }
- return 0;
-}
-
-void arrow_pool_free(ArrowMemoryPool pool, uint8_t* buffer, int64_t size) {
- auto holder = retrieve_instance<mem_holder>(pool);
- holder->pool->Free(buffer, size);
-}
-
-int arrow_pool_reallocate(ArrowMemoryPool pool, int64_t old_size, int64_t new_size, uint8_t** ptr) {
- auto holder = retrieve_instance<mem_holder>(pool);
- auto status = holder->pool->Reallocate(old_size, new_size, ptr);
- if (!status.ok()) {
- return 1;
- }
- return 0;
-}
-
-int64_t arrow_pool_bytes_allocated(ArrowMemoryPool pool) {
- auto holder = retrieve_instance<mem_holder>(pool);
- return holder->pool->bytes_allocated();
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.go
deleted file mode 100644
index 48f34d862..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.go
+++ /dev/null
@@ -1,108 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build ccalloc
-// +build ccalloc
-
-package cgoalloc
-
-// #cgo !windows pkg-config: arrow
-// #cgo CXXFLAGS: -std=c++17
-// #cgo windows LDFLAGS: -larrow
-// #include "allocator.h"
-import "C"
-import (
- "reflect"
- "unsafe"
-)
-
-// CGOMemPool is an alias to the typedef'd uintptr from the allocator.h file
-type CGOMemPool = C.ArrowMemoryPool
-
-// CgoPoolAlloc allocates a block of memory of length 'size' using the memory
-// pool that is passed in.
-func CgoPoolAlloc(pool CGOMemPool, size int) []byte {
- var ret []byte
- if size == 0 {
- return ret
- }
-
- var out *C.uint8_t
- C.arrow_pool_allocate(pool, C.int64_t(size), (**C.uint8_t)(unsafe.Pointer(&out)))
-
- s := (*reflect.SliceHeader)(unsafe.Pointer(&ret))
- s.Data = uintptr(unsafe.Pointer(out))
- s.Len = size
- s.Cap = size
-
- return ret
-}
-
-// CgoPoolRealloc calls 'reallocate' on the block of memory passed in which must
-// be a slice that was returned by CgoPoolAlloc or CgoPoolRealloc.
-func CgoPoolRealloc(pool CGOMemPool, size int, b []byte) []byte {
- if len(b) == 0 {
- return CgoPoolAlloc(pool, size)
- }
-
- oldSize := C.int64_t(len(b))
- data := (*C.uint8_t)(unsafe.Pointer(&b[0]))
- C.arrow_pool_reallocate(pool, oldSize, C.int64_t(size), &data)
-
- var ret []byte
- s := (*reflect.SliceHeader)(unsafe.Pointer(&ret))
- s.Data = uintptr(unsafe.Pointer(data))
- s.Len = size
- s.Cap = size
-
- return ret
-}
-
-// CgoPoolFree uses the indicated memory pool to free a block of memory. The
-// slice passed in *must* be a slice which was returned by CgoPoolAlloc or
-// CgoPoolRealloc.
-func CgoPoolFree(pool CGOMemPool, b []byte) {
- if len(b) == 0 {
- return
- }
-
- oldSize := C.int64_t(len(b))
- data := (*C.uint8_t)(unsafe.Pointer(&b[0]))
- C.arrow_pool_free(pool, data, oldSize)
-}
-
-// CgoPoolCurBytes returns the current number of bytes allocated by the
-// passed in memory pool.
-func CgoPoolCurBytes(pool CGOMemPool) int64 {
- return int64(C.arrow_pool_bytes_allocated(pool))
-}
-
-// ReleaseCGOMemPool deletes and frees the memory associated with the
-// passed in memory pool on the C++ side.
-func ReleaseCGOMemPool(pool CGOMemPool) {
- C.arrow_release_pool(pool)
-}
-
-// NewCgoArrowAllocator constructs a new memory pool in C++ and returns
-// a reference to it which can then be used with the other functions
-// here in order to use it.
-//
-// Optionally if logging is true, a logging proxy will be wrapped around
-// the memory pool so that it will output a line every time memory is
-// allocated, reallocated or freed along with the size of the allocation.
-func NewCgoArrowAllocator(logging bool) CGOMemPool {
- return C.arrow_create_memory_pool(C.bool(logging))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.h b/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.h
deleted file mode 100644
index 0c8744375..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/allocator.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <stdint.h>
-#include <stdbool.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef uintptr_t ArrowMemoryPool;
-
-ArrowMemoryPool arrow_create_memory_pool(bool enable_logging);
-int arrow_pool_allocate(ArrowMemoryPool pool, int64_t size, uint8_t** out);
-int arrow_pool_reallocate(ArrowMemoryPool pool, int64_t old_size, int64_t new_size, uint8_t** ptr);
-void arrow_pool_free(ArrowMemoryPool pool, uint8_t* buffer, int64_t size);
-int64_t arrow_pool_bytes_allocated(ArrowMemoryPool pool);
-void arrow_release_pool(ArrowMemoryPool pool);
-
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/helpers.h b/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/helpers.h
deleted file mode 100644
index fa5feb6a9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/internal/cgoalloc/helpers.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <cstdint>
-#include <memory>
-
-// helper functions to be included by C++ code for interacting with Cgo
-
-// create_ref will construct a shared_ptr on the heap and return a pointer
-// to it. the returned uintptr_t can then be used with retrieve_instance
-// to get back the shared_ptr and object it refers to. This ensures that
-// the object outlives the exported function so that Go can use it.
-template <typename T>
-uintptr_t create_ref(std::shared_ptr<T> t) {
- std::shared_ptr<T>* retained_ptr = new std::shared_ptr<T>(t);
- return reinterpret_cast<uintptr_t>(retained_ptr);
-}
-
-// retrieve_instance is used to get back the shared_ptr which was created with
-// create_ref in order to use it in functions where the caller passes back the
-// uintptr_t so that an object can be managed by C++ while a reference to it
-// is passed around in C/CGO
-template <typename T>
-std::shared_ptr<T> retrieve_instance(uintptr_t ref) {
- std::shared_ptr<T>* retrieved_ptr = reinterpret_cast<std::shared_ptr<T>*>(ref);
- return *retrieved_ptr;
-}
-
-// release_ref deletes the shared_ptr that was created by create_ref, freeing the
-// object if it was the last shared_ptr which referenced it as per normal smart_ptr
-// rules.
-template <typename T>
-void release_ref(uintptr_t ref) {
- std::shared_ptr<T>* retrieved_ptr = reinterpret_cast<std::shared_ptr<T>*>(ref);
- delete retrieved_ptr;
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/doc.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/doc.go
deleted file mode 100644
index a399d85ee..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/doc.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-// Package mallocator defines an allocator implementation for
-// memory.Allocator which defers to libc malloc. It requires
-// usage of CGO.
-package mallocator
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/mallocator.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/mallocator.go
deleted file mode 100644
index a111f009e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/mallocator/mallocator.go
+++ /dev/null
@@ -1,115 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-package mallocator
-
-// #include <stdlib.h>
-// #include <string.h>
-//
-// void* realloc_and_initialize(void* ptr, size_t old_len, size_t new_len) {
-// void* new_ptr = realloc(ptr, new_len);
-// if (new_ptr && new_len > old_len) {
-// memset(new_ptr + old_len, 0, new_len - old_len);
-// }
-// return new_ptr;
-// }
-import "C"
-
-import (
- "reflect"
- "sync/atomic"
- "unsafe"
-)
-
-// Mallocator is an allocator which defers to libc malloc.
-//
-// The primary reason to use this is when exporting data across the C Data
-// Interface. CGO requires that pointers to Go memory are not stored in C
-// memory, which is exactly what the C Data Interface would otherwise
-// require. By allocating with Mallocator up front, we can safely export the
-// buffers in Arrow arrays without copying buffers or violating CGO rules.
-//
-// The build tag 'mallocator' will also make this the default allocator.
-type Mallocator struct {
- allocatedBytes uint64
-}
-
-func NewMallocator() *Mallocator { return &Mallocator{} }
-
-func (alloc *Mallocator) Allocate(size int) []byte {
- // Use calloc to zero-initialize memory.
- // > ...the current implementation may sometimes cause a runtime error if the
- // > contents of the C memory appear to be a Go pointer. Therefore, avoid
- // > passing uninitialized C memory to Go code if the Go code is going to store
- // > pointer values in it. Zero out the memory in C before passing it to Go.
- if size < 0 {
- panic("mallocator: negative size")
- }
- ptr, err := C.calloc(C.size_t(size), 1)
- if err != nil {
- panic(err)
- } else if ptr == nil {
- panic("mallocator: out of memory")
- }
- atomic.AddUint64(&alloc.allocatedBytes, uint64(size))
- return unsafe.Slice((*byte)(ptr), size)
-}
-
-func (alloc *Mallocator) Free(b []byte) {
- sh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
- C.free(unsafe.Pointer(sh.Data))
- // Subtract sh.Len via two's complement (since atomic doesn't offer subtract)
- atomic.AddUint64(&alloc.allocatedBytes, ^(uint64(sh.Len) - 1))
-}
-
-func (alloc *Mallocator) Reallocate(size int, b []byte) []byte {
- if size < 0 {
- panic("mallocator: negative size")
- }
- sh := (*reflect.SliceHeader)(unsafe.Pointer(&b))
- ptr, err := C.realloc_and_initialize(unsafe.Pointer(sh.Data), C.size_t(sh.Cap), C.size_t(size))
- if err != nil {
- panic(err)
- } else if ptr == nil && size != 0 {
- panic("mallocator: out of memory")
- }
- delta := size - len(b)
- if delta >= 0 {
- atomic.AddUint64(&alloc.allocatedBytes, uint64(delta))
- } else {
- atomic.AddUint64(&alloc.allocatedBytes, ^(uint64(-delta) - 1))
- }
- return unsafe.Slice((*byte)(ptr), size)
-}
-
-func (alloc *Mallocator) AllocatedBytes() int64 {
- return int64(alloc.allocatedBytes)
-}
-
-// Duplicate interface to avoid circular import
-type TestingT interface {
- Errorf(format string, args ...interface{})
- Helper()
-}
-
-func (alloc *Mallocator) AssertSize(t TestingT, sz int) {
- cur := alloc.AllocatedBytes()
- if int64(sz) != cur {
- t.Helper()
- t.Errorf("invalid memory size exp=%d, got=%d", sz, cur)
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory.go
deleted file mode 100644
index 43627f5ed..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package memory
-
-var (
- memset func(b []byte, c byte) = memory_memset_go
-)
-
-// Set assigns the value c to every element of the slice buf.
-func Set(buf []byte, c byte) {
- memset(buf, c)
-}
-
-// memory_memset_go reference implementation
-func memory_memset_go(buf []byte, c byte) {
- for i := 0; i < len(buf); i++ {
- buf[i] = c
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_amd64.go
deleted file mode 100644
index 58356d648..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_amd64.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !noasm
-
-package memory
-
-import (
- "golang.org/x/sys/cpu"
-)
-
-func init() {
- if cpu.X86.HasAVX2 {
- memset = memory_memset_avx2
- } else if cpu.X86.HasSSE42 {
- memset = memory_memset_sse4
- } else {
- memset = memory_memset_go
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_arm64.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_arm64.go
deleted file mode 100644
index 3db5d1101..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_arm64.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !noasm
-
-package memory
-
-import (
- "golang.org/x/sys/cpu"
-)
-
-func init() {
- if cpu.ARM64.HasASIMD {
- memset = memory_memset_neon
- } else {
- memset = memory_memset_go
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.go
deleted file mode 100644
index 2bd851ea5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !noasm
-
-package memory
-
-import "unsafe"
-
-//go:noescape
-func _memset_avx2(buf unsafe.Pointer, len, c uintptr)
-
-func memory_memset_avx2(buf []byte, c byte) {
- if len(buf) == 0 {
- return
- }
-
- var (
- p1 = unsafe.Pointer(&buf[0])
- p2 = uintptr(len(buf))
- p3 = uintptr(c)
- )
- if len(buf) > 2000 || isMultipleOfPowerOf2(len(buf), 256) {
- _memset_avx2(p1, p2, p3)
- } else {
- _memset_sse4(p1, p2, p3)
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.s b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.s
deleted file mode 100644
index 2a77807cb..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_avx2_amd64.s
+++ /dev/null
@@ -1,85 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_memset_avx2(SB), $0-24
-
- MOVQ buf+0(FP), DI
- MOVQ len+8(FP), SI
- MOVQ c+16(FP), DX
-
- LONG $0x371c8d4c // lea r11, [rdi + rsi]
- WORD $0x3949; BYTE $0xfb // cmp r11, rdi
- JBE LBB0_13
- LONG $0x80fe8148; WORD $0x0000; BYTE $0x00 // cmp rsi, 128
- JB LBB0_12
- WORD $0x8949; BYTE $0xf0 // mov r8, rsi
- LONG $0x80e08349 // and r8, -128
- WORD $0x8949; BYTE $0xf2 // mov r10, rsi
- LONG $0x80e28349 // and r10, -128
- JE LBB0_12
- LONG $0xc26ef9c5 // vmovd xmm0, edx
- LONG $0x787de2c4; BYTE $0xc0 // vpbroadcastb ymm0, xmm0
- LONG $0x804a8d4d // lea r9, [r10 - 128]
- WORD $0x8944; BYTE $0xc8 // mov eax, r9d
- WORD $0xe8c1; BYTE $0x07 // shr eax, 7
- WORD $0xc0ff // inc eax
- LONG $0x03e08348 // and rax, 3
- JE LBB0_4
- WORD $0xf748; BYTE $0xd8 // neg rax
- WORD $0xc931 // xor ecx, ecx
-
-LBB0_6:
- LONG $0x047ffec5; BYTE $0x0f // vmovdqu yword [rdi + rcx], ymm0
- LONG $0x447ffec5; WORD $0x200f // vmovdqu yword [rdi + rcx + 32], ymm0
- LONG $0x447ffec5; WORD $0x400f // vmovdqu yword [rdi + rcx + 64], ymm0
- LONG $0x447ffec5; WORD $0x600f // vmovdqu yword [rdi + rcx + 96], ymm0
- LONG $0x80e98348 // sub rcx, -128
- WORD $0xff48; BYTE $0xc0 // inc rax
- JNE LBB0_6
- JMP LBB0_7
-
-LBB0_4:
- WORD $0xc931 // xor ecx, ecx
-
-LBB0_7:
- LONG $0x80f98149; WORD $0x0001; BYTE $0x00 // cmp r9, 384
- JB LBB0_10
- WORD $0x894c; BYTE $0xd0 // mov rax, r10
- WORD $0x2948; BYTE $0xc8 // sub rax, rcx
- QUAD $0x000001e00f8c8d48 // lea rcx, [rdi + rcx + 480]
-
-LBB0_9:
- QUAD $0xfffffe20817ffec5 // vmovdqu yword [rcx - 480], ymm0
- QUAD $0xfffffe40817ffec5 // vmovdqu yword [rcx - 448], ymm0
- QUAD $0xfffffe60817ffec5 // vmovdqu yword [rcx - 416], ymm0
- QUAD $0xfffffe80817ffec5 // vmovdqu yword [rcx - 384], ymm0
- QUAD $0xfffffea0817ffec5 // vmovdqu yword [rcx - 352], ymm0
- QUAD $0xfffffec0817ffec5 // vmovdqu yword [rcx - 320], ymm0
- QUAD $0xfffffee0817ffec5 // vmovdqu yword [rcx - 288], ymm0
- QUAD $0xffffff00817ffec5 // vmovdqu yword [rcx - 256], ymm0
- QUAD $0xffffff20817ffec5 // vmovdqu yword [rcx - 224], ymm0
- QUAD $0xffffff40817ffec5 // vmovdqu yword [rcx - 192], ymm0
- QUAD $0xffffff60817ffec5 // vmovdqu yword [rcx - 160], ymm0
- LONG $0x417ffec5; BYTE $0x80 // vmovdqu yword [rcx - 128], ymm0
- LONG $0x417ffec5; BYTE $0xa0 // vmovdqu yword [rcx - 96], ymm0
- LONG $0x417ffec5; BYTE $0xc0 // vmovdqu yword [rcx - 64], ymm0
- LONG $0x417ffec5; BYTE $0xe0 // vmovdqu yword [rcx - 32], ymm0
- LONG $0x017ffec5 // vmovdqu yword [rcx], ymm0
- LONG $0x00c18148; WORD $0x0002; BYTE $0x00 // add rcx, 512
- LONG $0xfe000548; WORD $0xffff // add rax, -512
- JNE LBB0_9
-
-LBB0_10:
- WORD $0x3949; BYTE $0xf2 // cmp r10, rsi
- JE LBB0_13
- WORD $0x014c; BYTE $0xc7 // add rdi, r8
-
-LBB0_12:
- WORD $0x1788 // mov byte [rdi], dl
- WORD $0xff48; BYTE $0xc7 // inc rdi
- WORD $0x3949; BYTE $0xfb // cmp r11, rdi
- JNE LBB0_12
-
-LBB0_13:
- VZEROUPPER
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_js_wasm.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_js_wasm.go
deleted file mode 100644
index 9b94d99ff..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_js_wasm.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build wasm
-
-package memory
-
-func init() {
- memset = memory_memset_go
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.go
deleted file mode 100644
index 6cb0400c9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !noasm
-
-package memory
-
-import "unsafe"
-
-//go:noescape
-func _memset_neon(buf unsafe.Pointer, len, c uintptr)
-
-func memory_memset_neon(buf []byte, c byte) {
- if len(buf) == 0 {
- return
- }
- _memset_neon(unsafe.Pointer(&buf[0]), uintptr(len(buf)), uintptr(c))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.s b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.s
deleted file mode 100644
index 18655cc7a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_neon_arm64.s
+++ /dev/null
@@ -1,43 +0,0 @@
-//+build !noasm !appengine
-
-// ARROW-15320:
-// (C2GOASM doesn't work correctly for Arm64)
-// Partly GENERATED BY asm2plan9s.
-
-// func _memset_neon(buf unsafe.Pointer, len, c uintptr)
-TEXT ·_memset_neon(SB), $0-24
-
- MOVD buf+0(FP), R0
- MOVD len+8(FP), R1
- MOVD c+16(FP), R2
-
- WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
- WORD $0x8b010008 // add x8, x0, x1
- WORD $0xeb00011f // cmp x8, x0
- WORD $0x910003fd // mov x29, sp
- BLS LBB0_7
-
- WORD $0xf100803f // cmp x1, #32
- BHS LBB0_3
- WORD $0xaa0003e9 // mov x9, x0
- JMP LBB0_6
-LBB0_3:
- WORD $0x927be82a // and x10, x1, #0xffffffffffffffe0
- WORD $0x4e010c40 // dup v0.16b, w2
- WORD $0x8b0a0009 // add x9, x0, x10
- WORD $0x9100400b // add x11, x0, #16
- WORD $0xaa0a03ec // mov x12, x10
-LBB0_4:
- WORD $0xad3f8160 // stp q0, q0, [x11, #-16]
- WORD $0xf100818c // subs x12, x12, #32
- WORD $0x9100816b // add x11, x11, #32
- BNE LBB0_4
- WORD $0xeb01015f // cmp x10, x1
- BEQ LBB0_7
-LBB0_6:
- WORD $0x38001522 // strb w2, [x9], #1
- WORD $0xeb09011f // cmp x8, x9
- BNE LBB0_6
-LBB0_7:
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_noasm.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_noasm.go
deleted file mode 100644
index bf8846fa2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_noasm.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build noasm
-
-package memory
-
-func init() {
- memset = memory_memset_go
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.go
deleted file mode 100644
index 716c0d270..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// +build !noasm
-
-package memory
-
-import "unsafe"
-
-//go:noescape
-func _memset_sse4(buf unsafe.Pointer, len, c uintptr)
-
-func memory_memset_sse4(buf []byte, c byte) {
- if len(buf) == 0 {
- return
- }
- _memset_sse4(unsafe.Pointer(&buf[0]), uintptr(len(buf)), uintptr(c))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.s b/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.s
deleted file mode 100644
index b1906f99b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/memory_sse4_amd64.s
+++ /dev/null
@@ -1,84 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_memset_sse4(SB), $0-24
-
- MOVQ buf+0(FP), DI
- MOVQ len+8(FP), SI
- MOVQ c+16(FP), DX
-
- LONG $0x371c8d4c // lea r11, [rdi + rsi]
- WORD $0x3949; BYTE $0xfb // cmp r11, rdi
- JBE LBB0_13
- LONG $0x20fe8348 // cmp rsi, 32
- JB LBB0_12
- WORD $0x8949; BYTE $0xf0 // mov r8, rsi
- LONG $0xe0e08349 // and r8, -32
- WORD $0x8949; BYTE $0xf2 // mov r10, rsi
- LONG $0xe0e28349 // and r10, -32
- JE LBB0_12
- WORD $0xb60f; BYTE $0xc2 // movzx eax, dl
- LONG $0xc06e0f66 // movd xmm0, eax
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0x00380f66; BYTE $0xc1 // pshufb xmm0, xmm1
- LONG $0xe04a8d4d // lea r9, [r10 - 32]
- WORD $0x8944; BYTE $0xc9 // mov ecx, r9d
- WORD $0xe9c1; BYTE $0x05 // shr ecx, 5
- WORD $0xc1ff // inc ecx
- LONG $0x07e18348 // and rcx, 7
- JE LBB0_4
- WORD $0xf748; BYTE $0xd9 // neg rcx
- WORD $0xc031 // xor eax, eax
-
-LBB0_6:
- LONG $0x047f0ff3; BYTE $0x07 // movdqu oword [rdi + rax], xmm0
- LONG $0x447f0ff3; WORD $0x1007 // movdqu oword [rdi + rax + 16], xmm0
- LONG $0x20c08348 // add rax, 32
- WORD $0xff48; BYTE $0xc1 // inc rcx
- JNE LBB0_6
- JMP LBB0_7
-
-LBB0_4:
- WORD $0xc031 // xor eax, eax
-
-LBB0_7:
- LONG $0xe0f98149; WORD $0x0000; BYTE $0x00 // cmp r9, 224
- JB LBB0_10
- WORD $0x894c; BYTE $0xd1 // mov rcx, r10
- WORD $0x2948; BYTE $0xc1 // sub rcx, rax
- QUAD $0x000000f007848d48 // lea rax, [rdi + rax + 240]
-
-LBB0_9:
- QUAD $0xffffff10807f0ff3 // movdqu oword [rax - 240], xmm0
- QUAD $0xffffff20807f0ff3 // movdqu oword [rax - 224], xmm0
- QUAD $0xffffff30807f0ff3 // movdqu oword [rax - 208], xmm0
- QUAD $0xffffff40807f0ff3 // movdqu oword [rax - 192], xmm0
- QUAD $0xffffff50807f0ff3 // movdqu oword [rax - 176], xmm0
- QUAD $0xffffff60807f0ff3 // movdqu oword [rax - 160], xmm0
- QUAD $0xffffff70807f0ff3 // movdqu oword [rax - 144], xmm0
- LONG $0x407f0ff3; BYTE $0x80 // movdqu oword [rax - 128], xmm0
- LONG $0x407f0ff3; BYTE $0x90 // movdqu oword [rax - 112], xmm0
- LONG $0x407f0ff3; BYTE $0xa0 // movdqu oword [rax - 96], xmm0
- LONG $0x407f0ff3; BYTE $0xb0 // movdqu oword [rax - 80], xmm0
- LONG $0x407f0ff3; BYTE $0xc0 // movdqu oword [rax - 64], xmm0
- LONG $0x407f0ff3; BYTE $0xd0 // movdqu oword [rax - 48], xmm0
- LONG $0x407f0ff3; BYTE $0xe0 // movdqu oword [rax - 32], xmm0
- LONG $0x407f0ff3; BYTE $0xf0 // movdqu oword [rax - 16], xmm0
- LONG $0x007f0ff3 // movdqu oword [rax], xmm0
- LONG $0x01000548; WORD $0x0000 // add rax, 256
- LONG $0x00c18148; WORD $0xffff; BYTE $0xff // add rcx, -256
- JNE LBB0_9
-
-LBB0_10:
- WORD $0x3949; BYTE $0xf2 // cmp r10, rsi
- JE LBB0_13
- WORD $0x014c; BYTE $0xc7 // add rdi, r8
-
-LBB0_12:
- WORD $0x1788 // mov byte [rdi], dl
- WORD $0xff48; BYTE $0xc7 // inc rdi
- WORD $0x3949; BYTE $0xfb // cmp r11, rdi
- JNE LBB0_12
-
-LBB0_13:
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/memory/util.go b/vendor/github.com/apache/arrow/go/v15/arrow/memory/util.go
deleted file mode 100644
index 6cc7ec91b..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/memory/util.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package memory
-
-import "unsafe"
-
-func roundToPowerOf2(v, round int) int {
- forceCarry := round - 1
- truncateMask := ^forceCarry
- return (v + forceCarry) & truncateMask
-}
-
-func roundUpToMultipleOf64(v int) int {
- return roundToPowerOf2(v, 64)
-}
-
-func isMultipleOfPowerOf2(v int, d int) bool {
- return (v & (d - 1)) == 0
-}
-
-func addressOf(b []byte) uintptr {
- return uintptr(unsafe.Pointer(&b[0]))
-}
-
-func ReleaseBuffers(buffers []*Buffer) {
- for _, b := range buffers {
- if b != nil {
- b.Release()
- }
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/numeric.schema.json b/vendor/github.com/apache/arrow/go/v15/arrow/numeric.schema.json
deleted file mode 100644
index 7fa2800a5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/numeric.schema.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "title": "templates",
- "type": "array",
- "items": {
- "title": "template",
- "type": "object",
- "properties": {
- "Name": {
- "type": "string",
- "description": "The name of the template type"
- }
- },
- "required": ["Name"]
- }
-} \ No newline at end of file
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/numeric.tmpldata b/vendor/github.com/apache/arrow/go/v15/arrow/numeric.tmpldata
deleted file mode 100644
index 3c2d63b7c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/numeric.tmpldata
+++ /dev/null
@@ -1,135 +0,0 @@
-[
- {
- "Name": "Int64",
- "name": "int64",
- "Type": "int64",
- "Default": "0",
- "Size": "8",
- "Opt": {
- "BufferBuilder": true
- }
- },
- {
- "Name": "Uint64",
- "name": "uint64",
- "Type": "uint64",
- "Default": "0",
- "Size": "8"
- },
- {
- "Name": "Float64",
- "name": "float64",
- "Type": "float64",
- "Default": "0",
- "Size": "8"
- },
- {
- "Name": "Int32",
- "name": "int32",
- "Type": "int32",
- "Default": "0",
- "Size": "4",
- "Opt": {
- "BufferBuilder": true
- }
- },
- {
- "Name": "Uint32",
- "name": "uint32",
- "Type": "uint32",
- "Default": "0",
- "Size": "4"
- },
- {
- "Name": "Float32",
- "name": "float32",
- "Type": "float32",
- "Default": "0",
- "Size": "4"
- },
- {
- "Name": "Int16",
- "name": "int16",
- "Type": "int16",
- "Default": "0",
- "Size": "2"
- },
- {
- "Name": "Uint16",
- "name": "uint16",
- "Type": "uint16",
- "Default": "0",
- "Size": "2"
- },
- {
- "Name": "Int8",
- "name": "int8",
- "Type": "int8",
- "Default": "0",
- "Size": "1",
- "Opt": {
- "BufferBuilder": true
- }
- },
- {
- "Name": "Uint8",
- "name": "uint8",
- "Type": "uint8",
- "Default": "0",
- "Size": "1"
- },
- {
- "Name": "Time32",
- "name": "time32",
- "Type": "Time32",
- "QualifiedType": "arrow.Time32",
- "InternalType": "int32",
- "Default": "0",
- "Size": "4",
- "Opt": {
- "Parametric": true
- }
- },
- {
- "Name": "Time64",
- "name": "time64",
- "Type": "Time64",
- "QualifiedType": "arrow.Time64",
- "InternalType": "int64",
- "Default": "0",
- "Size": "8",
- "Opt": {
- "Parametric": true
- }
- },
- {
- "Name": "Date32",
- "name": "date32",
- "Type": "Date32",
- "QualifiedType": "arrow.Date32",
- "InternalType": "int32",
- "Default": "0",
- "Size": "4"
- },
- {
- "Name": "Date64",
- "name": "date64",
- "Type": "Date64",
- "QualifiedType": "arrow.Date64",
- "InternalType": "int64",
- "Default": "0",
- "Size": "8"
- },
- {
- "Name": "Duration",
- "name": "duration",
- "Type": "Duration",
- "QualifiedType": "arrow.Duration",
- "InternalType": "int64",
- "Default": "0",
- "Size": "8",
- "Opt": {
- "Parametric": true
- }
- }
-]
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/record.go b/vendor/github.com/apache/arrow/go/v15/arrow/record.go
deleted file mode 100644
index 885af3803..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/record.go
+++ /dev/null
@@ -1,49 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import "github.com/apache/arrow/go/v15/internal/json"
-
-// Record is a collection of equal-length arrays matching a particular Schema.
-// Also known as a RecordBatch in the spec and in some implementations.
-//
-// It is also possible to construct a Table from a collection of Records that
-// all have the same schema.
-type Record interface {
- json.Marshaler
-
- Release()
- Retain()
-
- Schema() *Schema
-
- NumRows() int64
- NumCols() int64
-
- Columns() []Array
- Column(i int) Array
- ColumnName(i int) string
- SetColumn(i int, col Array) (Record, error)
-
- // NewSlice constructs a zero-copy slice of the record with the indicated
- // indices i and j, corresponding to array[i:j].
- // The returned record must be Release()'d after use.
- //
- // NewSlice panics if the slice is outside the valid range of the record array.
- // NewSlice panics if j < i.
- NewSlice(i, j int64) Record
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/schema.go b/vendor/github.com/apache/arrow/go/v15/arrow/schema.go
deleted file mode 100644
index 7a05bb188..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/schema.go
+++ /dev/null
@@ -1,301 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
- "sort"
- "strings"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-type Metadata struct {
- keys []string
- values []string
-}
-
-func NewMetadata(keys, values []string) Metadata {
- if len(keys) != len(values) {
- panic("arrow: len mismatch")
- }
-
- n := len(keys)
- if n == 0 {
- return Metadata{}
- }
-
- md := Metadata{
- keys: make([]string, n),
- values: make([]string, n),
- }
- copy(md.keys, keys)
- copy(md.values, values)
- return md
-}
-
-func MetadataFrom(kv map[string]string) Metadata {
- md := Metadata{
- keys: make([]string, 0, len(kv)),
- values: make([]string, 0, len(kv)),
- }
- for k := range kv {
- md.keys = append(md.keys, k)
- }
- sort.Strings(md.keys)
- for _, k := range md.keys {
- md.values = append(md.values, kv[k])
- }
- return md
-}
-
-func (md Metadata) Len() int { return len(md.keys) }
-func (md Metadata) Keys() []string { return md.keys }
-func (md Metadata) Values() []string { return md.values }
-func (md Metadata) ToMap() map[string]string {
- m := make(map[string]string, len(md.keys))
- for i := range md.keys {
- m[md.keys[i]] = md.values[i]
- }
- return m
-}
-
-func (md Metadata) String() string {
- o := new(strings.Builder)
- fmt.Fprintf(o, "[")
- for i := range md.keys {
- if i > 0 {
- fmt.Fprintf(o, ", ")
- }
- fmt.Fprintf(o, "%q: %q", md.keys[i], md.values[i])
- }
- fmt.Fprintf(o, "]")
- return o.String()
-}
-
-// FindKey returns the index of the key-value pair with the provided key name,
-// or -1 if such a key does not exist.
-func (md Metadata) FindKey(k string) int {
- for i, v := range md.keys {
- if v == k {
- return i
- }
- }
- return -1
-}
-
-// GetValue returns the value associated with the provided key name.
-// If the key does not exist, the second return value is false.
-func (md Metadata) GetValue(k string) (string, bool) {
- i := md.FindKey(k)
- if i < 0 {
- return "", false
- }
- return md.values[i], true
-}
-
-func (md Metadata) clone() Metadata {
- if len(md.keys) == 0 {
- return Metadata{}
- }
-
- o := Metadata{
- keys: make([]string, len(md.keys)),
- values: make([]string, len(md.values)),
- }
- copy(o.keys, md.keys)
- copy(o.values, md.values)
-
- return o
-}
-
-func (md Metadata) sortedIndices() []int {
- idxes := make([]int, len(md.keys))
- for i := range idxes {
- idxes[i] = i
- }
-
- sort.Slice(idxes, func(i, j int) bool {
- return md.keys[idxes[i]] < md.keys[idxes[j]]
- })
- return idxes
-}
-
-func (md Metadata) Equal(rhs Metadata) bool {
- if md.Len() != rhs.Len() {
- return false
- }
-
- idxes := md.sortedIndices()
- rhsIdxes := rhs.sortedIndices()
- for i := range idxes {
- j := idxes[i]
- k := rhsIdxes[i]
- if md.keys[j] != rhs.keys[k] || md.values[j] != rhs.values[k] {
- return false
- }
- }
- return true
-}
-
-// Schema is a sequence of Field values, describing the columns of a table or
-// a record batch.
-type Schema struct {
- fields []Field
- index map[string][]int
- meta Metadata
- endianness endian.Endianness
-}
-
-// NewSchema returns a new Schema value from the slice of fields and metadata.
-//
-// NewSchema panics if there is a field with an invalid DataType.
-func NewSchema(fields []Field, metadata *Metadata) *Schema {
- return NewSchemaWithEndian(fields, metadata, endian.NativeEndian)
-}
-
-func NewSchemaWithEndian(fields []Field, metadata *Metadata, e endian.Endianness) *Schema {
- sc := &Schema{
- fields: make([]Field, 0, len(fields)),
- index: make(map[string][]int, len(fields)),
- endianness: e,
- }
- if metadata != nil {
- sc.meta = metadata.clone()
- }
- for i, field := range fields {
- if field.Type == nil {
- panic("arrow: field with nil DataType")
- }
- sc.fields = append(sc.fields, field)
- sc.index[field.Name] = append(sc.index[field.Name], i)
- }
- return sc
-}
-
-func (sc *Schema) WithEndianness(e endian.Endianness) *Schema {
- return NewSchemaWithEndian(sc.fields, &sc.meta, e)
-}
-
-func (sc *Schema) Endianness() endian.Endianness { return sc.endianness }
-func (sc *Schema) IsNativeEndian() bool { return sc.endianness == endian.NativeEndian }
-func (sc *Schema) Metadata() Metadata { return sc.meta }
-func (sc *Schema) Fields() []Field {
- fields := make([]Field, len(sc.fields))
- copy(fields, sc.fields)
- return fields
-}
-func (sc *Schema) Field(i int) Field { return sc.fields[i] }
-func (sc *Schema) NumFields() int { return len(sc.fields) }
-
-func (sc *Schema) FieldsByName(n string) ([]Field, bool) {
- indices, ok := sc.index[n]
- if !ok {
- return nil, ok
- }
- fields := make([]Field, 0, len(indices))
- for _, v := range indices {
- fields = append(fields, sc.fields[v])
- }
- return fields, ok
-}
-
-// FieldIndices returns the indices of the named field or nil.
-func (sc *Schema) FieldIndices(n string) []int {
- return sc.index[n]
-}
-
-func (sc *Schema) HasField(n string) bool { return len(sc.FieldIndices(n)) > 0 }
-func (sc *Schema) HasMetadata() bool { return len(sc.meta.keys) > 0 }
-
-// Equal returns whether two schema are equal.
-// Equal does not compare the metadata.
-func (sc *Schema) Equal(o *Schema) bool {
- switch {
- case sc == o:
- return true
- case sc == nil || o == nil:
- return false
- case len(sc.fields) != len(o.fields):
- return false
- case sc.endianness != o.endianness:
- return false
- }
-
- for i := range sc.fields {
- if !sc.fields[i].Equal(o.fields[i]) {
- return false
- }
- }
- return true
-}
-
-// AddField adds a field at the given index and return a new schema.
-func (s *Schema) AddField(i int, field Field) (*Schema, error) {
- if i < 0 || i > len(s.fields) {
- return nil, fmt.Errorf("arrow: invalid field index %d", i)
- }
-
- fields := make([]Field, len(s.fields)+1)
- copy(fields[:i], s.fields[:i])
- fields[i] = field
- copy(fields[i+1:], s.fields[i:])
- return NewSchema(fields, &s.meta), nil
-}
-
-func (s *Schema) String() string {
- o := new(strings.Builder)
- fmt.Fprintf(o, "schema:\n fields: %d\n", s.NumFields())
- for i, f := range s.fields {
- if i > 0 {
- o.WriteString("\n")
- }
- fmt.Fprintf(o, " - %v", f)
- }
- if s.endianness != endian.NativeEndian {
- fmt.Fprintf(o, "\n endianness: %v", s.endianness)
- }
- if meta := s.Metadata(); meta.Len() > 0 {
- fmt.Fprintf(o, "\n metadata: %v", meta)
- }
- return o.String()
-}
-
-func (s *Schema) Fingerprint() string {
- if s == nil {
- return ""
- }
-
- var b strings.Builder
- b.WriteString("S{")
- for _, f := range s.fields {
- fieldFingerprint := f.Fingerprint()
- if fieldFingerprint == "" {
- return ""
- }
-
- b.WriteString(fieldFingerprint)
- b.WriteByte(';')
- }
- if s.endianness == endian.LittleEndian {
- b.WriteByte('L')
- } else {
- b.WriteByte('B')
- }
- b.WriteByte('}')
- return b.String()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/table.go b/vendor/github.com/apache/arrow/go/v15/arrow/table.go
deleted file mode 100644
index 82dc28370..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/table.go
+++ /dev/null
@@ -1,193 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "fmt"
- "sync/atomic"
-
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-// Table represents a logical sequence of chunked arrays of equal length. It is
-// similar to a Record except that the columns are ChunkedArrays instead,
-// allowing for a Table to be built up by chunks progressively whereas the columns
-// in a single Record are always each a single contiguous array.
-type Table interface {
- Schema() *Schema
- NumRows() int64
- NumCols() int64
- Column(i int) *Column
-
- // AddColumn adds a new column to the table and a corresponding field (of the same type)
- // to its schema, at the specified position. Returns the new table with updated columns and schema.
- AddColumn(pos int, f Field, c Column) (Table, error)
-
- Retain()
- Release()
-}
-
-// Column is an immutable column data structure consisting of
-// a field (type metadata) and a chunked data array.
-//
-// To get strongly typed data from a Column, you need to iterate the
-// chunks and type assert each individual Array. For example:
-//
-// switch column.DataType().ID {
-// case arrow.INT32:
-// for _, c := range column.Data().Chunks() {
-// arr := c.(*array.Int32)
-// // do something with arr
-// }
-// case arrow.INT64:
-// for _, c := range column.Data().Chunks() {
-// arr := c.(*array.Int64)
-// // do something with arr
-// }
-// case ...
-// }
-type Column struct {
- field Field
- data *Chunked
-}
-
-// NewColumnFromArr is a convenience function to create a column from
-// a field and a non-chunked array.
-//
-// This provides a simple mechanism for bypassing the middle step of
-// constructing a Chunked array of one and then releasing it because
-// of the ref counting.
-func NewColumnFromArr(field Field, arr Array) Column {
- if !TypeEqual(field.Type, arr.DataType()) {
- panic(fmt.Errorf("%w: arrow/array: inconsistent data type %s vs %s", ErrInvalid, field.Type, arr.DataType()))
- }
-
- arr.Retain()
- return Column{
- field: field,
- data: &Chunked{
- refCount: 1,
- chunks: []Array{arr},
- length: arr.Len(),
- nulls: arr.NullN(),
- dtype: field.Type,
- },
- }
-}
-
-// NewColumn returns a column from a field and a chunked data array.
-//
-// NewColumn panics if the field's data type is inconsistent with the data type
-// of the chunked data array.
-func NewColumn(field Field, chunks *Chunked) *Column {
- col := Column{
- field: field,
- data: chunks,
- }
- col.data.Retain()
-
- if !TypeEqual(col.data.DataType(), col.field.Type) {
- col.data.Release()
- panic(fmt.Errorf("%w: arrow/array: inconsistent data type %s vs %s", ErrInvalid, col.data.DataType(), col.field.Type))
- }
-
- return &col
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (col *Column) Retain() {
- col.data.Retain()
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (col *Column) Release() {
- col.data.Release()
-}
-
-func (col *Column) Len() int { return col.data.Len() }
-func (col *Column) NullN() int { return col.data.NullN() }
-func (col *Column) Data() *Chunked { return col.data }
-func (col *Column) Field() Field { return col.field }
-func (col *Column) Name() string { return col.field.Name }
-func (col *Column) DataType() DataType { return col.field.Type }
-
-// Chunked manages a collection of primitives arrays as one logical large array.
-type Chunked struct {
- refCount int64 // refCount must be first in the struct for 64 bit alignment and sync/atomic (https://github.com/golang/go/issues/37262)
-
- chunks []Array
-
- length int
- nulls int
- dtype DataType
-}
-
-// NewChunked returns a new chunked array from the slice of arrays.
-//
-// NewChunked panics if the chunks do not have the same data type.
-func NewChunked(dtype DataType, chunks []Array) *Chunked {
- arr := &Chunked{
- chunks: make([]Array, 0, len(chunks)),
- refCount: 1,
- dtype: dtype,
- }
- for _, chunk := range chunks {
- if chunk == nil {
- continue
- }
-
- if !TypeEqual(chunk.DataType(), dtype) {
- panic(fmt.Errorf("%w: arrow/array: mismatch data type %s vs %s", ErrInvalid, chunk.DataType().String(), dtype.String()))
- }
- chunk.Retain()
- arr.chunks = append(arr.chunks, chunk)
- arr.length += chunk.Len()
- arr.nulls += chunk.NullN()
- }
- return arr
-}
-
-// Retain increases the reference count by 1.
-// Retain may be called simultaneously from multiple goroutines.
-func (a *Chunked) Retain() {
- atomic.AddInt64(&a.refCount, 1)
-}
-
-// Release decreases the reference count by 1.
-// When the reference count goes to zero, the memory is freed.
-// Release may be called simultaneously from multiple goroutines.
-func (a *Chunked) Release() {
- debug.Assert(atomic.LoadInt64(&a.refCount) > 0, "too many releases")
-
- if atomic.AddInt64(&a.refCount, -1) == 0 {
- for _, arr := range a.chunks {
- arr.Release()
- }
- a.chunks = nil
- a.length = 0
- a.nulls = 0
- }
-}
-
-func (a *Chunked) Len() int { return a.length }
-func (a *Chunked) NullN() int { return a.nulls }
-func (a *Chunked) DataType() DataType { return a.dtype }
-func (a *Chunked) Chunks() []Array { return a.chunks }
-func (a *Chunked) Chunk(i int) Array { return a.chunks[i] }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/tools.go b/vendor/github.com/apache/arrow/go/v15/arrow/tools.go
deleted file mode 100644
index 37b6dde36..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/tools.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build tools
-// +build tools
-
-package tools
-
-import (
- _ "golang.org/x/tools/cmd/goimports"
- _ "golang.org/x/tools/cmd/stringer"
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_string.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_string.go
deleted file mode 100644
index ee3ccb7ef..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_string.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Code generated by "stringer -type=Type"; DO NOT EDIT.
-
-package arrow
-
-import "strconv"
-
-func _() {
- // An "invalid array index" compiler error signifies that the constant values have changed.
- // Re-run the stringer command to generate them again.
- var x [1]struct{}
- _ = x[NULL-0]
- _ = x[BOOL-1]
- _ = x[UINT8-2]
- _ = x[INT8-3]
- _ = x[UINT16-4]
- _ = x[INT16-5]
- _ = x[UINT32-6]
- _ = x[INT32-7]
- _ = x[UINT64-8]
- _ = x[INT64-9]
- _ = x[FLOAT16-10]
- _ = x[FLOAT32-11]
- _ = x[FLOAT64-12]
- _ = x[STRING-13]
- _ = x[BINARY-14]
- _ = x[FIXED_SIZE_BINARY-15]
- _ = x[DATE32-16]
- _ = x[DATE64-17]
- _ = x[TIMESTAMP-18]
- _ = x[TIME32-19]
- _ = x[TIME64-20]
- _ = x[INTERVAL_MONTHS-21]
- _ = x[INTERVAL_DAY_TIME-22]
- _ = x[DECIMAL128-23]
- _ = x[DECIMAL256-24]
- _ = x[LIST-25]
- _ = x[STRUCT-26]
- _ = x[SPARSE_UNION-27]
- _ = x[DENSE_UNION-28]
- _ = x[DICTIONARY-29]
- _ = x[MAP-30]
- _ = x[EXTENSION-31]
- _ = x[FIXED_SIZE_LIST-32]
- _ = x[DURATION-33]
- _ = x[LARGE_STRING-34]
- _ = x[LARGE_BINARY-35]
- _ = x[LARGE_LIST-36]
- _ = x[INTERVAL_MONTH_DAY_NANO-37]
- _ = x[RUN_END_ENCODED-38]
- _ = x[STRING_VIEW-39]
- _ = x[BINARY_VIEW-40]
- _ = x[LIST_VIEW-41]
- _ = x[LARGE_LIST_VIEW-42]
-}
-
-const _Type_name = "NULLBOOLUINT8INT8UINT16INT16UINT32INT32UINT64INT64FLOAT16FLOAT32FLOAT64STRINGBINARYFIXED_SIZE_BINARYDATE32DATE64TIMESTAMPTIME32TIME64INTERVAL_MONTHSINTERVAL_DAY_TIMEDECIMAL128DECIMAL256LISTSTRUCTSPARSE_UNIONDENSE_UNIONDICTIONARYMAPEXTENSIONFIXED_SIZE_LISTDURATIONLARGE_STRINGLARGE_BINARYLARGE_LISTINTERVAL_MONTH_DAY_NANORUN_END_ENCODEDSTRING_VIEWBINARY_VIEWLIST_VIEWLARGE_LIST_VIEW"
-
-var _Type_index = [...]uint16{0, 4, 8, 13, 17, 23, 28, 34, 39, 45, 50, 57, 64, 71, 77, 83, 100, 106, 112, 121, 127, 133, 148, 165, 175, 185, 189, 195, 207, 218, 228, 231, 240, 255, 263, 275, 287, 297, 320, 335, 346, 357, 366, 381}
-
-func (i Type) String() string {
- if i < 0 || i >= Type(len(_Type_index)-1) {
- return "Type(" + strconv.FormatInt(int64(i), 10) + ")"
- }
- return _Type_name[_Type_index[i]:_Type_index[i+1]]
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits.go
deleted file mode 100644
index 67fa8a266..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits.go
+++ /dev/null
@@ -1,162 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "reflect"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/decimal128"
- "github.com/apache/arrow/go/v15/arrow/decimal256"
- "github.com/apache/arrow/go/v15/arrow/float16"
- "golang.org/x/exp/constraints"
-)
-
-// IntType is a type constraint for raw values represented as signed
-// integer types by We aren't just using constraints.Signed
-// because we don't want to include the raw `int` type here whose size
-// changes based on the architecture (int32 on 32-bit architectures and
-// int64 on 64-bit architectures).
-//
-// This will also cover types like MonthInterval or the time types
-// as their underlying types are int32 and int64 which will get covered
-// by using the ~
-type IntType interface {
- ~int8 | ~int16 | ~int32 | ~int64
-}
-
-// UintType is a type constraint for raw values represented as unsigned
-// integer types by We aren't just using constraints.Unsigned
-// because we don't want to include the raw `uint` type here whose size
-// changes based on the architecture (uint32 on 32-bit architectures and
-// uint64 on 64-bit architectures). We also don't want to include uintptr
-type UintType interface {
- ~uint8 | ~uint16 | ~uint32 | ~uint64
-}
-
-// FloatType is a type constraint for raw values for representing
-// floating point values in This consists of constraints.Float and
-// float16.Num
-type FloatType interface {
- float16.Num | constraints.Float
-}
-
-// NumericType is a type constraint for just signed/unsigned integers
-// and float32/float64.
-type NumericType interface {
- IntType | UintType | constraints.Float
-}
-
-// FixedWidthType is a type constraint for raw values in Arrow that
-// can be represented as FixedWidth byte slices. Specifically this is for
-// using Go generics to easily re-type a byte slice to a properly-typed
-// slice. Booleans are excluded here since they are represented by Arrow
-// as a bitmap and thus the buffer can't be just reinterpreted as a []bool
-type FixedWidthType interface {
- IntType | UintType |
- FloatType | decimal128.Num | decimal256.Num |
- DayTimeInterval | MonthDayNanoInterval
-}
-
-type TemporalType interface {
- Date32 | Date64 | Time32 | Time64 |
- Timestamp | Duration | DayTimeInterval |
- MonthInterval | MonthDayNanoInterval
-}
-
-func reinterpretSlice[Out, T any](b []T) []Out {
- if cap(b) == 0 {
- return nil
- }
- out := (*Out)(unsafe.Pointer(&b[:1][0]))
-
- lenBytes := len(b) * int(unsafe.Sizeof(b[0]))
- capBytes := cap(b) * int(unsafe.Sizeof(b[0]))
-
- lenOut := lenBytes / int(unsafe.Sizeof(*out))
- capOut := capBytes / int(unsafe.Sizeof(*out))
-
- return unsafe.Slice(out, capOut)[:lenOut]
-}
-
-// GetValues reinterprets the data.Buffers()[i] to a slice of T with len=data.Len().
-//
-// If the buffer is nil, nil will be returned.
-//
-// NOTE: the buffer's length must be a multiple of Sizeof(T).
-func GetValues[T FixedWidthType](data ArrayData, i int) []T {
- if data.Buffers()[i] == nil || data.Buffers()[i].Len() == 0 {
- return nil
- }
- return reinterpretSlice[T](data.Buffers()[i].Bytes())[data.Offset() : data.Offset()+data.Len()]
-}
-
-// GetOffsets reinterprets the data.Buffers()[i] to a slice of T with len=data.Len()+1.
-//
-// NOTE: the buffer's length must be a multiple of Sizeof(T).
-func GetOffsets[T int32 | int64](data ArrayData, i int) []T {
- return reinterpretSlice[T](data.Buffers()[i].Bytes())[data.Offset() : data.Offset()+data.Len()+1]
-}
-
-// GetBytes reinterprets a slice of T to a slice of bytes.
-func GetBytes[T FixedWidthType | ViewHeader](in []T) []byte {
- return reinterpretSlice[byte](in)
-}
-
-// GetData reinterprets a slice of bytes to a slice of T.
-//
-// NOTE: the buffer's length must be a multiple of Sizeof(T).
-func GetData[T FixedWidthType | ViewHeader](in []byte) []T {
- return reinterpretSlice[T](in)
-}
-
-var typMap = map[reflect.Type]DataType{
- reflect.TypeOf(false): FixedWidthTypes.Boolean,
- reflect.TypeOf(int8(0)): PrimitiveTypes.Int8,
- reflect.TypeOf(int16(0)): PrimitiveTypes.Int16,
- reflect.TypeOf(int32(0)): PrimitiveTypes.Int32,
- reflect.TypeOf(int64(0)): PrimitiveTypes.Int64,
- reflect.TypeOf(uint8(0)): PrimitiveTypes.Uint8,
- reflect.TypeOf(uint16(0)): PrimitiveTypes.Uint16,
- reflect.TypeOf(uint32(0)): PrimitiveTypes.Uint32,
- reflect.TypeOf(uint64(0)): PrimitiveTypes.Uint64,
- reflect.TypeOf(float32(0)): PrimitiveTypes.Float32,
- reflect.TypeOf(float64(0)): PrimitiveTypes.Float64,
- reflect.TypeOf(string("")): BinaryTypes.String,
- reflect.TypeOf(Date32(0)): FixedWidthTypes.Date32,
- reflect.TypeOf(Date64(0)): FixedWidthTypes.Date64,
- reflect.TypeOf(true): FixedWidthTypes.Boolean,
- reflect.TypeOf(float16.Num{}): FixedWidthTypes.Float16,
- reflect.TypeOf([]byte{}): BinaryTypes.Binary,
-}
-
-// GetDataType returns the appropriate DataType for the given type T
-// only for non-parametric types. This uses a map and reflection internally
-// so don't call this in a tight loop, instead call this once and then use
-// a closure with the result.
-func GetDataType[T NumericType | bool | string | []byte | float16.Num]() DataType {
- var z T
- return typMap[reflect.TypeOf(z)]
-}
-
-// GetType returns the appropriate Type type T, only for non-parametric
-// types. This uses a map and reflection internally so don't call this in
-// a tight loop, instead call it once and then use a closure with the result.
-func GetType[T NumericType | bool | string]() Type {
- var z T
- return typMap[reflect.TypeOf(z)].ID()
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_boolean.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_boolean.go
deleted file mode 100644
index c164d4595..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_boolean.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "github.com/apache/arrow/go/v15/arrow/bitutil"
-)
-
-type booleanTraits struct{}
-
-var BooleanTraits booleanTraits
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (booleanTraits) BytesRequired(n int) int { return bitutil.CeilByte(n) / 8 }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal128.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal128.go
deleted file mode 100644
index d600ba29c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal128.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/decimal128"
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-// Decimal128 traits
-var Decimal128Traits decimal128Traits
-
-const (
- // Decimal128SizeBytes specifies the number of bytes required to store a single decimal128 in memory
- Decimal128SizeBytes = int(unsafe.Sizeof(decimal128.Num{}))
-)
-
-type decimal128Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (decimal128Traits) BytesRequired(n int) int { return Decimal128SizeBytes * n }
-
-// PutValue
-func (decimal128Traits) PutValue(b []byte, v decimal128.Num) {
- endian.Native.PutUint64(b[:8], uint64(v.LowBits()))
- endian.Native.PutUint64(b[8:], uint64(v.HighBits()))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint16.
-//
-// NOTE: len(b) must be a multiple of Uint16SizeBytes.
-func (decimal128Traits) CastFromBytes(b []byte) []decimal128.Num {
- return GetData[decimal128.Num](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (decimal128Traits) CastToBytes(b []decimal128.Num) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (decimal128Traits) Copy(dst, src []decimal128.Num) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal256.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal256.go
deleted file mode 100644
index fded46a0a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_decimal256.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/decimal256"
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-// Decimal256 traits
-var Decimal256Traits decimal256Traits
-
-const (
- Decimal256SizeBytes = int(unsafe.Sizeof(decimal256.Num{}))
-)
-
-type decimal256Traits struct{}
-
-func (decimal256Traits) BytesRequired(n int) int { return Decimal256SizeBytes * n }
-
-func (decimal256Traits) PutValue(b []byte, v decimal256.Num) {
- for i, a := range v.Array() {
- start := i * 8
- endian.Native.PutUint64(b[start:], a)
- }
-}
-
-// CastFromBytes reinterprets the slice b to a slice of decimal256
-func (decimal256Traits) CastFromBytes(b []byte) []decimal256.Num {
- return GetData[decimal256.Num](b)
-}
-
-func (decimal256Traits) CastToBytes(b []decimal256.Num) []byte {
- return GetBytes(b)
-}
-
-func (decimal256Traits) Copy(dst, src []decimal256.Num) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_float16.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_float16.go
deleted file mode 100644
index 5369ad352..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_float16.go
+++ /dev/null
@@ -1,57 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/float16"
-)
-
-// Float16 traits
-var Float16Traits float16Traits
-
-const (
- // Float16SizeBytes specifies the number of bytes required to store a single float16 in memory
- Float16SizeBytes = int(unsafe.Sizeof(uint16(0)))
-)
-
-type float16Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (float16Traits) BytesRequired(n int) int { return Float16SizeBytes * n }
-
-// PutValue
-func (float16Traits) PutValue(b []byte, v float16.Num) {
- endian.Native.PutUint16(b, uint16(v.Uint16()))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint16.
-//
-// NOTE: len(b) must be a multiple of Uint16SizeBytes.
-func (float16Traits) CastFromBytes(b []byte) []float16.Num {
- return GetData[float16.Num](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (float16Traits) CastToBytes(b []float16.Num) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (float16Traits) Copy(dst, src []float16.Num) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_interval.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_interval.go
deleted file mode 100644
index ca530a723..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_interval.go
+++ /dev/null
@@ -1,135 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
- "github.com/apache/arrow/go/v15/arrow/internal/debug"
-)
-
-var (
- MonthIntervalTraits monthTraits
- DayTimeIntervalTraits daytimeTraits
- MonthDayNanoIntervalTraits monthDayNanoTraits
-)
-
-func init() {
- debug.Assert(MonthIntervalSizeBytes == 4, "MonthIntervalSizeBytes should be 4")
- debug.Assert(DayTimeIntervalSizeBytes == 8, "DayTimeIntervalSizeBytes should be 8")
- debug.Assert(MonthDayNanoIntervalSizeBytes == 16, "MonthDayNanoIntervalSizeBytes should be 16")
-}
-
-// MonthInterval traits
-
-const (
- // MonthIntervalSizeBytes specifies the number of bytes required to store a single MonthInterval in memory
- MonthIntervalSizeBytes = int(unsafe.Sizeof(MonthInterval(0)))
-)
-
-type monthTraits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (monthTraits) BytesRequired(n int) int { return MonthIntervalSizeBytes * n }
-
-// PutValue
-func (monthTraits) PutValue(b []byte, v MonthInterval) {
- endian.Native.PutUint32(b, uint32(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type MonthInterval.
-//
-// NOTE: len(b) must be a multiple of MonthIntervalSizeBytes.
-func (monthTraits) CastFromBytes(b []byte) []MonthInterval {
- return GetData[MonthInterval](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (monthTraits) CastToBytes(b []MonthInterval) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (monthTraits) Copy(dst, src []MonthInterval) { copy(dst, src) }
-
-// DayTimeInterval traits
-
-const (
- // DayTimeIntervalSizeBytes specifies the number of bytes required to store a single DayTimeInterval in memory
- DayTimeIntervalSizeBytes = int(unsafe.Sizeof(DayTimeInterval{}))
-)
-
-type daytimeTraits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (daytimeTraits) BytesRequired(n int) int { return DayTimeIntervalSizeBytes * n }
-
-// PutValue
-func (daytimeTraits) PutValue(b []byte, v DayTimeInterval) {
- endian.Native.PutUint32(b[0:4], uint32(v.Days))
- endian.Native.PutUint32(b[4:8], uint32(v.Milliseconds))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type DayTimeInterval.
-//
-// NOTE: len(b) must be a multiple of DayTimeIntervalSizeBytes.
-func (daytimeTraits) CastFromBytes(b []byte) []DayTimeInterval {
- return GetData[DayTimeInterval](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (daytimeTraits) CastToBytes(b []DayTimeInterval) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (daytimeTraits) Copy(dst, src []DayTimeInterval) { copy(dst, src) }
-
-// DayTimeInterval traits
-
-const (
- // MonthDayNanoIntervalSizeBytes specifies the number of bytes required to store a single DayTimeInterval in memory
- MonthDayNanoIntervalSizeBytes = int(unsafe.Sizeof(MonthDayNanoInterval{}))
-)
-
-type monthDayNanoTraits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (monthDayNanoTraits) BytesRequired(n int) int { return MonthDayNanoIntervalSizeBytes * n }
-
-// PutValue
-func (monthDayNanoTraits) PutValue(b []byte, v MonthDayNanoInterval) {
- endian.Native.PutUint32(b[0:4], uint32(v.Months))
- endian.Native.PutUint32(b[4:8], uint32(v.Days))
- endian.Native.PutUint64(b[8:], uint64(v.Nanoseconds))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type MonthDayNanoInterval.
-//
-// NOTE: len(b) must be a multiple of MonthDayNanoIntervalSizeBytes.
-func (monthDayNanoTraits) CastFromBytes(b []byte) []MonthDayNanoInterval {
- return GetData[MonthDayNanoInterval](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (monthDayNanoTraits) CastToBytes(b []MonthDayNanoInterval) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (monthDayNanoTraits) Copy(dst, src []MonthDayNanoInterval) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go
deleted file mode 100644
index 064124660..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go
+++ /dev/null
@@ -1,524 +0,0 @@
-// Code generated by type_traits_numeric.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "math"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-var (
- Int64Traits int64Traits
- Uint64Traits uint64Traits
- Float64Traits float64Traits
- Int32Traits int32Traits
- Uint32Traits uint32Traits
- Float32Traits float32Traits
- Int16Traits int16Traits
- Uint16Traits uint16Traits
- Int8Traits int8Traits
- Uint8Traits uint8Traits
- Time32Traits time32Traits
- Time64Traits time64Traits
- Date32Traits date32Traits
- Date64Traits date64Traits
- DurationTraits durationTraits
-)
-
-// Int64 traits
-
-const (
- // Int64SizeBytes specifies the number of bytes required to store a single int64 in memory
- Int64SizeBytes = int(unsafe.Sizeof(int64(0)))
-)
-
-type int64Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (int64Traits) BytesRequired(n int) int { return Int64SizeBytes * n }
-
-// PutValue
-func (int64Traits) PutValue(b []byte, v int64) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type int64.
-//
-// NOTE: len(b) must be a multiple of Int64SizeBytes.
-func (int64Traits) CastFromBytes(b []byte) []int64 {
- return GetData[int64](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (int64Traits) CastToBytes(b []int64) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (int64Traits) Copy(dst, src []int64) { copy(dst, src) }
-
-// Uint64 traits
-
-const (
- // Uint64SizeBytes specifies the number of bytes required to store a single uint64 in memory
- Uint64SizeBytes = int(unsafe.Sizeof(uint64(0)))
-)
-
-type uint64Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (uint64Traits) BytesRequired(n int) int { return Uint64SizeBytes * n }
-
-// PutValue
-func (uint64Traits) PutValue(b []byte, v uint64) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint64.
-//
-// NOTE: len(b) must be a multiple of Uint64SizeBytes.
-func (uint64Traits) CastFromBytes(b []byte) []uint64 {
- return GetData[uint64](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (uint64Traits) CastToBytes(b []uint64) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (uint64Traits) Copy(dst, src []uint64) { copy(dst, src) }
-
-// Float64 traits
-
-const (
- // Float64SizeBytes specifies the number of bytes required to store a single float64 in memory
- Float64SizeBytes = int(unsafe.Sizeof(float64(0)))
-)
-
-type float64Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (float64Traits) BytesRequired(n int) int { return Float64SizeBytes * n }
-
-// PutValue
-func (float64Traits) PutValue(b []byte, v float64) {
- endian.Native.PutUint64(b, math.Float64bits(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type float64.
-//
-// NOTE: len(b) must be a multiple of Float64SizeBytes.
-func (float64Traits) CastFromBytes(b []byte) []float64 {
- return GetData[float64](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (float64Traits) CastToBytes(b []float64) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (float64Traits) Copy(dst, src []float64) { copy(dst, src) }
-
-// Int32 traits
-
-const (
- // Int32SizeBytes specifies the number of bytes required to store a single int32 in memory
- Int32SizeBytes = int(unsafe.Sizeof(int32(0)))
-)
-
-type int32Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (int32Traits) BytesRequired(n int) int { return Int32SizeBytes * n }
-
-// PutValue
-func (int32Traits) PutValue(b []byte, v int32) {
- endian.Native.PutUint32(b, uint32(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type int32.
-//
-// NOTE: len(b) must be a multiple of Int32SizeBytes.
-func (int32Traits) CastFromBytes(b []byte) []int32 {
- return GetData[int32](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (int32Traits) CastToBytes(b []int32) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (int32Traits) Copy(dst, src []int32) { copy(dst, src) }
-
-// Uint32 traits
-
-const (
- // Uint32SizeBytes specifies the number of bytes required to store a single uint32 in memory
- Uint32SizeBytes = int(unsafe.Sizeof(uint32(0)))
-)
-
-type uint32Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (uint32Traits) BytesRequired(n int) int { return Uint32SizeBytes * n }
-
-// PutValue
-func (uint32Traits) PutValue(b []byte, v uint32) {
- endian.Native.PutUint32(b, uint32(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint32.
-//
-// NOTE: len(b) must be a multiple of Uint32SizeBytes.
-func (uint32Traits) CastFromBytes(b []byte) []uint32 {
- return GetData[uint32](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (uint32Traits) CastToBytes(b []uint32) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (uint32Traits) Copy(dst, src []uint32) { copy(dst, src) }
-
-// Float32 traits
-
-const (
- // Float32SizeBytes specifies the number of bytes required to store a single float32 in memory
- Float32SizeBytes = int(unsafe.Sizeof(float32(0)))
-)
-
-type float32Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (float32Traits) BytesRequired(n int) int { return Float32SizeBytes * n }
-
-// PutValue
-func (float32Traits) PutValue(b []byte, v float32) {
- endian.Native.PutUint32(b, math.Float32bits(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type float32.
-//
-// NOTE: len(b) must be a multiple of Float32SizeBytes.
-func (float32Traits) CastFromBytes(b []byte) []float32 {
- return GetData[float32](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (float32Traits) CastToBytes(b []float32) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (float32Traits) Copy(dst, src []float32) { copy(dst, src) }
-
-// Int16 traits
-
-const (
- // Int16SizeBytes specifies the number of bytes required to store a single int16 in memory
- Int16SizeBytes = int(unsafe.Sizeof(int16(0)))
-)
-
-type int16Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (int16Traits) BytesRequired(n int) int { return Int16SizeBytes * n }
-
-// PutValue
-func (int16Traits) PutValue(b []byte, v int16) {
- endian.Native.PutUint16(b, uint16(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type int16.
-//
-// NOTE: len(b) must be a multiple of Int16SizeBytes.
-func (int16Traits) CastFromBytes(b []byte) []int16 {
- return GetData[int16](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (int16Traits) CastToBytes(b []int16) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (int16Traits) Copy(dst, src []int16) { copy(dst, src) }
-
-// Uint16 traits
-
-const (
- // Uint16SizeBytes specifies the number of bytes required to store a single uint16 in memory
- Uint16SizeBytes = int(unsafe.Sizeof(uint16(0)))
-)
-
-type uint16Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (uint16Traits) BytesRequired(n int) int { return Uint16SizeBytes * n }
-
-// PutValue
-func (uint16Traits) PutValue(b []byte, v uint16) {
- endian.Native.PutUint16(b, uint16(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint16.
-//
-// NOTE: len(b) must be a multiple of Uint16SizeBytes.
-func (uint16Traits) CastFromBytes(b []byte) []uint16 {
- return GetData[uint16](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (uint16Traits) CastToBytes(b []uint16) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (uint16Traits) Copy(dst, src []uint16) { copy(dst, src) }
-
-// Int8 traits
-
-const (
- // Int8SizeBytes specifies the number of bytes required to store a single int8 in memory
- Int8SizeBytes = int(unsafe.Sizeof(int8(0)))
-)
-
-type int8Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (int8Traits) BytesRequired(n int) int { return Int8SizeBytes * n }
-
-// PutValue
-func (int8Traits) PutValue(b []byte, v int8) {
- b[0] = byte(v)
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type int8.
-//
-// NOTE: len(b) must be a multiple of Int8SizeBytes.
-func (int8Traits) CastFromBytes(b []byte) []int8 {
- return GetData[int8](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (int8Traits) CastToBytes(b []int8) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (int8Traits) Copy(dst, src []int8) { copy(dst, src) }
-
-// Uint8 traits
-
-const (
- // Uint8SizeBytes specifies the number of bytes required to store a single uint8 in memory
- Uint8SizeBytes = int(unsafe.Sizeof(uint8(0)))
-)
-
-type uint8Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (uint8Traits) BytesRequired(n int) int { return Uint8SizeBytes * n }
-
-// PutValue
-func (uint8Traits) PutValue(b []byte, v uint8) {
- b[0] = byte(v)
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type uint8.
-//
-// NOTE: len(b) must be a multiple of Uint8SizeBytes.
-func (uint8Traits) CastFromBytes(b []byte) []uint8 {
- return GetData[uint8](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (uint8Traits) CastToBytes(b []uint8) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (uint8Traits) Copy(dst, src []uint8) { copy(dst, src) }
-
-// Time32 traits
-
-const (
- // Time32SizeBytes specifies the number of bytes required to store a single Time32 in memory
- Time32SizeBytes = int(unsafe.Sizeof(Time32(0)))
-)
-
-type time32Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (time32Traits) BytesRequired(n int) int { return Time32SizeBytes * n }
-
-// PutValue
-func (time32Traits) PutValue(b []byte, v Time32) {
- endian.Native.PutUint32(b, uint32(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Time32.
-//
-// NOTE: len(b) must be a multiple of Time32SizeBytes.
-func (time32Traits) CastFromBytes(b []byte) []Time32 {
- return GetData[Time32](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (time32Traits) CastToBytes(b []Time32) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (time32Traits) Copy(dst, src []Time32) { copy(dst, src) }
-
-// Time64 traits
-
-const (
- // Time64SizeBytes specifies the number of bytes required to store a single Time64 in memory
- Time64SizeBytes = int(unsafe.Sizeof(Time64(0)))
-)
-
-type time64Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (time64Traits) BytesRequired(n int) int { return Time64SizeBytes * n }
-
-// PutValue
-func (time64Traits) PutValue(b []byte, v Time64) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Time64.
-//
-// NOTE: len(b) must be a multiple of Time64SizeBytes.
-func (time64Traits) CastFromBytes(b []byte) []Time64 {
- return GetData[Time64](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (time64Traits) CastToBytes(b []Time64) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (time64Traits) Copy(dst, src []Time64) { copy(dst, src) }
-
-// Date32 traits
-
-const (
- // Date32SizeBytes specifies the number of bytes required to store a single Date32 in memory
- Date32SizeBytes = int(unsafe.Sizeof(Date32(0)))
-)
-
-type date32Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (date32Traits) BytesRequired(n int) int { return Date32SizeBytes * n }
-
-// PutValue
-func (date32Traits) PutValue(b []byte, v Date32) {
- endian.Native.PutUint32(b, uint32(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Date32.
-//
-// NOTE: len(b) must be a multiple of Date32SizeBytes.
-func (date32Traits) CastFromBytes(b []byte) []Date32 {
- return GetData[Date32](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (date32Traits) CastToBytes(b []Date32) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (date32Traits) Copy(dst, src []Date32) { copy(dst, src) }
-
-// Date64 traits
-
-const (
- // Date64SizeBytes specifies the number of bytes required to store a single Date64 in memory
- Date64SizeBytes = int(unsafe.Sizeof(Date64(0)))
-)
-
-type date64Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (date64Traits) BytesRequired(n int) int { return Date64SizeBytes * n }
-
-// PutValue
-func (date64Traits) PutValue(b []byte, v Date64) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Date64.
-//
-// NOTE: len(b) must be a multiple of Date64SizeBytes.
-func (date64Traits) CastFromBytes(b []byte) []Date64 {
- return GetData[Date64](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (date64Traits) CastToBytes(b []Date64) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (date64Traits) Copy(dst, src []Date64) { copy(dst, src) }
-
-// Duration traits
-
-const (
- // DurationSizeBytes specifies the number of bytes required to store a single Duration in memory
- DurationSizeBytes = int(unsafe.Sizeof(Duration(0)))
-)
-
-type durationTraits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (durationTraits) BytesRequired(n int) int { return DurationSizeBytes * n }
-
-// PutValue
-func (durationTraits) PutValue(b []byte, v Duration) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Duration.
-//
-// NOTE: len(b) must be a multiple of DurationSizeBytes.
-func (durationTraits) CastFromBytes(b []byte) []Duration {
- return GetData[Duration](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (durationTraits) CastToBytes(b []Duration) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (durationTraits) Copy(dst, src []Duration) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go.tmpl
deleted file mode 100644
index e98f59528..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen.go.tmpl
+++ /dev/null
@@ -1,78 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "math"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-var (
-{{range .In}}
- {{.Name}}Traits {{.name}}Traits
-{{- end}}
-)
-
-{{range .In}}
-// {{.Name}} traits
-
-const (
- // {{.Name}}SizeBytes specifies the number of bytes required to store a single {{.Type}} in memory
- {{.Name}}SizeBytes = int(unsafe.Sizeof({{.Type}}({{.Default}})))
-)
-
-type {{.name}}Traits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func ({{.name}}Traits) BytesRequired(n int) int { return {{.Name}}SizeBytes * n }
-
-// PutValue
-func ({{.name}}Traits) PutValue(b []byte, v {{.Type}}) {
-{{- if eq .Type "float32" -}}
- endian.Native.PutUint32(b, math.Float32bits(v))
-{{- else if eq .Type "float64" -}}
- endian.Native.PutUint64(b, math.Float64bits(v))
-{{- else if eq .Size "1" -}}
- b[0] = byte(v)
-{{- else if eq .Size "2" -}}
- endian.Native.PutUint16(b, uint16(v))
-{{- else if eq .Size "4" -}}
- endian.Native.PutUint32(b, uint32(v))
-{{- else if eq .Size "8" -}}
- endian.Native.PutUint64(b, uint64(v))
-{{- else -}}
- panic("invalid type {{.Type}}")
-{{end}}
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type {{.Type}}.
-//
-// NOTE: len(b) must be a multiple of {{.Name}}SizeBytes.
-func ({{.name}}Traits) CastFromBytes(b []byte) []{{.Type}} {
- return GetData[{{.Type}}](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func ({{.name}}Traits) CastToBytes(b []{{.Type}}) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func ({{.name}}Traits) Copy(dst, src []{{.Type}}) { copy(dst, src) }
-{{end}}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen_test.go.tmpl b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen_test.go.tmpl
deleted file mode 100644
index 4948f42cf..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_numeric.gen_test.go.tmpl
+++ /dev/null
@@ -1,61 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow_test
-
-import (
- "reflect"
- "testing"
-
- "github.com/apache/arrow/go/v15/arrow"
-)
-
-{{- range .In}}
-
-func Test{{.Name}}Traits(t *testing.T) {
- const N = 10
- b1 := arrow.{{.Name}}Traits.CastToBytes([]{{or .QualifiedType .Type}}{
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
- })
-
- b2 := make([]byte, arrow.{{.Name}}Traits.BytesRequired(N))
- for i := 0; i < N; i++ {
- beg := i * arrow.{{.Name}}SizeBytes
- end := (i + 1) * arrow.{{.Name}}SizeBytes
- arrow.{{.Name}}Traits.PutValue(b2[beg:end], {{or .QualifiedType .Type}}(i))
- }
-
- if !reflect.DeepEqual(b1, b2) {
- v1 := arrow.{{.Name}}Traits.CastFromBytes(b1)
- v2 := arrow.{{.Name}}Traits.CastFromBytes(b2)
- t.Fatalf("invalid values:\nb1=%v\nb2=%v\nv1=%v\nv2=%v\n", b1, b2, v1, v2)
- }
-
- v1 := arrow.{{.Name}}Traits.CastFromBytes(b1)
- for i, v := range v1 {
- if got, want := v, {{or .QualifiedType .Type}}(i); got != want {
- t.Fatalf("invalid value[%d]. got=%v, want=%v", i, got, want)
- }
- }
-
- v2 := make([]{{or .QualifiedType .Type}}, N)
- arrow.{{.Name}}Traits.Copy(v2, v1)
-
- if !reflect.DeepEqual(v1, v2) {
- t.Fatalf("invalid values:\nv1=%v\nv2=%v\n", v1, v2)
- }
-}
-{{end}}
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_timestamp.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_timestamp.go
deleted file mode 100644
index 8e9970a71..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_timestamp.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-var TimestampTraits timestampTraits
-
-const (
- // TimestampSizeBytes specifies the number of bytes required to store a single Timestamp in memory
- TimestampSizeBytes = int(unsafe.Sizeof(Timestamp(0)))
-)
-
-type timestampTraits struct{}
-
-// BytesRequired returns the number of bytes required to store n elements in memory.
-func (timestampTraits) BytesRequired(n int) int { return TimestampSizeBytes * n }
-
-func (timestampTraits) PutValue(b []byte, v Timestamp) {
- endian.Native.PutUint64(b, uint64(v))
-}
-
-// CastFromBytes reinterprets the slice b to a slice of type Timestamp.
-//
-// NOTE: len(b) must be a multiple of TimestampSizeBytes.
-func (timestampTraits) CastFromBytes(b []byte) []Timestamp {
- return GetData[Timestamp](b)
-}
-
-// CastToBytes reinterprets the slice b to a slice of bytes.
-func (timestampTraits) CastToBytes(b []Timestamp) []byte {
- return GetBytes(b)
-}
-
-// Copy copies src to dst.
-func (timestampTraits) Copy(dst, src []Timestamp) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_view.go b/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_view.go
deleted file mode 100644
index be3f15fed..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/type_traits_view.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package arrow
-
-import (
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/endian"
-)
-
-var ViewHeaderTraits viewHeaderTraits
-
-const (
- ViewHeaderSizeBytes = int(unsafe.Sizeof(ViewHeader{}))
-)
-
-type viewHeaderTraits struct{}
-
-func (viewHeaderTraits) BytesRequired(n int) int { return ViewHeaderSizeBytes * n }
-
-func (viewHeaderTraits) PutValue(b []byte, v ViewHeader) {
- endian.Native.PutUint32(b, uint32(v.size))
- copy(b[4:], v.data[:])
-}
-
-func (viewHeaderTraits) CastFromBytes(b []byte) (res []ViewHeader) {
- return GetData[ViewHeader](b)
-}
-
-func (viewHeaderTraits) CastToBytes(b []ViewHeader) (res []byte) {
- return GetBytes(b)
-}
-
-func (viewHeaderTraits) Copy(dst, src []ViewHeader) { copy(dst, src) }
diff --git a/vendor/github.com/apache/arrow/go/v15/arrow/unionmode_string.go b/vendor/github.com/apache/arrow/go/v15/arrow/unionmode_string.go
deleted file mode 100644
index 394d4f664..000000000
--- a/vendor/github.com/apache/arrow/go/v15/arrow/unionmode_string.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Code generated by "stringer -type=UnionMode -linecomment"; DO NOT EDIT.
-
-package arrow
-
-import "strconv"
-
-func _() {
- // An "invalid array index" compiler error signifies that the constant values have changed.
- // Re-run the stringer command to generate them again.
- var x [1]struct{}
- _ = x[SparseMode-2]
- _ = x[DenseMode-3]
-}
-
-const _UnionMode_name = "SPARSEDENSE"
-
-var _UnionMode_index = [...]uint8{0, 6, 11}
-
-func (i UnionMode) String() string {
- i -= 2
- if i < 0 || i >= UnionMode(len(_UnionMode_index)-1) {
- return "UnionMode(" + strconv.FormatInt(int64(i+2), 10) + ")"
- }
- return _UnionMode_name[_UnionMode_index[i]:_UnionMode_index[i+1]]
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_block_counter.go b/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_block_counter.go
deleted file mode 100644
index 50996b10e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_block_counter.go
+++ /dev/null
@@ -1,452 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutils
-
-import (
- "math"
- "math/bits"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-func loadWord(byt []byte) uint64 {
- return utils.ToLEUint64(*(*uint64)(unsafe.Pointer(&byt[0])))
-}
-
-func shiftWord(current, next uint64, shift int64) uint64 {
- if shift == 0 {
- return current
- }
- return (current >> shift) | (next << (64 - shift))
-}
-
-// BitBlockCount is returned by the various bit block counter utilities
-// in order to return a length of bits and the population count of that
-// slice of bits.
-type BitBlockCount struct {
- Len int16
- Popcnt int16
-}
-
-// NoneSet returns true if ALL the bits were 0 in this set, ie: Popcnt == 0
-func (b BitBlockCount) NoneSet() bool {
- return b.Popcnt == 0
-}
-
-// AllSet returns true if ALL the bits were 1 in this set, ie: Popcnt == Len
-func (b BitBlockCount) AllSet() bool {
- return b.Len == b.Popcnt
-}
-
-// BitBlockCounter is a utility for grabbing chunks of a bitmap at a time and efficiently
-// counting the number of bits which are 1.
-type BitBlockCounter struct {
- bitmap []byte
- bitsRemaining int64
- bitOffset int8
-}
-
-const (
- wordBits int64 = 64
- fourWordsBits int64 = wordBits * 4
-)
-
-// NewBitBlockCounter returns a BitBlockCounter for the passed bitmap starting at startOffset
-// of length nbits.
-func NewBitBlockCounter(bitmap []byte, startOffset, nbits int64) *BitBlockCounter {
- return &BitBlockCounter{
- bitmap: bitmap[startOffset/8:],
- bitsRemaining: nbits,
- bitOffset: int8(startOffset % 8),
- }
-}
-
-// getBlockSlow is for returning a block of the requested size when there aren't
-// enough bits remaining to do a full word computation.
-func (b *BitBlockCounter) getBlockSlow(blockSize int64) BitBlockCount {
- runlen := int16(utils.Min(b.bitsRemaining, blockSize))
- popcnt := int16(bitutil.CountSetBits(b.bitmap, int(b.bitOffset), int(runlen)))
- b.bitsRemaining -= int64(runlen)
- b.bitmap = b.bitmap[runlen/8:]
- return BitBlockCount{runlen, popcnt}
-}
-
-// NextFourWords returns the next run of available bits, usually 256. The
-// returned pair contains the size of run and the number of true values.
-// The last block will have a length less than 256 if the bitmap length
-// is not a multiple of 256, and will return 0-length blocks in subsequent
-// invocations.
-func (b *BitBlockCounter) NextFourWords() BitBlockCount {
- if b.bitsRemaining == 0 {
- return BitBlockCount{0, 0}
- }
-
- totalPopcnt := 0
- if b.bitOffset == 0 {
- // if we're aligned at 0 bitoffset, then we can easily just jump from
- // word to word nice and easy.
- if b.bitsRemaining < fourWordsBits {
- return b.getBlockSlow(fourWordsBits)
- }
- totalPopcnt += bits.OnesCount64(loadWord(b.bitmap))
- totalPopcnt += bits.OnesCount64(loadWord(b.bitmap[8:]))
- totalPopcnt += bits.OnesCount64(loadWord(b.bitmap[16:]))
- totalPopcnt += bits.OnesCount64(loadWord(b.bitmap[24:]))
- } else {
- // When the offset is > 0, we need there to be a word beyond the last
- // aligned word in the bitmap for the bit shifting logic.
- if b.bitsRemaining < 5*fourWordsBits-int64(b.bitOffset) {
- return b.getBlockSlow(fourWordsBits)
- }
-
- current := loadWord(b.bitmap)
- next := loadWord(b.bitmap[8:])
- totalPopcnt += bits.OnesCount64(shiftWord(current, next, int64(b.bitOffset)))
-
- current = next
- next = loadWord(b.bitmap[16:])
- totalPopcnt += bits.OnesCount64(shiftWord(current, next, int64(b.bitOffset)))
-
- current = next
- next = loadWord(b.bitmap[24:])
- totalPopcnt += bits.OnesCount64(shiftWord(current, next, int64(b.bitOffset)))
-
- current = next
- next = loadWord(b.bitmap[32:])
- totalPopcnt += bits.OnesCount64(shiftWord(current, next, int64(b.bitOffset)))
- }
- b.bitmap = b.bitmap[bitutil.BytesForBits(fourWordsBits):]
- b.bitsRemaining -= fourWordsBits
- return BitBlockCount{256, int16(totalPopcnt)}
-}
-
-// NextWord returns the next run of available bits, usually 64. The returned
-// pair contains the size of run and the number of true values. The last
-// block will have a length less than 64 if the bitmap length is not a
-// multiple of 64, and will return 0-length blocks in subsequent
-// invocations.
-func (b *BitBlockCounter) NextWord() BitBlockCount {
- if b.bitsRemaining == 0 {
- return BitBlockCount{0, 0}
- }
- popcnt := 0
- if b.bitOffset == 0 {
- if b.bitsRemaining < wordBits {
- return b.getBlockSlow(wordBits)
- }
- popcnt = bits.OnesCount64(loadWord(b.bitmap))
- } else {
- // When the offset is > 0, we need there to be a word beyond the last
- // aligned word in the bitmap for the bit shifting logic.
- if b.bitsRemaining < (2*wordBits - int64(b.bitOffset)) {
- return b.getBlockSlow(wordBits)
- }
- popcnt = bits.OnesCount64(shiftWord(loadWord(b.bitmap), loadWord(b.bitmap[8:]), int64(b.bitOffset)))
- }
- b.bitmap = b.bitmap[wordBits/8:]
- b.bitsRemaining -= wordBits
- return BitBlockCount{64, int16(popcnt)}
-}
-
-// OptionalBitBlockCounter is a useful counter to iterate through a possibly
-// nonexistent validity bitmap to allow us to write one code path for both
-// the with-nulls and no-nulls cases without giving up a lot of performance.
-type OptionalBitBlockCounter struct {
- hasBitmap bool
- pos int64
- len int64
- counter *BitBlockCounter
-}
-
-// NewOptionalBitBlockCounter constructs and returns a new bit block counter that
-// can properly handle the case when a bitmap is null, if it is guaranteed that the
-// the bitmap is not nil, then prefer NewBitBlockCounter here.
-func NewOptionalBitBlockCounter(bitmap []byte, offset, length int64) *OptionalBitBlockCounter {
- var counter *BitBlockCounter
- if bitmap != nil {
- counter = NewBitBlockCounter(bitmap, offset, length)
- }
- return &OptionalBitBlockCounter{
- hasBitmap: bitmap != nil,
- pos: 0,
- len: length,
- counter: counter,
- }
-}
-
-// NextBlock returns block count for next word when the bitmap is available otherwise
-// return a block with length up to INT16_MAX when there is no validity
-// bitmap (so all the referenced values are not null).
-func (obc *OptionalBitBlockCounter) NextBlock() BitBlockCount {
- const maxBlockSize = math.MaxInt16
- if obc.hasBitmap {
- block := obc.counter.NextWord()
- obc.pos += int64(block.Len)
- return block
- }
-
- blockSize := int16(utils.Min(maxBlockSize, obc.len-obc.pos))
- obc.pos += int64(blockSize)
- // all values are non-null
- return BitBlockCount{blockSize, blockSize}
-}
-
-// NextWord is like NextBlock, but returns a word-sized block even when there is no
-// validity bitmap
-func (obc *OptionalBitBlockCounter) NextWord() BitBlockCount {
- const wordsize = 64
- if obc.hasBitmap {
- block := obc.counter.NextWord()
- obc.pos += int64(block.Len)
- return block
- }
- blockSize := int16(utils.Min(wordsize, obc.len-obc.pos))
- obc.pos += int64(blockSize)
- // all values are non-null
- return BitBlockCount{blockSize, blockSize}
-}
-
-// VisitBitBlocks is a utility for easily iterating through the blocks of bits in a bitmap,
-// calling the appropriate visitValid/visitInvalid function as we iterate through the bits.
-// visitValid is called with the bitoffset of the valid bit. Don't use this inside a tight
-// loop when performance is needed and instead prefer manually constructing these loops
-// in that scenario.
-func VisitBitBlocks(bitmap []byte, offset, length int64, visitValid func(pos int64), visitInvalid func()) {
- counter := NewOptionalBitBlockCounter(bitmap, offset, length)
- pos := int64(0)
- for pos < length {
- block := counter.NextBlock()
- if block.AllSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- visitValid(pos)
- }
- } else if block.NoneSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- visitInvalid()
- }
- } else {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- if bitutil.BitIsSet(bitmap, int(offset+pos)) {
- visitValid(pos)
- } else {
- visitInvalid()
- }
- }
- }
- }
-}
-
-// VisitBitBlocks is a utility for easily iterating through the blocks of bits in a bitmap,
-// calling the appropriate visitValid/visitInvalid function as we iterate through the bits.
-// visitValid is called with the bitoffset of the valid bit. Don't use this inside a tight
-// loop when performance is needed and instead prefer manually constructing these loops
-// in that scenario.
-func VisitBitBlocksShort(bitmap []byte, offset, length int64, visitValid func(pos int64) error, visitInvalid func() error) error {
- counter := NewOptionalBitBlockCounter(bitmap, offset, length)
- pos := int64(0)
- for pos < length {
- block := counter.NextBlock()
- if block.AllSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- if err := visitValid(pos); err != nil {
- return err
- }
- }
- } else if block.NoneSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- if err := visitInvalid(); err != nil {
- return err
- }
- }
- } else {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- if bitutil.BitIsSet(bitmap, int(offset+pos)) {
- if err := visitValid(pos); err != nil {
- return err
- }
- } else {
- if err := visitInvalid(); err != nil {
- return err
- }
- }
- }
- }
- }
- return nil
-}
-
-func VisitTwoBitBlocks(leftBitmap, rightBitmap []byte, leftOffset, rightOffset int64, len int64, visitValid func(pos int64), visitNull func()) {
- if leftBitmap == nil || rightBitmap == nil {
- // at most one is present
- if leftBitmap == nil {
- VisitBitBlocks(rightBitmap, rightOffset, len, visitValid, visitNull)
- } else {
- VisitBitBlocks(leftBitmap, leftOffset, len, visitValid, visitNull)
- }
- return
- }
-
- bitCounter := NewBinaryBitBlockCounter(leftBitmap, rightBitmap, leftOffset, rightOffset, len)
- var pos int64
- for pos < len {
- block := bitCounter.NextAndWord()
- if block.AllSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- visitValid(pos)
- }
- } else if block.NoneSet() {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- visitNull()
- }
- } else {
- for i := 0; i < int(block.Len); i, pos = i+1, pos+1 {
- if bitutil.BitIsSet(leftBitmap, int(leftOffset+pos)) && bitutil.BitIsSet(rightBitmap, int(rightOffset+pos)) {
- visitValid(pos)
- } else {
- visitNull()
- }
- }
- }
- }
-}
-
-type bitOp struct {
- bit func(bool, bool) bool
- word func(uint64, uint64) uint64
-}
-
-var (
- bitBlockAnd = bitOp{
- bit: func(a, b bool) bool { return a && b },
- word: func(a, b uint64) uint64 { return a & b },
- }
- bitBlockAndNot = bitOp{
- bit: func(a, b bool) bool { return a && !b },
- word: func(a, b uint64) uint64 { return a &^ b },
- }
- bitBlockOr = bitOp{
- bit: func(a, b bool) bool { return a || b },
- word: func(a, b uint64) uint64 { return a | b },
- }
- bitBlockOrNot = bitOp{
- bit: func(a, b bool) bool { return a || !b },
- word: func(a, b uint64) uint64 { return a | ^b },
- }
-)
-
-// BinaryBitBlockCounter computes popcounts on the result of bitwise
-// operations between two bitmaps, 64 bits at a time. A 64-bit word
-// is loaded from each bitmap, then the popcount is computed on
-// e.g. the bitwise-and of the two words
-type BinaryBitBlockCounter struct {
- left []byte
- right []byte
- bitsRemaining int64
- leftOffset, rightOffset int64
-
- bitsRequiredForWords int64
-}
-
-// NewBinaryBitBlockCounter constructs a binary bit block counter for
-// computing the popcounts on the results of operations between
-// the passed in bitmaps, with their respective offsets.
-func NewBinaryBitBlockCounter(left, right []byte, leftOffset, rightOffset int64, length int64) *BinaryBitBlockCounter {
- ret := &BinaryBitBlockCounter{
- left: left[leftOffset/8:],
- right: right[rightOffset/8:],
- leftOffset: leftOffset % 8,
- rightOffset: rightOffset % 8,
- bitsRemaining: length,
- }
-
- leftBitsReq := int64(64)
- if ret.leftOffset != 0 {
- leftBitsReq = 64 + (64 - ret.leftOffset)
- }
- rightBitsReq := int64(64)
- if ret.rightOffset != 0 {
- rightBitsReq = 64 + (64 - ret.rightOffset)
- }
-
- if leftBitsReq > rightBitsReq {
- ret.bitsRequiredForWords = leftBitsReq
- } else {
- ret.bitsRequiredForWords = rightBitsReq
- }
-
- return ret
-}
-
-// NextAndWord returns the popcount of the bitwise-and of the next run
-// of available bits, up to 64. The returned pair contains the size of
-// the run and the number of true values. the last block will have a
-// length less than 64 if the bitmap length is not a multiple of 64,
-// and will return 0-length blocks in subsequent invocations
-func (b *BinaryBitBlockCounter) NextAndWord() BitBlockCount { return b.nextWord(bitBlockAnd) }
-
-// NextAndNotWord is like NextAndWord but performs x &^ y on each run
-func (b *BinaryBitBlockCounter) NextAndNotWord() BitBlockCount { return b.nextWord(bitBlockAndNot) }
-
-// NextOrWord is like NextAndWord but performs x | y on each run
-func (b *BinaryBitBlockCounter) NextOrWord() BitBlockCount { return b.nextWord(bitBlockOr) }
-
-// NextOrWord is like NextAndWord but performs x | ^y on each run
-func (b *BinaryBitBlockCounter) NextOrNotWord() BitBlockCount { return b.nextWord(bitBlockOrNot) }
-
-func (b *BinaryBitBlockCounter) nextWord(op bitOp) BitBlockCount {
- if b.bitsRemaining == 0 {
- return BitBlockCount{}
- }
-
- // when offset is >0, we need there to be a word beyond the last
- // aligned word in the bitmap for the bit shifting logic
- if b.bitsRemaining < b.bitsRequiredForWords {
- runLength := int16(b.bitsRemaining)
- if runLength > int16(wordBits) {
- runLength = int16(wordBits)
- }
-
- var popcount int16
- for i := int16(0); i < runLength; i++ {
- if op.bit(bitutil.BitIsSet(b.left, int(b.leftOffset)+int(i)),
- bitutil.BitIsSet(b.right, int(b.rightOffset)+int(i))) {
- popcount++
- }
- }
- // this code path should trigger _at most_ 2 times. in the "two times"
- // case, the first time the run length will be a multiple of 8.
- b.left = b.left[runLength/8:]
- b.right = b.right[runLength/8:]
- b.bitsRemaining -= int64(runLength)
- return BitBlockCount{Len: runLength, Popcnt: popcount}
- }
-
- var popcount int
- if b.leftOffset == 0 && b.rightOffset == 0 {
- popcount = bits.OnesCount64(op.word(loadWord(b.left), loadWord(b.right)))
- } else {
- leftWord := shiftWord(loadWord(b.left), loadWord(b.left[8:]), b.leftOffset)
- rightWord := shiftWord(loadWord(b.right), loadWord(b.right[8:]), b.rightOffset)
- popcount = bits.OnesCount64(op.word(leftWord, rightWord))
- }
- b.left = b.left[wordBits/8:]
- b.right = b.right[wordBits/8:]
- b.bitsRemaining -= wordBits
- return BitBlockCount{Len: int16(wordBits), Popcnt: int16(popcount)}
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_run_reader.go b/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_run_reader.go
deleted file mode 100644
index f09149d7e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_run_reader.go
+++ /dev/null
@@ -1,151 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutils
-
-import (
- "encoding/binary"
- "fmt"
- "math/bits"
- "unsafe"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-// BitRun represents a run of bits with the same value of length Len
-// with Set representing if the group of bits were 1 or 0.
-type BitRun struct {
- Len int64
- Set bool
-}
-
-// BitRunReader is an interface that is usable by multiple callers to provide
-// multiple types of bit run readers such as a reverse reader and so on.
-//
-// It's a convenience interface for counting contiguous set/unset bits in a bitmap.
-// In places where BitBlockCounter can be used, then it would be preferred to use that
-// as it would be faster than using BitRunReader.
-type BitRunReader interface {
- NextRun() BitRun
-}
-
-func (b BitRun) String() string {
- return fmt.Sprintf("{Length: %d, set=%t}", b.Len, b.Set)
-}
-
-type bitRunReader struct {
- bitmap []byte
- pos int64
- length int64
- word uint64
- curRunBitSet bool
-}
-
-// NewBitRunReader returns a reader for the given bitmap, offset and length that
-// grabs runs of the same value bit at a time for easy iteration.
-func NewBitRunReader(bitmap []byte, offset int64, length int64) BitRunReader {
- ret := &bitRunReader{
- bitmap: bitmap[offset/8:],
- pos: offset % 8,
- length: (offset % 8) + length,
- }
-
- if length == 0 {
- return ret
- }
-
- ret.curRunBitSet = bitutil.BitIsNotSet(bitmap, int(offset))
- bitsRemaining := length + ret.pos
- ret.loadWord(bitsRemaining)
- ret.word = ret.word &^ LeastSignificantBitMask(ret.pos)
- return ret
-}
-
-// NextRun returns a new BitRun containing the number of contiguous bits with the
-// same value. Len == 0 indicates the end of the bitmap.
-func (b *bitRunReader) NextRun() BitRun {
- if b.pos >= b.length {
- return BitRun{0, false}
- }
-
- // This implementation relies on a efficient implementations of
- // CountTrailingZeros and assumes that runs are more often then
- // not. The logic is to incrementally find the next bit change
- // from the current position. This is done by zeroing all
- // bits in word_ up to position_ and using the TrailingZeroCount
- // to find the index of the next set bit.
-
- // The runs alternate on each call, so flip the bit.
- b.curRunBitSet = !b.curRunBitSet
-
- start := b.pos
- startOffset := start & 63
-
- // Invert the word for proper use of CountTrailingZeros and
- // clear bits so CountTrailingZeros can do it magic.
- b.word = ^b.word &^ LeastSignificantBitMask(startOffset)
-
- // Go forward until the next change from unset to set.
- newbits := int64(bits.TrailingZeros64(b.word)) - startOffset
- b.pos += newbits
-
- if IsMultipleOf64(b.pos) && b.pos < b.length {
- b.advanceUntilChange()
- }
- return BitRun{b.pos - start, b.curRunBitSet}
-}
-
-func (b *bitRunReader) advanceUntilChange() {
- newbits := int64(0)
- for {
- b.bitmap = b.bitmap[arrow.Uint64SizeBytes:]
- b.loadNextWord()
- newbits = int64(bits.TrailingZeros64(b.word))
- b.pos += newbits
- if !IsMultipleOf64(b.pos) || b.pos >= b.length || newbits <= 0 {
- break
- }
- }
-}
-
-func (b *bitRunReader) loadNextWord() {
- b.loadWord(b.length - b.pos)
-}
-
-func (b *bitRunReader) loadWord(bitsRemaining int64) {
- b.word = 0
- if bitsRemaining >= 64 {
- b.word = binary.LittleEndian.Uint64(b.bitmap)
- } else {
- nbytes := bitutil.BytesForBits(bitsRemaining)
- wordptr := (*(*[8]byte)(unsafe.Pointer(&b.word)))[:]
- copy(wordptr, b.bitmap[:nbytes])
-
- bitutil.SetBitTo(wordptr, int(bitsRemaining), bitutil.BitIsNotSet(wordptr, int(bitsRemaining-1)))
- // reset the value to little endian for big endian architectures
- b.word = utils.ToLEUint64(b.word)
- }
-
- // Two cases:
- // 1. For unset, CountTrailingZeros works naturally so we don't
- // invert the word.
- // 2. Otherwise invert so we can use CountTrailingZeros.
- if b.curRunBitSet {
- b.word = ^b.word
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_set_run_reader.go b/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_set_run_reader.go
deleted file mode 100644
index 374b8d4aa..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bit_set_run_reader.go
+++ /dev/null
@@ -1,361 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutils
-
-import (
- "encoding/binary"
- "math/bits"
-
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-// IsMultipleOf64 returns whether v is a multiple of 64.
-func IsMultipleOf64(v int64) bool { return v&63 == 0 }
-
-// LeastSignificantBitMask returns a bit mask to return the least significant
-// bits for a value starting from the bit index passed in. ie: if you want a
-// mask for the 4 least significant bits, you call LeastSignificantBitMask(4)
-func LeastSignificantBitMask(index int64) uint64 {
- return (uint64(1) << index) - 1
-}
-
-// SetBitRun describes a run of contiguous set bits in a bitmap with Pos being
-// the starting position of the run and Length being the number of bits.
-type SetBitRun struct {
- Pos int64
- Length int64
-}
-
-// AtEnd returns true if this bit run is the end of the set by checking
-// that the length is 0.
-func (s SetBitRun) AtEnd() bool {
- return s.Length == 0
-}
-
-// Equal returns whether rhs is the same run as s
-func (s SetBitRun) Equal(rhs SetBitRun) bool {
- return s.Pos == rhs.Pos && s.Length == rhs.Length
-}
-
-// SetBitRunReader is an interface for reading groups of contiguous set bits
-// from a bitmap. The interface allows us to create different reader implementations
-// that share the same interface easily such as a reverse set reader.
-type SetBitRunReader interface {
- // NextRun will return the next run of contiguous set bits in the bitmap
- NextRun() SetBitRun
- // Reset allows re-using the reader by providing a new bitmap, offset and length. The arguments
- // match the New function for the reader being used.
- Reset([]byte, int64, int64)
- // VisitSetBitRuns calls visitFn for each set in a loop starting from the current position
- // it's roughly equivalent to simply looping, calling NextRun and calling visitFn on the run
- // for each run.
- VisitSetBitRuns(visitFn VisitFn) error
-}
-
-type baseSetBitRunReader struct {
- bitmap []byte
- pos int64
- length int64
- remaining int64
- curWord uint64
- curNumBits int32
- reversed bool
-
- firstBit uint64
-}
-
-// NewSetBitRunReader returns a SetBitRunReader for the bitmap starting at startOffset which will read
-// numvalues bits.
-func NewSetBitRunReader(validBits []byte, startOffset, numValues int64) SetBitRunReader {
- return newBaseSetBitRunReader(validBits, startOffset, numValues, false)
-}
-
-// NewReverseSetBitRunReader returns a SetBitRunReader like NewSetBitRunReader, except it will
-// return runs starting from the end of the bitmap until it reaches startOffset rather than starting
-// at startOffset and reading from there. The SetBitRuns will still operate the same, so Pos
-// will still be the position of the "left-most" bit of the run or the "start" of the run. It
-// just returns runs starting from the end instead of starting from the beginning.
-func NewReverseSetBitRunReader(validBits []byte, startOffset, numValues int64) SetBitRunReader {
- return newBaseSetBitRunReader(validBits, startOffset, numValues, true)
-}
-
-func newBaseSetBitRunReader(bitmap []byte, startOffset, length int64, reverse bool) *baseSetBitRunReader {
- ret := &baseSetBitRunReader{reversed: reverse}
- ret.Reset(bitmap, startOffset, length)
- return ret
-}
-
-func (br *baseSetBitRunReader) Reset(bitmap []byte, startOffset, length int64) {
- br.bitmap = bitmap
- br.length = length
- br.remaining = length
- br.curNumBits = 0
- br.curWord = 0
-
- if !br.reversed {
- br.pos = startOffset / 8
- br.firstBit = 1
-
- bitOffset := int8(startOffset % 8)
- if length > 0 && bitOffset != 0 {
- br.curNumBits = int32(utils.Min(int(length), int(8-bitOffset)))
- br.curWord = br.loadPartial(bitOffset, int64(br.curNumBits))
- }
- return
- }
-
- br.pos = (startOffset + length) / 8
- br.firstBit = uint64(0x8000000000000000)
- endBitOffset := int8((startOffset + length) % 8)
- if length > 0 && endBitOffset != 0 {
- br.pos++
- br.curNumBits = int32(utils.Min(int(length), int(endBitOffset)))
- br.curWord = br.loadPartial(8-endBitOffset, int64(br.curNumBits))
- }
-}
-
-func (br *baseSetBitRunReader) consumeBits(word uint64, nbits int32) uint64 {
- if br.reversed {
- return word << nbits
- }
- return word >> nbits
-}
-
-func (br *baseSetBitRunReader) countFirstZeros(word uint64) int32 {
- if br.reversed {
- return int32(bits.LeadingZeros64(word))
- }
- return int32(bits.TrailingZeros64(word))
-}
-
-func (br *baseSetBitRunReader) loadPartial(bitOffset int8, numBits int64) uint64 {
- var word [8]byte
- nbytes := bitutil.BytesForBits(numBits)
- if br.reversed {
- br.pos -= nbytes
- copy(word[8-nbytes:], br.bitmap[br.pos:br.pos+nbytes])
- return (binary.LittleEndian.Uint64(word[:]) << bitOffset) &^ LeastSignificantBitMask(64-numBits)
- }
-
- copy(word[:], br.bitmap[br.pos:br.pos+nbytes])
- br.pos += nbytes
- return (binary.LittleEndian.Uint64(word[:]) >> bitOffset) & LeastSignificantBitMask(numBits)
-}
-
-func (br *baseSetBitRunReader) findCurrentRun() SetBitRun {
- nzeros := br.countFirstZeros(br.curWord)
- if nzeros >= br.curNumBits {
- br.remaining -= int64(br.curNumBits)
- br.curWord = 0
- br.curNumBits = 0
- return SetBitRun{0, 0}
- }
-
- br.curWord = br.consumeBits(br.curWord, nzeros)
- br.curNumBits -= nzeros
- br.remaining -= int64(nzeros)
- pos := br.position()
-
- numOnes := br.countFirstZeros(^br.curWord)
- br.curWord = br.consumeBits(br.curWord, numOnes)
- br.curNumBits -= numOnes
- br.remaining -= int64(numOnes)
- return SetBitRun{pos, int64(numOnes)}
-}
-
-func (br *baseSetBitRunReader) position() int64 {
- if br.reversed {
- return br.remaining
- }
- return br.length - br.remaining
-}
-
-func (br *baseSetBitRunReader) adjustRun(run SetBitRun) SetBitRun {
- if br.reversed {
- run.Pos -= run.Length
- }
- return run
-}
-
-func (br *baseSetBitRunReader) loadFull() (ret uint64) {
- if br.reversed {
- br.pos -= 8
- }
- ret = binary.LittleEndian.Uint64(br.bitmap[br.pos : br.pos+8])
- if !br.reversed {
- br.pos += 8
- }
- return
-}
-
-func (br *baseSetBitRunReader) skipNextZeros() {
- for br.remaining >= 64 {
- br.curWord = br.loadFull()
- nzeros := br.countFirstZeros(br.curWord)
- if nzeros < 64 {
- br.curWord = br.consumeBits(br.curWord, nzeros)
- br.curNumBits = 64 - nzeros
- br.remaining -= int64(nzeros)
- return
- }
- br.remaining -= 64
- }
- // run of zeros continues in last bitmap word
- if br.remaining > 0 {
- br.curWord = br.loadPartial(0, br.remaining)
- br.curNumBits = int32(br.remaining)
- nzeros := int32(utils.Min(int(br.curNumBits), int(br.countFirstZeros(br.curWord))))
- br.curWord = br.consumeBits(br.curWord, nzeros)
- br.curNumBits -= nzeros
- br.remaining -= int64(nzeros)
- }
-}
-
-func (br *baseSetBitRunReader) countNextOnes() int64 {
- var length int64
- if ^br.curWord != 0 {
- numOnes := br.countFirstZeros(^br.curWord)
- br.remaining -= int64(numOnes)
- br.curWord = br.consumeBits(br.curWord, numOnes)
- br.curNumBits -= numOnes
- if br.curNumBits != 0 {
- return int64(numOnes)
- }
- length = int64(numOnes)
- } else {
- br.remaining -= 64
- br.curNumBits = 0
- length = 64
- }
-
- for br.remaining >= 64 {
- br.curWord = br.loadFull()
- numOnes := br.countFirstZeros(^br.curWord)
- length += int64(numOnes)
- br.remaining -= int64(numOnes)
- if numOnes < 64 {
- br.curWord = br.consumeBits(br.curWord, numOnes)
- br.curNumBits = 64 - numOnes
- return length
- }
- }
-
- if br.remaining > 0 {
- br.curWord = br.loadPartial(0, br.remaining)
- br.curNumBits = int32(br.remaining)
- numOnes := br.countFirstZeros(^br.curWord)
- br.curWord = br.consumeBits(br.curWord, numOnes)
- br.curNumBits -= numOnes
- br.remaining -= int64(numOnes)
- length += int64(numOnes)
- }
- return length
-}
-
-func (br *baseSetBitRunReader) NextRun() SetBitRun {
- var (
- pos int64 = 0
- length int64 = 0
- )
-
- if br.curNumBits != 0 {
- run := br.findCurrentRun()
- if run.Length != 0 && br.curNumBits != 0 {
- return br.adjustRun(run)
- }
- pos = run.Pos
- length = run.Length
- }
-
- if length == 0 {
- // we didn't get any ones in curWord, so we can skip any zeros
- // in the following words
- br.skipNextZeros()
- if br.remaining == 0 {
- return SetBitRun{0, 0}
- }
- pos = br.position()
- } else if br.curNumBits == 0 {
- if br.remaining >= 64 {
- br.curWord = br.loadFull()
- br.curNumBits = 64
- } else if br.remaining > 0 {
- br.curWord = br.loadPartial(0, br.remaining)
- br.curNumBits = int32(br.remaining)
- } else {
- return br.adjustRun(SetBitRun{pos, length})
- }
- if (br.curWord & br.firstBit) == 0 {
- return br.adjustRun(SetBitRun{pos, length})
- }
- }
-
- length += br.countNextOnes()
- return br.adjustRun(SetBitRun{pos, length})
-}
-
-// VisitFn is a callback function for visiting runs of contiguous bits
-type VisitFn func(pos int64, length int64) error
-
-func (br *baseSetBitRunReader) VisitSetBitRuns(visitFn VisitFn) error {
- for {
- run := br.NextRun()
- if run.Length == 0 {
- break
- }
-
- if err := visitFn(run.Pos, run.Length); err != nil {
- return err
- }
- }
- return nil
-}
-
-// VisitSetBitRuns is just a convenience function for calling NewSetBitRunReader and then VisitSetBitRuns
-func VisitSetBitRuns(bitmap []byte, bitmapOffset int64, length int64, visitFn VisitFn) error {
- if bitmap == nil {
- return visitFn(0, length)
- }
- rdr := NewSetBitRunReader(bitmap, bitmapOffset, length)
- for {
- run := rdr.NextRun()
- if run.Length == 0 {
- break
- }
-
- if err := visitFn(run.Pos, run.Length); err != nil {
- return err
- }
- }
- return nil
-}
-
-func VisitSetBitRunsNoErr(bitmap []byte, bitmapOffset int64, length int64, visitFn func(pos, length int64)) {
- if bitmap == nil {
- visitFn(0, length)
- return
- }
- rdr := NewSetBitRunReader(bitmap, bitmapOffset, length)
- for {
- run := rdr.NextRun()
- if run.Length == 0 {
- break
- }
- visitFn(run.Pos, run.Length)
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bitmap_generate.go b/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bitmap_generate.go
deleted file mode 100644
index 08b5fceab..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/bitutils/bitmap_generate.go
+++ /dev/null
@@ -1,109 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package bitutils
-
-import "github.com/apache/arrow/go/v15/arrow/bitutil"
-
-// GenerateBits writes sequential bits to a bitmap. Bits preceding the
-// initial start offset are preserved, bits following the bitmap may
-// get clobbered.
-func GenerateBits(bitmap []byte, start, length int64, g func() bool) {
- if length == 0 {
- return
- }
-
- cur := bitmap[start/8:]
- mask := bitutil.BitMask[start%8]
- curbyte := cur[0] & bitutil.PrecedingBitmask[start%8]
-
- for i := int64(0); i < length; i++ {
- bit := g()
- if bit {
- curbyte = curbyte | mask
- }
- mask <<= 1
- if mask == 0 {
- mask = 1
- cur[0] = curbyte
- cur = cur[1:]
- curbyte = 0
- }
- }
-
- if mask != 1 {
- cur[0] = curbyte
- }
-}
-
-// GenerateBitsUnrolled is like GenerateBits but unrolls its main loop for
-// higher performance.
-//
-// See the benchmarks for evidence.
-func GenerateBitsUnrolled(bitmap []byte, start, length int64, g func() bool) {
- if length == 0 {
- return
- }
-
- var (
- curbyte byte
- cur = bitmap[start/8:]
- startBitOffset uint64 = uint64(start % 8)
- mask = bitutil.BitMask[startBitOffset]
- remaining = length
- )
-
- if mask != 0x01 {
- curbyte = cur[0] & bitutil.PrecedingBitmask[startBitOffset]
- for mask != 0 && remaining > 0 {
- if g() {
- curbyte |= mask
- }
- mask <<= 1
- remaining--
- }
- cur[0] = curbyte
- cur = cur[1:]
- }
-
- var outResults [8]byte
- for remainingBytes := remaining / 8; remainingBytes > 0; remainingBytes-- {
- for i := 0; i < 8; i++ {
- if g() {
- outResults[i] = 1
- } else {
- outResults[i] = 0
- }
- }
- cur[0] = (outResults[0] | outResults[1]<<1 | outResults[2]<<2 |
- outResults[3]<<3 | outResults[4]<<4 | outResults[5]<<5 |
- outResults[6]<<6 | outResults[7]<<7)
- cur = cur[1:]
- }
-
- remainingBits := remaining % 8
- if remainingBits > 0 {
- curbyte = 0
- mask = 0x01
- for ; remainingBits > 0; remainingBits-- {
- if g() {
- curbyte |= mask
- }
- mask <<= 1
- }
- cur[0] = curbyte
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_funcs.go b/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_funcs.go
deleted file mode 100644
index c1bdfeb6d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_funcs.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package hashing
-
-import (
- "math/bits"
- "unsafe"
-
- "github.com/zeebo/xxh3"
-)
-
-func hashInt(val uint64, alg uint64) uint64 {
- // Two of xxhash's prime multipliers (which are chosen for their
- // bit dispersion properties)
- var multipliers = [2]uint64{11400714785074694791, 14029467366897019727}
- // Multiplying by the prime number mixes the low bits into the high bits,
- // then byte-swapping (which is a single CPU instruction) allows the
- // combined high and low bits to participate in the initial hash table index.
- return bits.ReverseBytes64(multipliers[alg] * val)
-}
-
-func hashFloat32(val float32, alg uint64) uint64 {
- // grab the raw byte pattern of the
- bt := *(*[4]byte)(unsafe.Pointer(&val))
- x := uint64(*(*uint32)(unsafe.Pointer(&bt[0])))
- hx := hashInt(x, alg)
- hy := hashInt(x, alg^1)
- return 4 ^ hx ^ hy
-}
-
-func hashFloat64(val float64, alg uint64) uint64 {
- bt := *(*[8]byte)(unsafe.Pointer(&val))
- hx := hashInt(uint64(*(*uint32)(unsafe.Pointer(&bt[4]))), alg)
- hy := hashInt(uint64(*(*uint32)(unsafe.Pointer(&bt[0]))), alg^1)
- return 8 ^ hx ^ hy
-}
-
-// prime constants used for slightly increasing the hash quality further
-var exprimes = [2]uint64{1609587929392839161, 9650029242287828579}
-
-// for smaller amounts of bytes this is faster than even calling into
-// xxh3 to do the Hash, so we specialize in order to get the benefits
-// of that performance.
-func Hash(b []byte, alg uint64) uint64 {
- n := uint32(len(b))
- if n <= 16 {
- switch {
- case n > 8:
- // 8 < length <= 16
- // apply same principle as above, but as two 64-bit ints
- x := *(*uint64)(unsafe.Pointer(&b[n-8]))
- y := *(*uint64)(unsafe.Pointer(&b[0]))
- hx := hashInt(x, alg)
- hy := hashInt(y, alg^1)
- return uint64(n) ^ hx ^ hy
- case n >= 4:
- // 4 < length <= 8
- // we can read the bytes as two overlapping 32-bit ints, apply different
- // hash functions to each in parallel
- // then xor the results
- x := *(*uint32)(unsafe.Pointer(&b[n-4]))
- y := *(*uint32)(unsafe.Pointer(&b[0]))
- hx := hashInt(uint64(x), alg)
- hy := hashInt(uint64(y), alg^1)
- return uint64(n) ^ hx ^ hy
- case n > 0:
- x := uint32((n << 24) ^ (uint32(b[0]) << 16) ^ (uint32(b[n/2]) << 8) ^ uint32(b[n-1]))
- return hashInt(uint64(x), alg)
- case n == 0:
- return 1
- }
- }
-
- // increase differentiation enough to improve hash quality
- return xxh3.Hash(b) + exprimes[alg]
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string.go b/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string.go
deleted file mode 100644
index b772c7d7f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build go1.20 || tinygo
-
-package hashing
-
-import "unsafe"
-
-func hashString(val string, alg uint64) uint64 {
- buf := unsafe.Slice(unsafe.StringData(val), len(val))
- return Hash(buf, alg)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string_go1.19.go b/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string_go1.19.go
deleted file mode 100644
index f38eb5c52..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/hash_string_go1.19.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !go1.20 && !tinygo
-
-package hashing
-
-import (
- "reflect"
- "unsafe"
-)
-
-func hashString(val string, alg uint64) uint64 {
- if val == "" {
- return Hash([]byte{}, alg)
- }
- // highly efficient way to get byte slice without copy before
- // the introduction of unsafe.StringData in go1.20
- // (https://stackoverflow.com/questions/59209493/how-to-use-unsafe-get-a-byte-slice-from-a-string-without-memory-copy)
- const MaxInt32 = 1<<31 - 1
- buf := (*[MaxInt32]byte)(unsafe.Pointer((*reflect.StringHeader)(
- unsafe.Pointer(&val)).Data))[: len(val)&MaxInt32 : len(val)&MaxInt32]
- return Hash(buf, alg)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/types.tmpldata b/vendor/github.com/apache/arrow/go/v15/internal/hashing/types.tmpldata
deleted file mode 100644
index 0ba6f765d..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/types.tmpldata
+++ /dev/null
@@ -1,42 +0,0 @@
-[
- {
- "Name": "Int8",
- "name": "int8"
- },
- {
- "Name": "Uint8",
- "name": "uint8"
- },
- {
- "Name": "Int16",
- "name": "int16"
- },
- {
- "Name": "Uint16",
- "name": "uint16"
- },
- {
- "Name": "Int32",
- "name": "int32"
- },
- {
- "Name": "Int64",
- "name": "int64"
- },
- {
- "Name": "Uint32",
- "name": "uint32"
- },
- {
- "Name": "Uint64",
- "name": "uint64"
- },
- {
- "Name": "Float32",
- "name": "float32"
- },
- {
- "Name": "Float64",
- "name": "float64"
- }
-]
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go b/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go
deleted file mode 100644
index 39b82cdef..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go
+++ /dev/null
@@ -1,2833 +0,0 @@
-// Code generated by xxh3_memo_table.gen.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package hashing
-
-import (
- "math"
-
- "github.com/apache/arrow/go/v15/arrow"
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-type payloadInt8 struct {
- val int8
- memoIdx int32
-}
-
-type entryInt8 struct {
- h uint64
- payload payloadInt8
-}
-
-func (e entryInt8) Valid() bool { return e.h != sentinel }
-
-// Int8HashTable is a hashtable specifically for int8 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Int8HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryInt8
-}
-
-// NewInt8HashTable returns a new hash table for int8 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewInt8HashTable(cap uint64) *Int8HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Int8HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryInt8, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Int8HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryInt8, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Int8HashTable) CopyValues(out []int8) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Int8HashTable) CopyValuesSubset(start int, out []int8) {
- h.VisitEntries(func(e *entryInt8) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Int8HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Int8HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Int8Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryInt8) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = e.payload.val
- }
- })
-}
-
-func (h *Int8HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Int8HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Int8HashTable) Lookup(v uint64, cmp func(int8) bool) (*entryInt8, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Int8HashTable) lookup(v uint64, szMask uint64, cmp func(int8) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryInt8
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Int8HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryInt8, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(int8) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Int8HashTable) Insert(e *entryInt8, v uint64, val int8, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Int8HashTable) VisitEntries(visit func(*entryInt8)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Int8MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Int8MemoTable struct {
- tbl *Int8HashTable
- nullIdx int32
-}
-
-// NewInt8MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewInt8MemoTable(num int64) *Int8MemoTable {
- return &Int8MemoTable{tbl: NewInt8HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Int8MemoTable) TypeTraits() TypeTraits {
- return arrow.Int8Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Int8MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Int8MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Int8MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Int8MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Int8MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Int8MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]int8))
-}
-
-func (s *Int8MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Int8Traits.CastFromBytes(out))
-}
-
-func (s *Int8MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Int8Traits.CastFromBytes(out))
-}
-
-func (s *Int8MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Int8MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Int8MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(int8)), 0)
- if e, ok := s.tbl.Lookup(h, func(v int8) bool { return val.(int8) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Int8MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(int8)), 0)
- e, ok := s.tbl.Lookup(h, func(v int8) bool {
- return val.(int8) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(int8), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Int8MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadUint8 struct {
- val uint8
- memoIdx int32
-}
-
-type entryUint8 struct {
- h uint64
- payload payloadUint8
-}
-
-func (e entryUint8) Valid() bool { return e.h != sentinel }
-
-// Uint8HashTable is a hashtable specifically for uint8 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Uint8HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryUint8
-}
-
-// NewUint8HashTable returns a new hash table for uint8 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewUint8HashTable(cap uint64) *Uint8HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Uint8HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryUint8, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Uint8HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryUint8, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Uint8HashTable) CopyValues(out []uint8) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Uint8HashTable) CopyValuesSubset(start int, out []uint8) {
- h.VisitEntries(func(e *entryUint8) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Uint8HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Uint8HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Uint8Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryUint8) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = e.payload.val
- }
- })
-}
-
-func (h *Uint8HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Uint8HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Uint8HashTable) Lookup(v uint64, cmp func(uint8) bool) (*entryUint8, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Uint8HashTable) lookup(v uint64, szMask uint64, cmp func(uint8) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryUint8
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Uint8HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryUint8, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(uint8) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Uint8HashTable) Insert(e *entryUint8, v uint64, val uint8, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Uint8HashTable) VisitEntries(visit func(*entryUint8)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Uint8MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Uint8MemoTable struct {
- tbl *Uint8HashTable
- nullIdx int32
-}
-
-// NewUint8MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewUint8MemoTable(num int64) *Uint8MemoTable {
- return &Uint8MemoTable{tbl: NewUint8HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Uint8MemoTable) TypeTraits() TypeTraits {
- return arrow.Uint8Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Uint8MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Uint8MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Uint8MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Uint8MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Uint8MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Uint8MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]uint8))
-}
-
-func (s *Uint8MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Uint8Traits.CastFromBytes(out))
-}
-
-func (s *Uint8MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Uint8Traits.CastFromBytes(out))
-}
-
-func (s *Uint8MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Uint8MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Uint8MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(uint8)), 0)
- if e, ok := s.tbl.Lookup(h, func(v uint8) bool { return val.(uint8) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Uint8MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(uint8)), 0)
- e, ok := s.tbl.Lookup(h, func(v uint8) bool {
- return val.(uint8) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(uint8), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Uint8MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadInt16 struct {
- val int16
- memoIdx int32
-}
-
-type entryInt16 struct {
- h uint64
- payload payloadInt16
-}
-
-func (e entryInt16) Valid() bool { return e.h != sentinel }
-
-// Int16HashTable is a hashtable specifically for int16 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Int16HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryInt16
-}
-
-// NewInt16HashTable returns a new hash table for int16 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewInt16HashTable(cap uint64) *Int16HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Int16HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryInt16, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Int16HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryInt16, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Int16HashTable) CopyValues(out []int16) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Int16HashTable) CopyValuesSubset(start int, out []int16) {
- h.VisitEntries(func(e *entryInt16) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Int16HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Int16HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Int16Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryInt16) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEInt16(e.payload.val)
- }
- })
-}
-
-func (h *Int16HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Int16HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Int16HashTable) Lookup(v uint64, cmp func(int16) bool) (*entryInt16, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Int16HashTable) lookup(v uint64, szMask uint64, cmp func(int16) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryInt16
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Int16HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryInt16, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(int16) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Int16HashTable) Insert(e *entryInt16, v uint64, val int16, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Int16HashTable) VisitEntries(visit func(*entryInt16)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Int16MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Int16MemoTable struct {
- tbl *Int16HashTable
- nullIdx int32
-}
-
-// NewInt16MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewInt16MemoTable(num int64) *Int16MemoTable {
- return &Int16MemoTable{tbl: NewInt16HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Int16MemoTable) TypeTraits() TypeTraits {
- return arrow.Int16Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Int16MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Int16MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Int16MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Int16MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Int16MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Int16MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]int16))
-}
-
-func (s *Int16MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Int16Traits.CastFromBytes(out))
-}
-
-func (s *Int16MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Int16Traits.CastFromBytes(out))
-}
-
-func (s *Int16MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Int16MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Int16MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(int16)), 0)
- if e, ok := s.tbl.Lookup(h, func(v int16) bool { return val.(int16) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Int16MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(int16)), 0)
- e, ok := s.tbl.Lookup(h, func(v int16) bool {
- return val.(int16) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(int16), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Int16MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadUint16 struct {
- val uint16
- memoIdx int32
-}
-
-type entryUint16 struct {
- h uint64
- payload payloadUint16
-}
-
-func (e entryUint16) Valid() bool { return e.h != sentinel }
-
-// Uint16HashTable is a hashtable specifically for uint16 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Uint16HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryUint16
-}
-
-// NewUint16HashTable returns a new hash table for uint16 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewUint16HashTable(cap uint64) *Uint16HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Uint16HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryUint16, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Uint16HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryUint16, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Uint16HashTable) CopyValues(out []uint16) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Uint16HashTable) CopyValuesSubset(start int, out []uint16) {
- h.VisitEntries(func(e *entryUint16) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Uint16HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Uint16HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Uint16Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryUint16) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEUint16(e.payload.val)
- }
- })
-}
-
-func (h *Uint16HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Uint16HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Uint16HashTable) Lookup(v uint64, cmp func(uint16) bool) (*entryUint16, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Uint16HashTable) lookup(v uint64, szMask uint64, cmp func(uint16) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryUint16
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Uint16HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryUint16, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(uint16) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Uint16HashTable) Insert(e *entryUint16, v uint64, val uint16, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Uint16HashTable) VisitEntries(visit func(*entryUint16)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Uint16MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Uint16MemoTable struct {
- tbl *Uint16HashTable
- nullIdx int32
-}
-
-// NewUint16MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewUint16MemoTable(num int64) *Uint16MemoTable {
- return &Uint16MemoTable{tbl: NewUint16HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Uint16MemoTable) TypeTraits() TypeTraits {
- return arrow.Uint16Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Uint16MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Uint16MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Uint16MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Uint16MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Uint16MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Uint16MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]uint16))
-}
-
-func (s *Uint16MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Uint16Traits.CastFromBytes(out))
-}
-
-func (s *Uint16MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Uint16Traits.CastFromBytes(out))
-}
-
-func (s *Uint16MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Uint16MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Uint16MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(uint16)), 0)
- if e, ok := s.tbl.Lookup(h, func(v uint16) bool { return val.(uint16) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Uint16MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(uint16)), 0)
- e, ok := s.tbl.Lookup(h, func(v uint16) bool {
- return val.(uint16) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(uint16), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Uint16MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadInt32 struct {
- val int32
- memoIdx int32
-}
-
-type entryInt32 struct {
- h uint64
- payload payloadInt32
-}
-
-func (e entryInt32) Valid() bool { return e.h != sentinel }
-
-// Int32HashTable is a hashtable specifically for int32 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Int32HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryInt32
-}
-
-// NewInt32HashTable returns a new hash table for int32 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewInt32HashTable(cap uint64) *Int32HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Int32HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryInt32, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Int32HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryInt32, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Int32HashTable) CopyValues(out []int32) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Int32HashTable) CopyValuesSubset(start int, out []int32) {
- h.VisitEntries(func(e *entryInt32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Int32HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Int32HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Int32Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryInt32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEInt32(e.payload.val)
- }
- })
-}
-
-func (h *Int32HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Int32HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Int32HashTable) Lookup(v uint64, cmp func(int32) bool) (*entryInt32, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Int32HashTable) lookup(v uint64, szMask uint64, cmp func(int32) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryInt32
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Int32HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryInt32, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(int32) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Int32HashTable) Insert(e *entryInt32, v uint64, val int32, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Int32HashTable) VisitEntries(visit func(*entryInt32)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Int32MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Int32MemoTable struct {
- tbl *Int32HashTable
- nullIdx int32
-}
-
-// NewInt32MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewInt32MemoTable(num int64) *Int32MemoTable {
- return &Int32MemoTable{tbl: NewInt32HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Int32MemoTable) TypeTraits() TypeTraits {
- return arrow.Int32Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Int32MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Int32MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Int32MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Int32MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Int32MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Int32MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]int32))
-}
-
-func (s *Int32MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Int32Traits.CastFromBytes(out))
-}
-
-func (s *Int32MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Int32Traits.CastFromBytes(out))
-}
-
-func (s *Int32MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Int32MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Int32MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(int32)), 0)
- if e, ok := s.tbl.Lookup(h, func(v int32) bool { return val.(int32) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Int32MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(int32)), 0)
- e, ok := s.tbl.Lookup(h, func(v int32) bool {
- return val.(int32) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(int32), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Int32MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadInt64 struct {
- val int64
- memoIdx int32
-}
-
-type entryInt64 struct {
- h uint64
- payload payloadInt64
-}
-
-func (e entryInt64) Valid() bool { return e.h != sentinel }
-
-// Int64HashTable is a hashtable specifically for int64 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Int64HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryInt64
-}
-
-// NewInt64HashTable returns a new hash table for int64 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewInt64HashTable(cap uint64) *Int64HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Int64HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryInt64, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Int64HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryInt64, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Int64HashTable) CopyValues(out []int64) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Int64HashTable) CopyValuesSubset(start int, out []int64) {
- h.VisitEntries(func(e *entryInt64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Int64HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Int64HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Int64Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryInt64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEInt64(e.payload.val)
- }
- })
-}
-
-func (h *Int64HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Int64HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Int64HashTable) Lookup(v uint64, cmp func(int64) bool) (*entryInt64, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Int64HashTable) lookup(v uint64, szMask uint64, cmp func(int64) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryInt64
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Int64HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryInt64, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(int64) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Int64HashTable) Insert(e *entryInt64, v uint64, val int64, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Int64HashTable) VisitEntries(visit func(*entryInt64)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Int64MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Int64MemoTable struct {
- tbl *Int64HashTable
- nullIdx int32
-}
-
-// NewInt64MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewInt64MemoTable(num int64) *Int64MemoTable {
- return &Int64MemoTable{tbl: NewInt64HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Int64MemoTable) TypeTraits() TypeTraits {
- return arrow.Int64Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Int64MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Int64MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Int64MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Int64MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Int64MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Int64MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]int64))
-}
-
-func (s *Int64MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Int64Traits.CastFromBytes(out))
-}
-
-func (s *Int64MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Int64Traits.CastFromBytes(out))
-}
-
-func (s *Int64MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Int64MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Int64MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(int64)), 0)
- if e, ok := s.tbl.Lookup(h, func(v int64) bool { return val.(int64) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Int64MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(int64)), 0)
- e, ok := s.tbl.Lookup(h, func(v int64) bool {
- return val.(int64) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(int64), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Int64MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadUint32 struct {
- val uint32
- memoIdx int32
-}
-
-type entryUint32 struct {
- h uint64
- payload payloadUint32
-}
-
-func (e entryUint32) Valid() bool { return e.h != sentinel }
-
-// Uint32HashTable is a hashtable specifically for uint32 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Uint32HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryUint32
-}
-
-// NewUint32HashTable returns a new hash table for uint32 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewUint32HashTable(cap uint64) *Uint32HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Uint32HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryUint32, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Uint32HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryUint32, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Uint32HashTable) CopyValues(out []uint32) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Uint32HashTable) CopyValuesSubset(start int, out []uint32) {
- h.VisitEntries(func(e *entryUint32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Uint32HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Uint32HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Uint32Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryUint32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEUint32(e.payload.val)
- }
- })
-}
-
-func (h *Uint32HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Uint32HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Uint32HashTable) Lookup(v uint64, cmp func(uint32) bool) (*entryUint32, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Uint32HashTable) lookup(v uint64, szMask uint64, cmp func(uint32) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryUint32
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Uint32HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryUint32, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(uint32) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Uint32HashTable) Insert(e *entryUint32, v uint64, val uint32, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Uint32HashTable) VisitEntries(visit func(*entryUint32)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Uint32MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Uint32MemoTable struct {
- tbl *Uint32HashTable
- nullIdx int32
-}
-
-// NewUint32MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewUint32MemoTable(num int64) *Uint32MemoTable {
- return &Uint32MemoTable{tbl: NewUint32HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Uint32MemoTable) TypeTraits() TypeTraits {
- return arrow.Uint32Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Uint32MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Uint32MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Uint32MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Uint32MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Uint32MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Uint32MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]uint32))
-}
-
-func (s *Uint32MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Uint32Traits.CastFromBytes(out))
-}
-
-func (s *Uint32MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Uint32Traits.CastFromBytes(out))
-}
-
-func (s *Uint32MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Uint32MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Uint32MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(uint32)), 0)
- if e, ok := s.tbl.Lookup(h, func(v uint32) bool { return val.(uint32) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Uint32MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(uint32)), 0)
- e, ok := s.tbl.Lookup(h, func(v uint32) bool {
- return val.(uint32) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(uint32), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Uint32MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadUint64 struct {
- val uint64
- memoIdx int32
-}
-
-type entryUint64 struct {
- h uint64
- payload payloadUint64
-}
-
-func (e entryUint64) Valid() bool { return e.h != sentinel }
-
-// Uint64HashTable is a hashtable specifically for uint64 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Uint64HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryUint64
-}
-
-// NewUint64HashTable returns a new hash table for uint64 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewUint64HashTable(cap uint64) *Uint64HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Uint64HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryUint64, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Uint64HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryUint64, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Uint64HashTable) CopyValues(out []uint64) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Uint64HashTable) CopyValuesSubset(start int, out []uint64) {
- h.VisitEntries(func(e *entryUint64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Uint64HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Uint64HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Uint64Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryUint64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEUint64(e.payload.val)
- }
- })
-}
-
-func (h *Uint64HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Uint64HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Uint64HashTable) Lookup(v uint64, cmp func(uint64) bool) (*entryUint64, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Uint64HashTable) lookup(v uint64, szMask uint64, cmp func(uint64) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryUint64
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Uint64HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryUint64, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(uint64) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Uint64HashTable) Insert(e *entryUint64, v uint64, val uint64, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Uint64HashTable) VisitEntries(visit func(*entryUint64)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Uint64MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Uint64MemoTable struct {
- tbl *Uint64HashTable
- nullIdx int32
-}
-
-// NewUint64MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewUint64MemoTable(num int64) *Uint64MemoTable {
- return &Uint64MemoTable{tbl: NewUint64HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Uint64MemoTable) TypeTraits() TypeTraits {
- return arrow.Uint64Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Uint64MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Uint64MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Uint64MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Uint64MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Uint64MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Uint64MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]uint64))
-}
-
-func (s *Uint64MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Uint64Traits.CastFromBytes(out))
-}
-
-func (s *Uint64MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Uint64Traits.CastFromBytes(out))
-}
-
-func (s *Uint64MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Uint64MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Uint64MemoTable) Get(val interface{}) (int, bool) {
-
- h := hashInt(uint64(val.(uint64)), 0)
- if e, ok := s.tbl.Lookup(h, func(v uint64) bool { return val.(uint64) == v }); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Uint64MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- h := hashInt(uint64(val.(uint64)), 0)
- e, ok := s.tbl.Lookup(h, func(v uint64) bool {
- return val.(uint64) == v
- })
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(uint64), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Uint64MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadFloat32 struct {
- val float32
- memoIdx int32
-}
-
-type entryFloat32 struct {
- h uint64
- payload payloadFloat32
-}
-
-func (e entryFloat32) Valid() bool { return e.h != sentinel }
-
-// Float32HashTable is a hashtable specifically for float32 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Float32HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryFloat32
-}
-
-// NewFloat32HashTable returns a new hash table for float32 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewFloat32HashTable(cap uint64) *Float32HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Float32HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryFloat32, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Float32HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryFloat32, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Float32HashTable) CopyValues(out []float32) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Float32HashTable) CopyValuesSubset(start int, out []float32) {
- h.VisitEntries(func(e *entryFloat32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Float32HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Float32HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Float32Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryFloat32) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEFloat32(e.payload.val)
- }
- })
-}
-
-func (h *Float32HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Float32HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Float32HashTable) Lookup(v uint64, cmp func(float32) bool) (*entryFloat32, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Float32HashTable) lookup(v uint64, szMask uint64, cmp func(float32) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryFloat32
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Float32HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryFloat32, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(float32) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Float32HashTable) Insert(e *entryFloat32, v uint64, val float32, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Float32HashTable) VisitEntries(visit func(*entryFloat32)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Float32MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Float32MemoTable struct {
- tbl *Float32HashTable
- nullIdx int32
-}
-
-// NewFloat32MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewFloat32MemoTable(num int64) *Float32MemoTable {
- return &Float32MemoTable{tbl: NewFloat32HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Float32MemoTable) TypeTraits() TypeTraits {
- return arrow.Float32Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Float32MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Float32MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Float32MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Float32MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Float32MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Float32MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]float32))
-}
-
-func (s *Float32MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Float32Traits.CastFromBytes(out))
-}
-
-func (s *Float32MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Float32Traits.CastFromBytes(out))
-}
-
-func (s *Float32MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Float32MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Float32MemoTable) Get(val interface{}) (int, bool) {
- var cmp func(float32) bool
-
- if math.IsNaN(float64(val.(float32))) {
- cmp = isNan32Cmp
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = float32(math.NaN())
- } else {
- cmp = func(v float32) bool { return val.(float32) == v }
- }
-
- h := hashFloat32(val.(float32), 0)
- if e, ok := s.tbl.Lookup(h, cmp); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Float32MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- var cmp func(float32) bool
-
- if math.IsNaN(float64(val.(float32))) {
- cmp = isNan32Cmp
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = float32(math.NaN())
- } else {
- cmp = func(v float32) bool { return val.(float32) == v }
- }
-
- h := hashFloat32(val.(float32), 0)
- e, ok := s.tbl.Lookup(h, cmp)
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(float32), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Float32MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-
-type payloadFloat64 struct {
- val float64
- memoIdx int32
-}
-
-type entryFloat64 struct {
- h uint64
- payload payloadFloat64
-}
-
-func (e entryFloat64) Valid() bool { return e.h != sentinel }
-
-// Float64HashTable is a hashtable specifically for float64 that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type Float64HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entryFloat64
-}
-
-// NewFloat64HashTable returns a new hash table for float64 values
-// initialized with the passed in capacity or 32 whichever is larger.
-func NewFloat64HashTable(cap uint64) *Float64HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &Float64HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entryFloat64, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *Float64HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entryFloat64, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *Float64HashTable) CopyValues(out []float64) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *Float64HashTable) CopyValuesSubset(start int, out []float64) {
- h.VisitEntries(func(e *entryFloat64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *Float64HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *Float64HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.Float64Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entryFloat64) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- data[idx] = utils.ToLEFloat64(e.payload.val)
- }
- })
-}
-
-func (h *Float64HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func (Float64HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *Float64HashTable) Lookup(v uint64, cmp func(float64) bool) (*entryFloat64, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *Float64HashTable) lookup(v uint64, szMask uint64, cmp func(float64) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entryFloat64
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *Float64HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entryFloat64, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func(float64) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *Float64HashTable) Insert(e *entryFloat64, v uint64, val float64, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *Float64HashTable) VisitEntries(visit func(*entryFloat64)) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// Float64MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type Float64MemoTable struct {
- tbl *Float64HashTable
- nullIdx int32
-}
-
-// NewFloat64MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func NewFloat64MemoTable(num int64) *Float64MemoTable {
- return &Float64MemoTable{tbl: NewFloat64HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func (Float64MemoTable) TypeTraits() TypeTraits {
- return arrow.Float64Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *Float64MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *Float64MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *Float64MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *Float64MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *Float64MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *Float64MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]float64))
-}
-
-func (s *Float64MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.Float64Traits.CastFromBytes(out))
-}
-
-func (s *Float64MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.Float64Traits.CastFromBytes(out))
-}
-
-func (s *Float64MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *Float64MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *Float64MemoTable) Get(val interface{}) (int, bool) {
- var cmp func(float64) bool
- if math.IsNaN(val.(float64)) {
- cmp = math.IsNaN
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = math.NaN()
- } else {
- cmp = func(v float64) bool { return val.(float64) == v }
- }
-
- h := hashFloat64(val.(float64), 0)
- if e, ok := s.tbl.Lookup(h, cmp); ok {
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *Float64MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
-
- var cmp func(float64) bool
- if math.IsNaN(val.(float64)) {
- cmp = math.IsNaN
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = math.NaN()
- } else {
- cmp = func(v float64) bool { return val.(float64) == v }
- }
-
- h := hashFloat64(val.(float64), 0)
- e, ok := s.tbl.Lookup(h, cmp)
-
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.(float64), int32(idx))
- }
- return
-}
-
-// GetOrInsertBytes is unimplemented
-func (s *Float64MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go.tmpl
deleted file mode 100644
index 527008ad6..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.gen.go.tmpl
+++ /dev/null
@@ -1,349 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package hashing
-
-import (
- "github.com/apache/arrow/go/v15/arrow/bitutil"
- "github.com/apache/arrow/go/v15/internal/utils"
-)
-
-{{range .In}}
-type payload{{.Name}} struct {
- val {{.name}}
- memoIdx int32
-}
-
-type entry{{.Name}} struct {
- h uint64
- payload payload{{.Name}}
-}
-
-func (e entry{{.Name}}) Valid() bool { return e.h != sentinel }
-
-// {{.Name}}HashTable is a hashtable specifically for {{.name}} that
-// is utilized with the MemoTable to generalize interactions for easier
-// implementation of dictionaries without losing performance.
-type {{.Name}}HashTable struct {
- cap uint64
- capMask uint64
- size uint64
-
- entries []entry{{.Name}}
-}
-
-// New{{.Name}}HashTable returns a new hash table for {{.name}} values
-// initialized with the passed in capacity or 32 whichever is larger.
-func New{{.Name}}HashTable(cap uint64) *{{.Name}}HashTable {
- initCap := uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- ret := &{{.Name}}HashTable{cap: initCap, capMask: initCap - 1, size: 0}
- ret.entries = make([]entry{{.Name}}, initCap)
- return ret
-}
-
-// Reset drops all of the values in this hash table and re-initializes it
-// with the specified initial capacity as if by calling New, but without having
-// to reallocate the object.
-func (h *{{.Name}}HashTable) Reset(cap uint64) {
- h.cap = uint64(bitutil.NextPowerOf2(int(max(cap, 32))))
- h.capMask = h.cap - 1
- h.size = 0
- h.entries = make([]entry{{.Name}}, h.cap)
-}
-
-// CopyValues is used for copying the values out of the hash table into the
-// passed in slice, in the order that they were first inserted
-func (h *{{.Name}}HashTable) CopyValues(out []{{.name}}) {
- h.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies a subset of the values in the hashtable out, starting
-// with the value at start, in the order that they were inserted.
-func (h *{{.Name}}HashTable) CopyValuesSubset(start int, out []{{.name}}) {
- h.VisitEntries(func(e *entry{{.Name}}) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
- out[idx] = e.payload.val
- }
- })
-}
-
-func (h *{{.Name}}HashTable) WriteOut(out []byte) {
- h.WriteOutSubset(0, out)
-}
-
-func (h *{{.Name}}HashTable) WriteOutSubset(start int, out []byte) {
- data := arrow.{{.Name}}Traits.CastFromBytes(out)
- h.VisitEntries(func(e *entry{{.Name}}) {
- idx := e.payload.memoIdx - int32(start)
- if idx >= 0 {
-{{if and (ne .Name "Int8") (ne .Name "Uint8") -}}
- data[idx] = utils.ToLE{{.Name}}(e.payload.val)
-{{else -}}
- data[idx] = e.payload.val
-{{end -}}
- }
- })
-}
-
-func (h *{{.Name}}HashTable) needUpsize() bool { return h.size*uint64(loadFactor) >= h.cap }
-
-func ({{.Name}}HashTable) fixHash(v uint64) uint64 {
- if v == sentinel {
- return 42
- }
- return v
-}
-
-// Lookup retrieves the entry for a given hash value assuming it's payload value returns
-// true when passed to the cmp func. Returns a pointer to the entry for the given hash value,
-// and a boolean as to whether it was found. It is not safe to use the pointer if the bool is false.
-func (h *{{.Name}}HashTable) Lookup(v uint64, cmp func({{.name}}) bool) (*entry{{.Name}}, bool) {
- idx, ok := h.lookup(v, h.capMask, cmp)
- return &h.entries[idx], ok
-}
-
-func (h *{{.Name}}HashTable) lookup(v uint64, szMask uint64, cmp func({{.name}}) bool) (uint64, bool) {
- const perturbShift uint8 = 5
-
- var (
- idx uint64
- perturb uint64
- e *entry{{.Name}}
- )
-
- v = h.fixHash(v)
- idx = v & szMask
- perturb = (v >> uint64(perturbShift)) + 1
-
- for {
- e = &h.entries[idx]
- if e.h == v && cmp(e.payload.val) {
- return idx, true
- }
-
- if e.h == sentinel {
- return idx, false
- }
-
- // perturbation logic inspired from CPython's set/dict object
- // the goal is that all 64 bits of unmasked hash value eventually
- // participate int he probing sequence, to minimize clustering
- idx = (idx + perturb) & szMask
- perturb = (perturb >> uint64(perturbShift)) + 1
- }
-}
-
-func (h *{{.Name}}HashTable) upsize(newcap uint64) error {
- newMask := newcap - 1
-
- oldEntries := h.entries
- h.entries = make([]entry{{.Name}}, newcap)
- for _, e := range oldEntries {
- if e.Valid() {
- idx, _ := h.lookup(e.h, newMask, func({{.name}}) bool { return false })
- h.entries[idx] = e
- }
- }
- h.cap = newcap
- h.capMask = newMask
- return nil
-}
-
-// Insert updates the given entry with the provided hash value, payload value and memo index.
-// The entry pointer must have been retrieved via lookup in order to actually insert properly.
-func (h *{{.Name}}HashTable) Insert(e *entry{{.Name}}, v uint64, val {{.name}}, memoIdx int32) error {
- e.h = h.fixHash(v)
- e.payload.val = val
- e.payload.memoIdx = memoIdx
- h.size++
-
- if h.needUpsize() {
- h.upsize(h.cap * uint64(loadFactor) * 2)
- }
- return nil
-}
-
-// VisitEntries will call the passed in function on each *valid* entry in the hash table,
-// a valid entry being one which has had a value inserted into it.
-func (h *{{.Name}}HashTable) VisitEntries(visit func(*entry{{.Name}})) {
- for _, e := range h.entries {
- if e.Valid() {
- visit(&e)
- }
- }
-}
-
-// {{.Name}}MemoTable is a wrapper over the appropriate hashtable to provide an interface
-// conforming to the MemoTable interface defined in the encoding package for general interactions
-// regarding dictionaries.
-type {{.Name}}MemoTable struct {
- tbl *{{.Name}}HashTable
- nullIdx int32
-}
-
-// New{{.Name}}MemoTable returns a new memotable with num entries pre-allocated to reduce further
-// allocations when inserting.
-func New{{.Name}}MemoTable(num int64) *{{.Name}}MemoTable {
- return &{{.Name}}MemoTable{tbl: New{{.Name}}HashTable(uint64(num)), nullIdx: KeyNotFound}
-}
-
-func ({{.Name}}MemoTable) TypeTraits() TypeTraits {
- return arrow.{{.Name}}Traits
-}
-
-// Reset allows this table to be re-used by dumping all the data currently in the table.
-func (s *{{.Name}}MemoTable) Reset() {
- s.tbl.Reset(32)
- s.nullIdx = KeyNotFound
-}
-
-// Size returns the current number of inserted elements into the table including if a null
-// has been inserted.
-func (s *{{.Name}}MemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// GetNull returns the index of an inserted null or KeyNotFound along with a bool
-// that will be true if found and false if not.
-func (s *{{.Name}}MemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// GetOrInsertNull will return the index of the null entry or insert a null entry
-// if one currently doesn't exist. The found value will be true if there was already
-// a null in the table, and false if it inserted one.
-func (s *{{.Name}}MemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = s.GetNull()
- if !found {
- idx = s.Size()
- s.nullIdx = int32(idx)
- }
- return
-}
-
-// CopyValues will copy the values from the memo table out into the passed in slice
-// which must be of the appropriate type.
-func (s *{{.Name}}MemoTable) CopyValues(out interface{}) {
- s.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset is like CopyValues but only copies a subset of values starting
-// at the provided start index
-func (s *{{.Name}}MemoTable) CopyValuesSubset(start int, out interface{}) {
- s.tbl.CopyValuesSubset(start, out.([]{{.name}}))
-}
-
-func (s *{{.Name}}MemoTable) WriteOut(out []byte) {
- s.tbl.CopyValues(arrow.{{.Name}}Traits.CastFromBytes(out))
-}
-
-func (s *{{.Name}}MemoTable) WriteOutSubset(start int, out []byte) {
- s.tbl.CopyValuesSubset(start, arrow.{{.Name}}Traits.CastFromBytes(out))
-}
-
-func (s *{{.Name}}MemoTable) WriteOutLE(out []byte) {
- s.tbl.WriteOut(out)
-}
-
-func (s *{{.Name}}MemoTable) WriteOutSubsetLE(start int, out []byte) {
- s.tbl.WriteOutSubset(start, out)
-}
-
-// Get returns the index of the requested value in the hash table or KeyNotFound
-// along with a boolean indicating if it was found or not.
-func (s *{{.Name}}MemoTable) Get(val interface{}) (int, bool) {
-{{if and (ne .Name "Float32") (ne .Name "Float64") }}
- h := hashInt(uint64(val.({{.name}})), 0)
- if e, ok := s.tbl.Lookup(h, func(v {{.name}}) bool { return val.({{.name}}) == v }); ok {
-{{ else -}}
- var cmp func({{.name}}) bool
- {{if eq .Name "Float32"}}
- if math.IsNaN(float64(val.(float32))) {
- cmp = isNan32Cmp
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = float32(math.NaN())
- {{ else -}}
- if math.IsNaN(val.(float64)) {
- cmp = math.IsNaN
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = math.NaN()
- {{end -}}
- } else {
- cmp = func(v {{.name}}) bool { return val.({{.name}}) == v }
- }
-
- h := hash{{.Name}}(val.({{.name}}), 0)
- if e, ok := s.tbl.Lookup(h, cmp); ok {
-{{ end -}}
- return int(e.payload.memoIdx), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsert will return the index of the specified value in the table, or insert the
-// value into the table and return the new index. found indicates whether or not it already
-// existed in the table (true) or was inserted by this call (false).
-func (s *{{.Name}}MemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
- {{if and (ne .Name "Float32") (ne .Name "Float64") }}
- h := hashInt(uint64(val.({{.name}})), 0)
- e, ok := s.tbl.Lookup(h, func(v {{.name}}) bool {
- return val.({{.name}}) == v
- })
-{{ else }}
- var cmp func({{.name}}) bool
- {{if eq .Name "Float32"}}
- if math.IsNaN(float64(val.(float32))) {
- cmp = isNan32Cmp
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = float32(math.NaN())
- {{ else -}}
- if math.IsNaN(val.(float64)) {
- cmp = math.IsNaN
- // use consistent internal bit pattern for NaN regardless of the pattern
- // that is passed to us. NaN is NaN is NaN
- val = math.NaN()
- {{end -}}
- } else {
- cmp = func(v {{.name}}) bool { return val.({{.name}}) == v }
- }
-
- h := hash{{.Name}}(val.({{.name}}), 0)
- e, ok := s.tbl.Lookup(h, cmp)
-{{ end }}
- if ok {
- idx = int(e.payload.memoIdx)
- found = true
- } else {
- idx = s.Size()
- s.tbl.Insert(e, h, val.({{.name}}), int32(idx))
- }
- return
-}
-
-
-// GetOrInsertBytes is unimplemented
-func (s *{{.Name}}MemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- panic("unimplemented")
-}
-{{end}}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.go b/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.go
deleted file mode 100644
index 283bc1a95..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/hashing/xxh3_memo_table.go
+++ /dev/null
@@ -1,443 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package hashing provides utilities for and an implementation of a hash
-// table which is more performant than the default go map implementation
-// by leveraging xxh3 and some custom hash functions.
-package hashing
-
-import (
- "bytes"
- "math"
- "reflect"
- "unsafe"
-)
-
-//go:generate go run ../../arrow/_tools/tmpl/main.go -i -data=types.tmpldata xxh3_memo_table.gen.go.tmpl
-
-type TypeTraits interface {
- BytesRequired(n int) int
-}
-
-type ByteSlice interface {
- Bytes() []byte
-}
-
-// MemoTable interface for hash tables and dictionary encoding.
-//
-// Values will remember the order they are inserted to generate a valid
-// dictionary.
-type MemoTable interface {
- TypeTraits() TypeTraits
- // Reset drops everything in the table allowing it to be reused
- Reset()
- // Size returns the current number of unique values stored in
- // the table, including whether or not a null value has been
- // inserted via GetOrInsertNull.
- Size() int
- // GetOrInsert returns the index of the table the specified value is,
- // and a boolean indicating whether or not the value was found in
- // the table (if false, the value was inserted). An error is returned
- // if val is not the appropriate type for the table.
- GetOrInsert(val interface{}) (idx int, existed bool, err error)
- // GetOrInsertBytes returns the index of the table the specified value is,
- // and a boolean indicating whether or not the value was found in
- // the table (if false, the value was inserted). An error is returned
- // if val is not the appropriate type for the table. This function is intended to be used by
- // the BinaryMemoTable to prevent unnecessary allocations of the data when converting from a []byte to interface{}.
- GetOrInsertBytes(val []byte) (idx int, existed bool, err error)
- // GetOrInsertNull returns the index of the null value in the table,
- // inserting one if it hasn't already been inserted. It returns a boolean
- // indicating if the null value already existed or not in the table.
- GetOrInsertNull() (idx int, existed bool)
- // GetNull returns the index of the null value in the table, but does not
- // insert one if it doesn't already exist. Will return -1 if it doesn't exist
- // indicated by a false value for the boolean.
- GetNull() (idx int, exists bool)
- // WriteOut copies the unique values of the memotable out to the byte slice
- // provided. Must have allocated enough bytes for all the values.
- WriteOut(out []byte)
- // WriteOutSubset is like WriteOut, but only writes a subset of values
- // starting with the index offset.
- WriteOutSubset(offset int, out []byte)
-}
-
-type NumericMemoTable interface {
- MemoTable
- WriteOutLE(out []byte)
- WriteOutSubsetLE(offset int, out []byte)
-}
-
-const (
- sentinel uint64 = 0
- loadFactor int64 = 2
-)
-
-func max(a, b uint64) uint64 {
- if a > b {
- return a
- }
- return b
-}
-
-var isNan32Cmp = func(v float32) bool { return math.IsNaN(float64(v)) }
-
-// KeyNotFound is the constant returned by memo table functions when a key isn't found in the table
-const KeyNotFound = -1
-
-type BinaryBuilderIFace interface {
- Reserve(int)
- ReserveData(int)
- Retain()
- Resize(int)
- ResizeData(int)
- Release()
- DataLen() int
- Value(int) []byte
- Len() int
- AppendNull()
- AppendString(string)
- Append([]byte)
-}
-
-// BinaryMemoTable is our hashtable for binary data using the BinaryBuilder
-// to construct the actual data in an easy to pass around way with minimal copies
-// while using a hash table to keep track of the indexes into the dictionary that
-// is created as we go.
-type BinaryMemoTable struct {
- tbl *Int32HashTable
- builder BinaryBuilderIFace
- nullIdx int
-}
-
-// NewBinaryMemoTable returns a hash table for Binary data, the passed in allocator will
-// be utilized for the BinaryBuilder, if nil then memory.DefaultAllocator will be used.
-// initial and valuesize can be used to pre-allocate the table to reduce allocations. With
-// initial being the initial number of entries to allocate for and valuesize being the starting
-// amount of space allocated for writing the actual binary data.
-func NewBinaryMemoTable(initial, valuesize int, bldr BinaryBuilderIFace) *BinaryMemoTable {
- bldr.Reserve(int(initial))
- datasize := valuesize
- if datasize <= 0 {
- datasize = initial * 4
- }
- bldr.ReserveData(datasize)
- return &BinaryMemoTable{tbl: NewInt32HashTable(uint64(initial)), builder: bldr, nullIdx: KeyNotFound}
-}
-
-type unimplementedtraits struct{}
-
-func (unimplementedtraits) BytesRequired(int) int { panic("unimplemented") }
-
-func (BinaryMemoTable) TypeTraits() TypeTraits {
- return unimplementedtraits{}
-}
-
-// Reset dumps all of the data in the table allowing it to be reutilized.
-func (s *BinaryMemoTable) Reset() {
- s.tbl.Reset(32)
- s.builder.Resize(0)
- s.builder.ResizeData(0)
- s.builder.Reserve(int(32))
- s.builder.ReserveData(int(32) * 4)
- s.nullIdx = KeyNotFound
-}
-
-// GetNull returns the index of a null that has been inserted into the table or
-// KeyNotFound. The bool returned will be true if there was a null inserted into
-// the table, and false otherwise.
-func (s *BinaryMemoTable) GetNull() (int, bool) {
- return int(s.nullIdx), s.nullIdx != KeyNotFound
-}
-
-// Size returns the current size of the memo table including the null value
-// if one has been inserted.
-func (s *BinaryMemoTable) Size() int {
- sz := int(s.tbl.size)
- if _, ok := s.GetNull(); ok {
- sz++
- }
- return sz
-}
-
-// helper function to easily return a byte slice for any given value
-// regardless of the type if it's a []byte, string, or fulfills the
-// ByteSlice interface.
-func (BinaryMemoTable) valAsByteSlice(val interface{}) []byte {
- switch v := val.(type) {
- case []byte:
- return v
- case ByteSlice:
- return v.Bytes()
- case string:
- var out []byte
- h := (*reflect.StringHeader)(unsafe.Pointer(&v))
- s := (*reflect.SliceHeader)(unsafe.Pointer(&out))
- s.Data = h.Data
- s.Len = h.Len
- s.Cap = h.Len
- return out
- default:
- panic("invalid type for binarymemotable")
- }
-}
-
-// helper function to get the hash value regardless of the underlying binary type
-func (BinaryMemoTable) getHash(val interface{}) uint64 {
- switch v := val.(type) {
- case string:
- return hashString(v, 0)
- case []byte:
- return Hash(v, 0)
- case ByteSlice:
- return Hash(v.Bytes(), 0)
- default:
- panic("invalid type for binarymemotable")
- }
-}
-
-// helper function to append the given value to the builder regardless
-// of the underlying binary type.
-func (b *BinaryMemoTable) appendVal(val interface{}) {
- switch v := val.(type) {
- case string:
- b.builder.AppendString(v)
- case []byte:
- b.builder.Append(v)
- case ByteSlice:
- b.builder.Append(v.Bytes())
- }
-}
-
-func (b *BinaryMemoTable) lookup(h uint64, val []byte) (*entryInt32, bool) {
- return b.tbl.Lookup(h, func(i int32) bool {
- return bytes.Equal(val, b.builder.Value(int(i)))
- })
-}
-
-// Get returns the index of the specified value in the table or KeyNotFound,
-// and a boolean indicating whether it was found in the table.
-func (b *BinaryMemoTable) Get(val interface{}) (int, bool) {
- if p, ok := b.lookup(b.getHash(val), b.valAsByteSlice(val)); ok {
- return int(p.payload.val), ok
- }
- return KeyNotFound, false
-}
-
-// GetOrInsertBytes returns the index of the given value in the table, if not found
-// it is inserted into the table. The return value 'found' indicates whether the value
-// was found in the table (true) or inserted (false) along with any possible error.
-func (b *BinaryMemoTable) GetOrInsertBytes(val []byte) (idx int, found bool, err error) {
- h := Hash(val, 0)
- p, found := b.lookup(h, val)
- if found {
- idx = int(p.payload.val)
- } else {
- idx = b.Size()
- b.builder.Append(val)
- b.tbl.Insert(p, h, int32(idx), -1)
- }
- return
-}
-
-// GetOrInsert returns the index of the given value in the table, if not found
-// it is inserted into the table. The return value 'found' indicates whether the value
-// was found in the table (true) or inserted (false) along with any possible error.
-func (b *BinaryMemoTable) GetOrInsert(val interface{}) (idx int, found bool, err error) {
- h := b.getHash(val)
- p, found := b.lookup(h, b.valAsByteSlice(val))
- if found {
- idx = int(p.payload.val)
- } else {
- idx = b.Size()
- b.appendVal(val)
- b.tbl.Insert(p, h, int32(idx), -1)
- }
- return
-}
-
-// GetOrInsertNull retrieves the index of a null in the table or inserts
-// null into the table, returning the index and a boolean indicating if it was
-// found in the table (true) or was inserted (false).
-func (b *BinaryMemoTable) GetOrInsertNull() (idx int, found bool) {
- idx, found = b.GetNull()
- if !found {
- idx = b.Size()
- b.nullIdx = idx
- b.builder.AppendNull()
- }
- return
-}
-
-func (b *BinaryMemoTable) Value(i int) []byte {
- return b.builder.Value(i)
-}
-
-// helper function to get the offset into the builder data for a given
-// index value.
-func (b *BinaryMemoTable) findOffset(idx int) uintptr {
- if b.builder.DataLen() == 0 {
- // only empty strings, short circuit
- return 0
- }
-
- val := b.builder.Value(idx)
- for len(val) == 0 {
- idx++
- if idx >= b.builder.Len() {
- break
- }
- val = b.builder.Value(idx)
- }
- if len(val) != 0 {
- return uintptr(unsafe.Pointer(&val[0]))
- }
- return uintptr(b.builder.DataLen()) + b.findOffset(0)
-}
-
-// CopyOffsets copies the list of offsets into the passed in slice, the offsets
-// being the start and end values of the underlying allocated bytes in the builder
-// for the individual values of the table. out should be at least sized to Size()+1
-func (b *BinaryMemoTable) CopyOffsets(out []int32) {
- b.CopyOffsetsSubset(0, out)
-}
-
-// CopyOffsetsSubset is like CopyOffsets but instead of copying all of the offsets,
-// it gets a subset of the offsets in the table starting at the index provided by "start".
-func (b *BinaryMemoTable) CopyOffsetsSubset(start int, out []int32) {
- if b.builder.Len() <= start {
- return
- }
-
- first := b.findOffset(0)
- delta := b.findOffset(start)
- sz := b.Size()
- for i := start; i < sz; i++ {
- offset := int32(b.findOffset(i) - delta)
- out[i-start] = offset
- }
-
- out[sz-start] = int32(b.builder.DataLen() - (int(delta) - int(first)))
-}
-
-// CopyLargeOffsets copies the list of offsets into the passed in slice, the offsets
-// being the start and end values of the underlying allocated bytes in the builder
-// for the individual values of the table. out should be at least sized to Size()+1
-func (b *BinaryMemoTable) CopyLargeOffsets(out []int64) {
- b.CopyLargeOffsetsSubset(0, out)
-}
-
-// CopyLargeOffsetsSubset is like CopyOffsets but instead of copying all of the offsets,
-// it gets a subset of the offsets in the table starting at the index provided by "start".
-func (b *BinaryMemoTable) CopyLargeOffsetsSubset(start int, out []int64) {
- if b.builder.Len() <= start {
- return
- }
-
- first := b.findOffset(0)
- delta := b.findOffset(start)
- sz := b.Size()
- for i := start; i < sz; i++ {
- offset := int64(b.findOffset(i) - delta)
- out[i-start] = offset
- }
-
- out[sz-start] = int64(b.builder.DataLen() - (int(delta) - int(first)))
-}
-
-// CopyValues copies the raw binary data bytes out, out should be a []byte
-// with at least ValuesSize bytes allocated to copy into.
-func (b *BinaryMemoTable) CopyValues(out interface{}) {
- b.CopyValuesSubset(0, out)
-}
-
-// CopyValuesSubset copies the raw binary data bytes out starting with the value
-// at the index start, out should be a []byte with at least ValuesSize bytes allocated
-func (b *BinaryMemoTable) CopyValuesSubset(start int, out interface{}) {
- if b.builder.Len() <= start {
- return
- }
-
- var (
- first = b.findOffset(0)
- offset = b.findOffset(int(start))
- length = b.builder.DataLen() - int(offset-first)
- )
-
- outval := out.([]byte)
- copy(outval, b.builder.Value(start)[0:length])
-}
-
-func (b *BinaryMemoTable) WriteOut(out []byte) {
- b.CopyValues(out)
-}
-
-func (b *BinaryMemoTable) WriteOutSubset(start int, out []byte) {
- b.CopyValuesSubset(start, out)
-}
-
-// CopyFixedWidthValues exists to cope with the fact that the table doesn't keep
-// track of the fixed width when inserting the null value the databuffer holds a
-// zero length byte slice for the null value (if found)
-func (b *BinaryMemoTable) CopyFixedWidthValues(start, width int, out []byte) {
- if start >= b.Size() {
- return
- }
-
- null, exists := b.GetNull()
- if !exists || null < start {
- // nothing to skip, proceed as usual
- b.CopyValuesSubset(start, out)
- return
- }
-
- var (
- leftOffset = b.findOffset(start)
- nullOffset = b.findOffset(null)
- leftSize = nullOffset - leftOffset
- rightOffset = leftOffset + uintptr(b.ValuesSize())
- )
-
- if leftSize > 0 {
- copy(out, b.builder.Value(start)[0:leftSize])
- }
-
- rightSize := rightOffset - nullOffset
- if rightSize > 0 {
- // skip the null fixed size value
- copy(out[int(leftSize)+width:], b.builder.Value(null + 1)[0:rightSize])
- }
-}
-
-// VisitValues exists to run the visitFn on each value currently in the hash table.
-func (b *BinaryMemoTable) VisitValues(start int, visitFn func([]byte)) {
- for i := int(start); i < b.Size(); i++ {
- visitFn(b.builder.Value(i))
- }
-}
-
-// Release is used to tell the underlying builder that it can release the memory allocated
-// when the reference count reaches 0, this is safe to be called from multiple goroutines
-// simultaneously
-func (b *BinaryMemoTable) Release() { b.builder.Release() }
-
-// Retain increases the ref count, it is safe to call it from multiple goroutines
-// simultaneously.
-func (b *BinaryMemoTable) Retain() { b.builder.Retain() }
-
-// ValuesSize returns the current total size of all the raw bytes that have been inserted
-// into the memotable so far.
-func (b *BinaryMemoTable) ValuesSize() int { return b.builder.DataLen() }
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/json/json.go b/vendor/github.com/apache/arrow/go/v15/internal/json/json.go
deleted file mode 100644
index 319b12c55..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/json/json.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !tinygo
-// +build !tinygo
-
-package json
-
-import (
- "io"
-
- "github.com/goccy/go-json"
-)
-
-type Decoder = json.Decoder
-type Encoder = json.Encoder
-type Marshaler = json.Marshaler
-type Delim = json.Delim
-type UnmarshalTypeError = json.UnmarshalTypeError
-type Number = json.Number
-type Unmarshaler = json.Unmarshaler
-type RawMessage = json.RawMessage
-
-func Marshal(v interface{}) ([]byte, error) {
- return json.Marshal(v)
-}
-
-func Unmarshal(data []byte, v interface{}) error {
- return json.Unmarshal(data, v)
-}
-
-func NewDecoder(r io.Reader) *Decoder {
- return json.NewDecoder(r)
-}
-
-func NewEncoder(w io.Writer) *Encoder {
- return json.NewEncoder(w)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/json/json_tinygo.go b/vendor/github.com/apache/arrow/go/v15/internal/json/json_tinygo.go
deleted file mode 100644
index 8e4f447b3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/json/json_tinygo.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build tinygo
-// +build tinygo
-
-package json
-
-import (
- "io"
-
- "encoding/json"
-)
-
-type Decoder = json.Decoder
-type Encoder = json.Encoder
-type Marshaler = json.Marshaler
-type Delim = json.Delim
-type UnmarshalTypeError = json.UnmarshalTypeError
-type Number = json.Number
-type Unmarshaler = json.Unmarshaler
-type RawMessage = json.RawMessage
-
-func Marshal(v interface{}) ([]byte, error) {
- return json.Marshal(v)
-}
-
-func Unmarshal(data []byte, v interface{}) error {
- return json.Unmarshal(data, v)
-}
-
-func NewDecoder(r io.Reader) *Decoder {
- return json.NewDecoder(r)
-}
-
-func NewEncoder(w io.Writer) *Encoder {
- return json.NewEncoder(w)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/Makefile b/vendor/github.com/apache/arrow/go/v15/internal/utils/Makefile
deleted file mode 100644
index fded9d1d5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/Makefile
+++ /dev/null
@@ -1,80 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# this converts rotate instructions from "ro[lr] <reg>" -> "ro[lr] <reg>, 1" for yasm compatibility
-PERL_FIXUP_ROTATE=perl -i -pe 's/(ro[rl]\s+\w{2,3})$$/\1, 1/'
-
-C2GOASM=c2goasm
-CC=clang-11
-C_FLAGS=-target x86_64-unknown-none -masm=intel -mno-red-zone -mstackrealign -mllvm -inline-threshold=1000 \
- -fno-asynchronous-unwind-tables -fno-exceptions -fno-rtti -O3 -fno-builtin -ffast-math -fno-jump-tables -I_lib
-ASM_FLAGS_AVX2=-mavx2 -mfma
-ASM_FLAGS_SSE4=-msse4
-ASM_FLAGS_BMI2=-mbmi2
-ASM_FLAGS_POPCNT=-mpopcnt
-
-C_FLAGS_NEON=-O3 -fvectorize -mllvm -force-vector-width=16 -fno-asynchronous-unwind-tables -mno-red-zone -mstackrealign -fno-exceptions \
- -fno-rtti -fno-builtin -ffast-math -fno-jump-tables -I_lib
-
-GO_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -not -name '*_test.go')
-ALL_SOURCES := $(shell find . -path ./_lib -prune -o -name '*.go' -name '*.s' -not -name '*_test.go')
-
-.PHONEY: assembly
-
-INTEL_SOURCES := \
- min_max_avx2_amd64.s min_max_sse4_amd64.s transpose_ints_avx2_amd64.s transpose_ints_sse4_amd64.s
-
-#
-# ARROW-15336: DO NOT add the assembly target for Arm64 (ARM_SOURCES) until c2goasm added the Arm64 support.
-# min_max_neon_arm64.s was generated by asm2plan9s.
-# And manually formatted it as the Arm64 Plan9.
-#
-
-assembly: $(INTEL_SOURCES)
-
-_lib/min_max_avx2_amd64.s: _lib/min_max.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_AVX2) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/min_max_sse4_amd64.s: _lib/min_max.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_SSE4) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/min_max_neon.s: _lib/min_max.c
- $(CC) -S $(C_FLAGS_NEON) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/transpose_ints_avx2_amd64.s: _lib/transpose_ints.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_AVX2) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/transpose_ints_sse4_amd64.s: _lib/transpose_ints.c
- $(CC) -S $(C_FLAGS) $(ASM_FLAGS_SSE4) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-_lib/transpose_ints_neon.s: _lib/transpose_ints.c
- $(CC) -S $(C_FLAGS_NEON) $^ -o $@ ; $(PERL_FIXUP_ROTATE) $@
-
-min_max_avx2_amd64.s: _lib/min_max_avx2_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-min_max_sse4_amd64.s: _lib/min_max_sse4_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-transpose_ints_avx2_amd64.s: _lib/transpose_ints_avx2_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-transpose_ints_sse4_amd64.s: _lib/transpose_ints_sse4_amd64.s
- $(C2GOASM) -a -f $^ $@
-
-clean:
- rm -f $(INTEL_SOURCES)
- rm -f $(addprefix _lib/,$(INTEL_SOURCES))
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/buf_reader.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/buf_reader.go
deleted file mode 100644
index 0b2381da1..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/buf_reader.go
+++ /dev/null
@@ -1,212 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import (
- "bufio"
- "errors"
- "fmt"
- "io"
-)
-
-// bufferedReader is similar to bufio.Reader except
-// it will expand the buffer if necessary when asked to Peek
-// more bytes than are in the buffer
-type bufferedReader struct {
- bufferSz int
- buf []byte
- r, w int
- rd io.Reader
- err error
-}
-
-// NewBufferedReader returns a buffered reader with similar semantics to bufio.Reader
-// except Peek will expand the internal buffer if needed rather than return
-// an error.
-func NewBufferedReader(rd io.Reader, sz int) *bufferedReader {
- // if rd is already a buffered reader whose buffer is >= the requested size
- // then just return it as is. no need to make a new object.
- b, ok := rd.(*bufferedReader)
- if ok && len(b.buf) >= sz {
- return b
- }
-
- r := &bufferedReader{
- rd: rd,
- }
- r.resizeBuffer(sz)
- return r
-}
-
-func (b *bufferedReader) resetBuffer() {
- if b.buf == nil {
- b.buf = make([]byte, b.bufferSz)
- } else if b.bufferSz > cap(b.buf) {
- buf := b.buf
- b.buf = make([]byte, b.bufferSz)
- copy(b.buf, buf)
- } else {
- b.buf = b.buf[:b.bufferSz]
- }
-}
-
-func (b *bufferedReader) resizeBuffer(newSize int) {
- b.bufferSz = newSize
- b.resetBuffer()
-}
-
-func (b *bufferedReader) fill() error {
- // slide existing data to the beginning
- if b.r > 0 {
- copy(b.buf, b.buf[b.r:b.w])
- b.w -= b.r
- b.r = 0
- }
-
- if b.w >= len(b.buf) {
- return fmt.Errorf("arrow/bufferedreader: %w", bufio.ErrBufferFull)
- }
-
- n, err := io.ReadAtLeast(b.rd, b.buf[b.w:], 1)
- if n < 0 {
- return fmt.Errorf("arrow/bufferedreader: filling buffer: %w", bufio.ErrNegativeCount)
- }
-
- b.w += n
- b.err = err
- return nil
-}
-
-func (b *bufferedReader) readErr() error {
- err := b.err
- b.err = nil
- return err
-}
-
-// Buffered returns the number of bytes currently buffered
-func (b *bufferedReader) Buffered() int { return b.w - b.r }
-
-// SetBufferSize resets the size of the internal buffer to the desired size.
-// Will return an error if newSize is <= 0 or if newSize is less than the size
-// of the buffered data.
-func (b *bufferedReader) SetBufferSize(newSize int) error {
- if newSize <= 0 {
- return errors.New("buffer size should be positive")
- }
-
- if b.w >= newSize {
- return errors.New("cannot shrink read buffer if buffered data remains")
- }
-
- b.resizeBuffer(newSize)
- return nil
-}
-
-// Peek will buffer and return n bytes from the underlying reader without advancing
-// the reader itself. If n is larger than the current buffer size, the buffer will
-// be expanded to accommodate the extra bytes rather than error.
-func (b *bufferedReader) Peek(n int) ([]byte, error) {
- if n < 0 {
- return nil, fmt.Errorf("arrow/bufferedreader: %w", bufio.ErrNegativeCount)
- }
-
- if n > len(b.buf) {
- if err := b.SetBufferSize(n); err != nil {
- return nil, err
- }
- }
-
- for b.w-b.r < n && b.w-b.r < len(b.buf) && b.err == nil {
- b.fill() // b.w-b.r < len(b.buf) => buffer is not full
- }
-
- return b.buf[b.r : b.r+n], b.readErr()
-}
-
-// Discard skips the next n bytes either by advancing the internal buffer
-// or by reading that many bytes in and throwing them away.
-func (b *bufferedReader) Discard(n int) (discarded int, err error) {
- if n < 0 {
- return 0, fmt.Errorf("arrow/bufferedreader: %w", bufio.ErrNegativeCount)
- }
-
- if n == 0 {
- return
- }
-
- remain := n
- for {
- skip := b.Buffered()
- if skip == 0 {
- b.fill()
- skip = b.Buffered()
- }
- if skip > remain {
- skip = remain
- }
- b.r += skip
- remain -= skip
- if remain == 0 {
- return n, nil
- }
- if b.err != nil {
- return n - remain, b.readErr()
- }
- }
-}
-
-func (b *bufferedReader) Read(p []byte) (n int, err error) {
- n = len(p)
- if n == 0 {
- if b.Buffered() > 0 {
- return 0, nil
- }
- return 0, b.readErr()
- }
-
- if b.r == b.w {
- if b.err != nil {
- return 0, b.readErr()
- }
- if len(p) >= len(b.buf) {
- // large read, empty buffer
- // read directly into p to avoid extra copy
- n, b.err = b.rd.Read(p)
- if n < 0 {
- return n, fmt.Errorf("arrow/bufferedreader: %w", bufio.ErrNegativeCount)
- }
- return n, b.readErr()
- }
-
- // one read
- // don't use b.fill
- b.r, b.w = 0, 0
- n, b.err = b.rd.Read(b.buf)
- if n < 0 {
- return n, fmt.Errorf("arrow/bufferedreader: %w", bufio.ErrNegativeCount)
- }
- if n == 0 {
- return 0, b.readErr()
- }
- b.w += n
- }
-
- // copy as much as we can
- n = copy(p, b.buf[b.r:b.w])
- b.r += n
- return n, nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_default.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_default.go
deleted file mode 100644
index 5fd257f52..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_default.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !s390x
-
-package utils
-
-var (
- ToLEInt16 = func(x int16) int16 { return x }
- ToLEUint16 = func(x uint16) uint16 { return x }
- ToLEUint32 = func(x uint32) uint32 { return x }
- ToLEUint64 = func(x uint64) uint64 { return x }
- ToLEInt32 = func(x int32) int32 { return x }
- ToLEInt64 = func(x int64) int64 { return x }
- ToLEFloat32 = func(x float32) float32 { return x }
- ToLEFloat64 = func(x float64) float64 { return x }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_s390x.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_s390x.go
deleted file mode 100644
index 7bb27cd81..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/endians_s390x.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import (
- "math"
- "math/bits"
-)
-
-var (
- ToLEInt16 = func(x int16) int16 { return int16(bits.ReverseBytes16(uint16(x))) }
- ToLEUint16 = bits.ReverseBytes16
- ToLEUint32 = bits.ReverseBytes32
- ToLEUint64 = bits.ReverseBytes64
- ToLEInt32 = func(x int32) int32 { return int32(bits.ReverseBytes32(uint32(x))) }
- ToLEInt64 = func(x int64) int64 { return int64(bits.ReverseBytes64(uint64(x))) }
- ToLEFloat32 = func(x float32) float32 { return math.Float32frombits(bits.ReverseBytes32(math.Float32bits(x))) }
- ToLEFloat64 = func(x float64) float64 { return math.Float64frombits(bits.ReverseBytes64(math.Float64bits(x))) }
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/math.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/math.go
deleted file mode 100644
index c8311750e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/math.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import "golang.org/x/exp/constraints"
-
-func Min[T constraints.Ordered](a, b T) T {
- if a < b {
- return a
- }
- return b
-}
-
-func Max[T constraints.Ordered](a, b T) T {
- if a > b {
- return a
- }
- return b
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max.go
deleted file mode 100644
index 3d7b0024a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max.go
+++ /dev/null
@@ -1,212 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import (
- "math"
-)
-
-// this file contains pure go implementations of the min_max functions that are
-// SIMD accelerated so that we can fallback to these if the cpu doesn't support
-// AVX2 or SSE4 instructions.
-
-func int8MinMax(values []int8) (min, max int8) {
- min = math.MaxInt8
- max = math.MinInt8
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func uint8MinMax(values []uint8) (min, max uint8) {
- min = math.MaxUint8
- max = 0
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func int16MinMax(values []int16) (min, max int16) {
- min = math.MaxInt16
- max = math.MinInt16
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func uint16MinMax(values []uint16) (min, max uint16) {
- min = math.MaxUint16
- max = 0
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func int32MinMax(values []int32) (min, max int32) {
- min = math.MaxInt32
- max = math.MinInt32
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func uint32MinMax(values []uint32) (min, max uint32) {
- min = math.MaxUint32
- max = 0
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func int64MinMax(values []int64) (min, max int64) {
- min = math.MaxInt64
- max = math.MinInt64
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-func uint64MinMax(values []uint64) (min, max uint64) {
- min = math.MaxUint64
- max = 0
-
- for _, v := range values {
- if min > v {
- min = v
- }
- if max < v {
- max = v
- }
- }
- return
-}
-
-var minmaxFuncs = struct {
- i8 func([]int8) (int8, int8)
- ui8 func([]uint8) (uint8, uint8)
- i16 func([]int16) (int16, int16)
- ui16 func([]uint16) (uint16, uint16)
- i32 func([]int32) (int32, int32)
- ui32 func([]uint32) (uint32, uint32)
- i64 func([]int64) (int64, int64)
- ui64 func([]uint64) (uint64, uint64)
-}{}
-
-// GetMinMaxInt8 returns the min and max for a int8 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxInt8(v []int8) (min, max int8) {
- return minmaxFuncs.i8(v)
-}
-
-// GetMinMaxUint8 returns the min and max for a uint8 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxUint8(v []uint8) (min, max uint8) {
- return minmaxFuncs.ui8(v)
-}
-
-// GetMinMaxInt16 returns the min and max for a int16 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxInt16(v []int16) (min, max int16) {
- return minmaxFuncs.i16(v)
-}
-
-// GetMinMaxUint16 returns the min and max for a uint16 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxUint16(v []uint16) (min, max uint16) {
- return minmaxFuncs.ui16(v)
-}
-
-// GetMinMaxInt32 returns the min and max for a int32 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxInt32(v []int32) (min, max int32) {
- return minmaxFuncs.i32(v)
-}
-
-// GetMinMaxUint32 returns the min and max for a uint32 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxUint32(v []uint32) (min, max uint32) {
- return minmaxFuncs.ui32(v)
-}
-
-// GetMinMaxInt64 returns the min and max for a int64 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxInt64(v []int64) (min, max int64) {
- return minmaxFuncs.i64(v)
-}
-
-// GetMinMaxUint64 returns the min and max for a uint64 slice, using AVX2 or
-// SSE4 cpu extensions if available, falling back to a pure go implementation
-// if they are unavailable or built with the noasm tag.
-func GetMinMaxUint64(v []uint64) (min, max uint64) {
- return minmaxFuncs.ui64(v)
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_amd64.go
deleted file mode 100644
index 5fccddbee..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_amd64.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import "golang.org/x/sys/cpu"
-
-func init() {
- // if the CPU supports AVX2 or SSE4 then let's use those to benefit from SIMD
- // to accelerate the performance for finding the min and max for an integral slice.
- // otherwise fallback to a pure go implementation if the cpu doesn't have these features.
- if cpu.X86.HasAVX2 {
- minmaxFuncs.i8 = int8MaxMinAVX2
- minmaxFuncs.ui8 = uint8MaxMinAVX2
- minmaxFuncs.i16 = int16MaxMinAVX2
- minmaxFuncs.ui16 = uint16MaxMinAVX2
- minmaxFuncs.i32 = int32MaxMinAVX2
- minmaxFuncs.ui32 = uint32MaxMinAVX2
- minmaxFuncs.i64 = int64MaxMinAVX2
- minmaxFuncs.ui64 = uint64MaxMinAVX2
- } else if cpu.X86.HasSSE42 {
- minmaxFuncs.i8 = int8MaxMinSSE4
- minmaxFuncs.ui8 = uint8MaxMinSSE4
- minmaxFuncs.i16 = int16MaxMinSSE4
- minmaxFuncs.ui16 = uint16MaxMinSSE4
- minmaxFuncs.i32 = int32MaxMinSSE4
- minmaxFuncs.ui32 = uint32MaxMinSSE4
- minmaxFuncs.i64 = int64MaxMinSSE4
- minmaxFuncs.ui64 = uint64MaxMinSSE4
- } else {
- minmaxFuncs.i8 = int8MinMax
- minmaxFuncs.ui8 = uint8MinMax
- minmaxFuncs.i16 = int16MinMax
- minmaxFuncs.ui16 = uint16MinMax
- minmaxFuncs.i32 = int32MinMax
- minmaxFuncs.ui32 = uint32MinMax
- minmaxFuncs.i64 = int64MinMax
- minmaxFuncs.ui64 = uint64MinMax
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_arm64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_arm64.go
deleted file mode 100644
index 7404e95d9..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_arm64.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import (
- "os"
- "strings"
-)
-import "golang.org/x/sys/cpu"
-
-func init() {
- // Added ability to enable extension via environment:
- // ARM_ENABLE_EXT=NEON go test
- if ext, ok := os.LookupEnv("ARM_ENABLE_EXT"); ok {
- exts := strings.Split(ext, ",")
-
- for _, x := range exts {
- switch x {
- case "NEON":
- cpu.ARM64.HasASIMD = true
- case "AES":
- cpu.ARM64.HasAES = true
- case "PMULL":
- cpu.ARM64.HasPMULL = true
- default:
- cpu.ARM64.HasASIMD = false
- cpu.ARM64.HasAES = false
- cpu.ARM64.HasPMULL = false
- }
- }
- }
- if cpu.ARM64.HasASIMD {
- minmaxFuncs.i32 = int32MaxMinNEON
- minmaxFuncs.ui32 = uint32MaxMinNEON
- minmaxFuncs.i64 = int64MaxMinNEON
- minmaxFuncs.ui64 = uint64MaxMinNEON
- } else {
- minmaxFuncs.i32 = int32MinMax
- minmaxFuncs.ui32 = uint32MinMax
- minmaxFuncs.i64 = int64MinMax
- minmaxFuncs.ui64 = uint64MinMax
- }
-
- // haven't yet generated the NEON arm64 for these
- minmaxFuncs.i8 = int8MinMax
- minmaxFuncs.ui8 = uint8MinMax
- minmaxFuncs.i16 = int16MinMax
- minmaxFuncs.ui16 = uint16MinMax
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.go
deleted file mode 100644
index af6726243..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import (
- "unsafe"
-)
-
-// This file contains convenience functions for utilizing AVX2 intrinsics to quickly
-// and efficiently get the min and max from an integral slice.
-
-//go:noescape
-func _int8_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int8MaxMinAVX2(values []int8) (min, max int8) {
- _int8_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint8_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint8MaxMinAVX2(values []uint8) (min, max uint8) {
- _uint8_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int16_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int16MaxMinAVX2(values []int16) (min, max int16) {
- _int16_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint16_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint16MaxMinAVX2(values []uint16) (min, max uint16) {
- _uint16_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int32_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int32MaxMinAVX2(values []int32) (min, max int32) {
- _int32_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint32_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint32MaxMinAVX2(values []uint32) (min, max uint32) {
- _uint32_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int64_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int64MaxMinAVX2(values []int64) (min, max int64) {
- _int64_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint64_max_min_avx2(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint64MaxMinAVX2(values []uint64) (min, max uint64) {
- _uint64_max_min_avx2(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.s b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.s
deleted file mode 100644
index fe0c36e0e..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_avx2_amd64.s
+++ /dev/null
@@ -1,927 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-DATA LCDATA1<>+0x000(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x008(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x010(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x018(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x020(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x028(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x030(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x038(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x040(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x048(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x050(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x058(SB)/8, $0x8080808080808080
-GLOBL LCDATA1<>(SB), 8, $96
-
-TEXT ·_int8_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA1<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB0_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x3f // cmp esi, 63
- JA LBB0_4
- WORD $0xb041; BYTE $0x80 // mov r8b, -128
- WORD $0xb640; BYTE $0x7f // mov sil, 127
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB0_11
-
-LBB0_1:
- WORD $0xb640; BYTE $0x7f // mov sil, 127
- WORD $0xb041; BYTE $0x80 // mov r8b, -128
- JMP LBB0_12
-
-LBB0_4:
- WORD $0x8945; BYTE $0xca // mov r10d, r9d
- LONG $0xc0e28341 // and r10d, -64
- LONG $0xc0428d49 // lea rax, [r10 - 64]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x06e8c149 // shr r8, 6
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB0_5
- WORD $0x894c; BYTE $0xc6 // mov rsi, r8
- LONG $0xfee68348 // and rsi, -2
- WORD $0xf748; BYTE $0xde // neg rsi
- LONG $0x4d6ffdc5; BYTE $0x00 // vmovdqa ymm1, yword 0[rbp] /* [rip + .LCPI0_0] */
- LONG $0x456ffdc5; BYTE $0x20 // vmovdqa ymm0, yword 32[rbp] /* [rip + .LCPI0_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xd96ffdc5 // vmovdqa ymm3, ymm1
-
-LBB0_7:
- LONG $0x246ffec5; BYTE $0x07 // vmovdqu ymm4, yword [rdi + rax]
- LONG $0x6c6ffec5; WORD $0x2007 // vmovdqu ymm5, yword [rdi + rax + 32]
- LONG $0x746ffec5; WORD $0x4007 // vmovdqu ymm6, yword [rdi + rax + 64]
- LONG $0x7c6ffec5; WORD $0x6007 // vmovdqu ymm7, yword [rdi + rax + 96]
- LONG $0x387de2c4; BYTE $0xc4 // vpminsb ymm0, ymm0, ymm4
- LONG $0x386de2c4; BYTE $0xd5 // vpminsb ymm2, ymm2, ymm5
- LONG $0x3c75e2c4; BYTE $0xcc // vpmaxsb ymm1, ymm1, ymm4
- LONG $0x3c65e2c4; BYTE $0xdd // vpmaxsb ymm3, ymm3, ymm5
- LONG $0x387de2c4; BYTE $0xc6 // vpminsb ymm0, ymm0, ymm6
- LONG $0x386de2c4; BYTE $0xd7 // vpminsb ymm2, ymm2, ymm7
- LONG $0x3c75e2c4; BYTE $0xce // vpmaxsb ymm1, ymm1, ymm6
- LONG $0x3c65e2c4; BYTE $0xdf // vpmaxsb ymm3, ymm3, ymm7
- LONG $0x80e88348 // sub rax, -128
- LONG $0x02c68348 // add rsi, 2
- JNE LBB0_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB0_10
-
-LBB0_9:
- LONG $0x246ffec5; BYTE $0x07 // vmovdqu ymm4, yword [rdi + rax]
- LONG $0x6c6ffec5; WORD $0x2007 // vmovdqu ymm5, yword [rdi + rax + 32]
- LONG $0x3c65e2c4; BYTE $0xdd // vpmaxsb ymm3, ymm3, ymm5
- LONG $0x3c75e2c4; BYTE $0xcc // vpmaxsb ymm1, ymm1, ymm4
- LONG $0x386de2c4; BYTE $0xd5 // vpminsb ymm2, ymm2, ymm5
- LONG $0x387de2c4; BYTE $0xc4 // vpminsb ymm0, ymm0, ymm4
-
-LBB0_10:
- LONG $0x3c75e2c4; BYTE $0xcb // vpmaxsb ymm1, ymm1, ymm3
- LONG $0x397de3c4; WORD $0x01cb // vextracti128 xmm3, ymm1, 1
- LONG $0x3c71e2c4; BYTE $0xcb // vpmaxsb xmm1, xmm1, xmm3
- LONG $0x4deff1c5; BYTE $0x40 // vpxor xmm1, xmm1, oword 64[rbp] /* [rip + .LCPI0_2] */
- LONG $0x387de2c4; BYTE $0xc2 // vpminsb ymm0, ymm0, ymm2
- LONG $0xd171e9c5; BYTE $0x08 // vpsrlw xmm2, xmm1, 8
- LONG $0xcadaf1c5 // vpminub xmm1, xmm1, xmm2
- LONG $0x4179e2c4; BYTE $0xc9 // vphminposuw xmm1, xmm1
- LONG $0x7e79c1c4; BYTE $0xc8 // vmovd r8d, xmm1
- LONG $0x7ff08041 // xor r8b, 127
- LONG $0x397de3c4; WORD $0x01c1 // vextracti128 xmm1, ymm0, 1
- LONG $0x3879e2c4; BYTE $0xc1 // vpminsb xmm0, xmm0, xmm1
- LONG $0x45eff9c5; BYTE $0x50 // vpxor xmm0, xmm0, oword 80[rbp] /* [rip + .LCPI0_3] */
- LONG $0xd071f1c5; BYTE $0x08 // vpsrlw xmm1, xmm0, 8
- LONG $0xc1daf9c5 // vpminub xmm0, xmm0, xmm1
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0xc67ef9c5 // vmovd esi, xmm0
- LONG $0x80f68040 // xor sil, -128
- WORD $0x394d; BYTE $0xca // cmp r10, r9
- JE LBB0_12
-
-LBB0_11:
- LONG $0x04b60f42; BYTE $0x17 // movzx eax, byte [rdi + r10]
- WORD $0x3840; BYTE $0xc6 // cmp sil, al
- LONG $0xf6b60f40 // movzx esi, sil
- WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax
- WORD $0x3841; BYTE $0xc0 // cmp r8b, al
- LONG $0xc0b60f45 // movzx r8d, r8b
- LONG $0xc04c0f44 // cmovl r8d, eax
- LONG $0x01c28349 // add r10, 1
- WORD $0x394d; BYTE $0xd1 // cmp r9, r10
- JNE LBB0_11
-
-LBB0_12:
- WORD $0x8844; BYTE $0x01 // mov byte [rcx], r8b
- WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil
- VZEROUPPER
- RET
-
-LBB0_5:
- LONG $0x4d6ffdc5; BYTE $0x00 // vmovdqa ymm1, yword 0[rbp] /* [rip + .LCPI0_0] */
- LONG $0x456ffdc5; BYTE $0x20 // vmovdqa ymm0, yword 32[rbp] /* [rip + .LCPI0_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xd96ffdc5 // vmovdqa ymm3, ymm1
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB0_9
- JMP LBB0_10
-
-TEXT ·_uint8_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB1_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x3f // cmp esi, 63
- JA LBB1_4
- WORD $0xb640; BYTE $0xff // mov sil, -1
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- WORD $0xc031 // xor eax, eax
- JMP LBB1_11
-
-LBB1_1:
- WORD $0xb640; BYTE $0xff // mov sil, -1
- WORD $0xc031 // xor eax, eax
- JMP LBB1_12
-
-LBB1_4:
- WORD $0x8945; BYTE $0xca // mov r10d, r9d
- LONG $0xc0e28341 // and r10d, -64
- LONG $0xc0428d49 // lea rax, [r10 - 64]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x06e8c149 // shr r8, 6
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB1_5
- WORD $0x894c; BYTE $0xc6 // mov rsi, r8
- LONG $0xfee68348 // and rsi, -2
- WORD $0xf748; BYTE $0xde // neg rsi
- LONG $0xc0eff9c5 // vpxor xmm0, xmm0, xmm0
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- WORD $0xc031 // xor eax, eax
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xdbefe1c5 // vpxor xmm3, xmm3, xmm3
-
-LBB1_7:
- LONG $0x246ffec5; BYTE $0x07 // vmovdqu ymm4, yword [rdi + rax]
- LONG $0x6c6ffec5; WORD $0x2007 // vmovdqu ymm5, yword [rdi + rax + 32]
- LONG $0x746ffec5; WORD $0x4007 // vmovdqu ymm6, yword [rdi + rax + 64]
- LONG $0x7c6ffec5; WORD $0x6007 // vmovdqu ymm7, yword [rdi + rax + 96]
- LONG $0xccdaf5c5 // vpminub ymm1, ymm1, ymm4
- LONG $0xd5daedc5 // vpminub ymm2, ymm2, ymm5
- LONG $0xc4defdc5 // vpmaxub ymm0, ymm0, ymm4
- LONG $0xdddee5c5 // vpmaxub ymm3, ymm3, ymm5
- LONG $0xcedaf5c5 // vpminub ymm1, ymm1, ymm6
- LONG $0xd7daedc5 // vpminub ymm2, ymm2, ymm7
- LONG $0xc6defdc5 // vpmaxub ymm0, ymm0, ymm6
- LONG $0xdfdee5c5 // vpmaxub ymm3, ymm3, ymm7
- LONG $0x80e88348 // sub rax, -128
- LONG $0x02c68348 // add rsi, 2
- JNE LBB1_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB1_10
-
-LBB1_9:
- LONG $0x246ffec5; BYTE $0x07 // vmovdqu ymm4, yword [rdi + rax]
- LONG $0x6c6ffec5; WORD $0x2007 // vmovdqu ymm5, yword [rdi + rax + 32]
- LONG $0xdddee5c5 // vpmaxub ymm3, ymm3, ymm5
- LONG $0xc4defdc5 // vpmaxub ymm0, ymm0, ymm4
- LONG $0xd5daedc5 // vpminub ymm2, ymm2, ymm5
- LONG $0xccdaf5c5 // vpminub ymm1, ymm1, ymm4
-
-LBB1_10:
- LONG $0xcadaf5c5 // vpminub ymm1, ymm1, ymm2
- LONG $0xc3defdc5 // vpmaxub ymm0, ymm0, ymm3
- LONG $0x397de3c4; WORD $0x01c2 // vextracti128 xmm2, ymm0, 1
- LONG $0xc2def9c5 // vpmaxub xmm0, xmm0, xmm2
- LONG $0xd276e9c5 // vpcmpeqd xmm2, xmm2, xmm2
- LONG $0xc2eff9c5 // vpxor xmm0, xmm0, xmm2
- LONG $0xd071e9c5; BYTE $0x08 // vpsrlw xmm2, xmm0, 8
- LONG $0xc2daf9c5 // vpminub xmm0, xmm0, xmm2
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0xc07ef9c5 // vmovd eax, xmm0
- WORD $0xd0f6 // not al
- LONG $0x397de3c4; WORD $0x01c8 // vextracti128 xmm0, ymm1, 1
- LONG $0xc0daf1c5 // vpminub xmm0, xmm1, xmm0
- LONG $0xd071f1c5; BYTE $0x08 // vpsrlw xmm1, xmm0, 8
- LONG $0xc1daf9c5 // vpminub xmm0, xmm0, xmm1
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0xc67ef9c5 // vmovd esi, xmm0
- WORD $0x394d; BYTE $0xca // cmp r10, r9
- JE LBB1_12
-
-LBB1_11:
- LONG $0x04b60f46; BYTE $0x17 // movzx r8d, byte [rdi + r10]
- WORD $0x3844; BYTE $0xc6 // cmp sil, r8b
- LONG $0xf6b60f40 // movzx esi, sil
- LONG $0xf0430f41 // cmovae esi, r8d
- WORD $0x3844; BYTE $0xc0 // cmp al, r8b
- WORD $0xb60f; BYTE $0xc0 // movzx eax, al
- LONG $0xc0460f41 // cmovbe eax, r8d
- LONG $0x01c28349 // add r10, 1
- WORD $0x394d; BYTE $0xd1 // cmp r9, r10
- JNE LBB1_11
-
-LBB1_12:
- WORD $0x0188 // mov byte [rcx], al
- WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil
- VZEROUPPER
- RET
-
-LBB1_5:
- LONG $0xc0eff9c5 // vpxor xmm0, xmm0, xmm0
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- WORD $0xc031 // xor eax, eax
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xdbefe1c5 // vpxor xmm3, xmm3, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB1_9
- JMP LBB1_10
-
-DATA LCDATA2<>+0x000(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x008(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x010(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x018(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x020(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x028(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x030(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x038(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x040(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x048(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x050(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x058(SB)/8, $0x8000800080008000
-GLOBL LCDATA2<>(SB), 8, $96
-
-TEXT ·_int16_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA2<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB2_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB2_4
- LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768
- LONG $0x7fffbe66 // mov si, 32767
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB2_11
-
-LBB2_1:
- LONG $0x7fffbe66 // mov si, 32767
- LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768
- JMP LBB2_12
-
-LBB2_4:
- WORD $0x8945; BYTE $0xca // mov r10d, r9d
- LONG $0xe0e28341 // and r10d, -32
- LONG $0xe0428d49 // lea rax, [r10 - 32]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x05e8c149 // shr r8, 5
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB2_5
- WORD $0x894c; BYTE $0xc6 // mov rsi, r8
- LONG $0xfee68348 // and rsi, -2
- WORD $0xf748; BYTE $0xde // neg rsi
- LONG $0x4d6ffdc5; BYTE $0x00 // vmovdqa ymm1, yword 0[rbp] /* [rip + .LCPI2_0] */
- LONG $0x456ffdc5; BYTE $0x20 // vmovdqa ymm0, yword 32[rbp] /* [rip + .LCPI2_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xd96ffdc5 // vmovdqa ymm3, ymm1
-
-LBB2_7:
- LONG $0x246ffec5; BYTE $0x47 // vmovdqu ymm4, yword [rdi + 2*rax]
- LONG $0x6c6ffec5; WORD $0x2047 // vmovdqu ymm5, yword [rdi + 2*rax + 32]
- LONG $0x746ffec5; WORD $0x4047 // vmovdqu ymm6, yword [rdi + 2*rax + 64]
- LONG $0x7c6ffec5; WORD $0x6047 // vmovdqu ymm7, yword [rdi + 2*rax + 96]
- LONG $0xc4eafdc5 // vpminsw ymm0, ymm0, ymm4
- LONG $0xd5eaedc5 // vpminsw ymm2, ymm2, ymm5
- LONG $0xcceef5c5 // vpmaxsw ymm1, ymm1, ymm4
- LONG $0xddeee5c5 // vpmaxsw ymm3, ymm3, ymm5
- LONG $0xc6eafdc5 // vpminsw ymm0, ymm0, ymm6
- LONG $0xd7eaedc5 // vpminsw ymm2, ymm2, ymm7
- LONG $0xceeef5c5 // vpmaxsw ymm1, ymm1, ymm6
- LONG $0xdfeee5c5 // vpmaxsw ymm3, ymm3, ymm7
- LONG $0x40c08348 // add rax, 64
- LONG $0x02c68348 // add rsi, 2
- JNE LBB2_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB2_10
-
-LBB2_9:
- LONG $0x246ffec5; BYTE $0x47 // vmovdqu ymm4, yword [rdi + 2*rax]
- LONG $0x6c6ffec5; WORD $0x2047 // vmovdqu ymm5, yword [rdi + 2*rax + 32]
- LONG $0xddeee5c5 // vpmaxsw ymm3, ymm3, ymm5
- LONG $0xcceef5c5 // vpmaxsw ymm1, ymm1, ymm4
- LONG $0xd5eaedc5 // vpminsw ymm2, ymm2, ymm5
- LONG $0xc4eafdc5 // vpminsw ymm0, ymm0, ymm4
-
-LBB2_10:
- LONG $0xcbeef5c5 // vpmaxsw ymm1, ymm1, ymm3
- LONG $0x397de3c4; WORD $0x01cb // vextracti128 xmm3, ymm1, 1
- LONG $0xcbeef1c5 // vpmaxsw xmm1, xmm1, xmm3
- LONG $0x4deff1c5; BYTE $0x40 // vpxor xmm1, xmm1, oword 64[rbp] /* [rip + .LCPI2_2] */
- LONG $0xc2eafdc5 // vpminsw ymm0, ymm0, ymm2
- LONG $0x4179e2c4; BYTE $0xc9 // vphminposuw xmm1, xmm1
- LONG $0x7e79c1c4; BYTE $0xc8 // vmovd r8d, xmm1
- LONG $0xfff08141; WORD $0x007f; BYTE $0x00 // xor r8d, 32767
- LONG $0x397de3c4; WORD $0x01c1 // vextracti128 xmm1, ymm0, 1
- LONG $0xc1eaf9c5 // vpminsw xmm0, xmm0, xmm1
- LONG $0x45eff9c5; BYTE $0x50 // vpxor xmm0, xmm0, oword 80[rbp] /* [rip + .LCPI2_3] */
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0xc67ef9c5 // vmovd esi, xmm0
- LONG $0x8000f681; WORD $0x0000 // xor esi, 32768
- WORD $0x394d; BYTE $0xca // cmp r10, r9
- JE LBB2_12
-
-LBB2_11:
- LONG $0x04b70f42; BYTE $0x57 // movzx eax, word [rdi + 2*r10]
- WORD $0x3966; BYTE $0xc6 // cmp si, ax
- WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax
- LONG $0xc0394166 // cmp r8w, ax
- LONG $0xc04c0f44 // cmovl r8d, eax
- LONG $0x01c28349 // add r10, 1
- WORD $0x394d; BYTE $0xd1 // cmp r9, r10
- JNE LBB2_11
-
-LBB2_12:
- LONG $0x01894466 // mov word [rcx], r8w
- WORD $0x8966; BYTE $0x32 // mov word [rdx], si
- VZEROUPPER
- RET
-
-LBB2_5:
- LONG $0x4d6ffdc5; BYTE $0x00 // vmovdqa ymm1, yword 0[rbp] /* [rip + .LCPI2_0] */
- LONG $0x456ffdc5; BYTE $0x20 // vmovdqa ymm0, yword 32[rbp] /* [rip + .LCPI2_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xd96ffdc5 // vmovdqa ymm3, ymm1
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB2_9
- JMP LBB2_10
-
-TEXT ·_uint16_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB3_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB3_4
- LONG $0xffb84166; BYTE $0xff // mov r8w, -1
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- WORD $0xf631 // xor esi, esi
- JMP LBB3_11
-
-LBB3_1:
- LONG $0xffb84166; BYTE $0xff // mov r8w, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB3_12
-
-LBB3_4:
- WORD $0x8945; BYTE $0xca // mov r10d, r9d
- LONG $0xe0e28341 // and r10d, -32
- LONG $0xe0428d49 // lea rax, [r10 - 32]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x05e8c149 // shr r8, 5
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB3_5
- WORD $0x894c; BYTE $0xc6 // mov rsi, r8
- LONG $0xfee68348 // and rsi, -2
- WORD $0xf748; BYTE $0xde // neg rsi
- LONG $0xc0eff9c5 // vpxor xmm0, xmm0, xmm0
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- WORD $0xc031 // xor eax, eax
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xdbefe1c5 // vpxor xmm3, xmm3, xmm3
-
-LBB3_7:
- LONG $0x246ffec5; BYTE $0x47 // vmovdqu ymm4, yword [rdi + 2*rax]
- LONG $0x6c6ffec5; WORD $0x2047 // vmovdqu ymm5, yword [rdi + 2*rax + 32]
- LONG $0x746ffec5; WORD $0x4047 // vmovdqu ymm6, yword [rdi + 2*rax + 64]
- LONG $0x7c6ffec5; WORD $0x6047 // vmovdqu ymm7, yword [rdi + 2*rax + 96]
- LONG $0x3a75e2c4; BYTE $0xcc // vpminuw ymm1, ymm1, ymm4
- LONG $0x3a6de2c4; BYTE $0xd5 // vpminuw ymm2, ymm2, ymm5
- LONG $0x3e7de2c4; BYTE $0xc4 // vpmaxuw ymm0, ymm0, ymm4
- LONG $0x3e65e2c4; BYTE $0xdd // vpmaxuw ymm3, ymm3, ymm5
- LONG $0x3a75e2c4; BYTE $0xce // vpminuw ymm1, ymm1, ymm6
- LONG $0x3a6de2c4; BYTE $0xd7 // vpminuw ymm2, ymm2, ymm7
- LONG $0x3e7de2c4; BYTE $0xc6 // vpmaxuw ymm0, ymm0, ymm6
- LONG $0x3e65e2c4; BYTE $0xdf // vpmaxuw ymm3, ymm3, ymm7
- LONG $0x40c08348 // add rax, 64
- LONG $0x02c68348 // add rsi, 2
- JNE LBB3_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB3_10
-
-LBB3_9:
- LONG $0x246ffec5; BYTE $0x47 // vmovdqu ymm4, yword [rdi + 2*rax]
- LONG $0x6c6ffec5; WORD $0x2047 // vmovdqu ymm5, yword [rdi + 2*rax + 32]
- LONG $0x3e65e2c4; BYTE $0xdd // vpmaxuw ymm3, ymm3, ymm5
- LONG $0x3e7de2c4; BYTE $0xc4 // vpmaxuw ymm0, ymm0, ymm4
- LONG $0x3a6de2c4; BYTE $0xd5 // vpminuw ymm2, ymm2, ymm5
- LONG $0x3a75e2c4; BYTE $0xcc // vpminuw ymm1, ymm1, ymm4
-
-LBB3_10:
- LONG $0x3a75e2c4; BYTE $0xca // vpminuw ymm1, ymm1, ymm2
- LONG $0x3e7de2c4; BYTE $0xc3 // vpmaxuw ymm0, ymm0, ymm3
- LONG $0x397de3c4; WORD $0x01c2 // vextracti128 xmm2, ymm0, 1
- LONG $0x3e79e2c4; BYTE $0xc2 // vpmaxuw xmm0, xmm0, xmm2
- LONG $0xd276e9c5 // vpcmpeqd xmm2, xmm2, xmm2
- LONG $0xc2eff9c5 // vpxor xmm0, xmm0, xmm2
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0xc67ef9c5 // vmovd esi, xmm0
- WORD $0xd6f7 // not esi
- LONG $0x397de3c4; WORD $0x01c8 // vextracti128 xmm0, ymm1, 1
- LONG $0x3a71e2c4; BYTE $0xc0 // vpminuw xmm0, xmm1, xmm0
- LONG $0x4179e2c4; BYTE $0xc0 // vphminposuw xmm0, xmm0
- LONG $0x7e79c1c4; BYTE $0xc0 // vmovd r8d, xmm0
- WORD $0x394d; BYTE $0xca // cmp r10, r9
- JE LBB3_12
-
-LBB3_11:
- LONG $0x04b70f42; BYTE $0x57 // movzx eax, word [rdi + 2*r10]
- LONG $0xc0394166 // cmp r8w, ax
- LONG $0xc0430f44 // cmovae r8d, eax
- WORD $0x3966; BYTE $0xc6 // cmp si, ax
- WORD $0x460f; BYTE $0xf0 // cmovbe esi, eax
- LONG $0x01c28349 // add r10, 1
- WORD $0x394d; BYTE $0xd1 // cmp r9, r10
- JNE LBB3_11
-
-LBB3_12:
- WORD $0x8966; BYTE $0x31 // mov word [rcx], si
- LONG $0x02894466 // mov word [rdx], r8w
- VZEROUPPER
- RET
-
-LBB3_5:
- LONG $0xc0eff9c5 // vpxor xmm0, xmm0, xmm0
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- WORD $0xc031 // xor eax, eax
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xdbefe1c5 // vpxor xmm3, xmm3, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB3_9
- JMP LBB3_10
-
-DATA LCDATA3<>+0x000(SB)/8, $0x7fffffff80000000
-GLOBL LCDATA3<>(SB), 8, $8
-
-TEXT ·_int32_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA3<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB4_1
- WORD $0x8941; BYTE $0xf0 // mov r8d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB4_4
- LONG $0x0000ba41; WORD $0x8000 // mov r10d, -2147483648
- LONG $0xffffffb8; BYTE $0x7f // mov eax, 2147483647
- WORD $0x3145; BYTE $0xc9 // xor r9d, r9d
- JMP LBB4_7
-
-LBB4_1:
- LONG $0xffffffb8; BYTE $0x7f // mov eax, 2147483647
- LONG $0x000000be; BYTE $0x80 // mov esi, -2147483648
- JMP LBB4_8
-
-LBB4_4:
- WORD $0x8945; BYTE $0xc1 // mov r9d, r8d
- LONG $0x587de2c4; WORD $0x0065 // vpbroadcastd ymm4, dword 0[rbp] /* [rip + .LCPI4_0] */
- LONG $0xe0e18341 // and r9d, -32
- LONG $0x587de2c4; WORD $0x0445 // vpbroadcastd ymm0, dword 4[rbp] /* [rip + .LCPI4_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xc86ffdc5 // vmovdqa ymm1, ymm0
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xd86ffdc5 // vmovdqa ymm3, ymm0
- LONG $0xec6ffdc5 // vmovdqa ymm5, ymm4
- LONG $0xf46ffdc5 // vmovdqa ymm6, ymm4
- LONG $0xfc6ffdc5 // vmovdqa ymm7, ymm4
-
-LBB4_5:
- LONG $0x046f7ec5; BYTE $0x87 // vmovdqu ymm8, yword [rdi + 4*rax]
- LONG $0x4c6f7ec5; WORD $0x2087 // vmovdqu ymm9, yword [rdi + 4*rax + 32]
- LONG $0x546f7ec5; WORD $0x4087 // vmovdqu ymm10, yword [rdi + 4*rax + 64]
- LONG $0x5c6f7ec5; WORD $0x6087 // vmovdqu ymm11, yword [rdi + 4*rax + 96]
- LONG $0x397dc2c4; BYTE $0xc0 // vpminsd ymm0, ymm0, ymm8
- LONG $0x3975c2c4; BYTE $0xc9 // vpminsd ymm1, ymm1, ymm9
- LONG $0x396dc2c4; BYTE $0xd2 // vpminsd ymm2, ymm2, ymm10
- LONG $0x3965c2c4; BYTE $0xdb // vpminsd ymm3, ymm3, ymm11
- LONG $0x3d5dc2c4; BYTE $0xe0 // vpmaxsd ymm4, ymm4, ymm8
- LONG $0x3d55c2c4; BYTE $0xe9 // vpmaxsd ymm5, ymm5, ymm9
- LONG $0x3d4dc2c4; BYTE $0xf2 // vpmaxsd ymm6, ymm6, ymm10
- LONG $0x3d45c2c4; BYTE $0xfb // vpmaxsd ymm7, ymm7, ymm11
- LONG $0x20c08348 // add rax, 32
- WORD $0x3949; BYTE $0xc1 // cmp r9, rax
- JNE LBB4_5
- LONG $0x3d5de2c4; BYTE $0xe5 // vpmaxsd ymm4, ymm4, ymm5
- LONG $0x3d5de2c4; BYTE $0xe6 // vpmaxsd ymm4, ymm4, ymm6
- LONG $0x3d5de2c4; BYTE $0xe7 // vpmaxsd ymm4, ymm4, ymm7
- LONG $0x397de3c4; WORD $0x01e5 // vextracti128 xmm5, ymm4, 1
- LONG $0x3d59e2c4; BYTE $0xe5 // vpmaxsd xmm4, xmm4, xmm5
- LONG $0xec70f9c5; BYTE $0x4e // vpshufd xmm5, xmm4, 78
- LONG $0x3d59e2c4; BYTE $0xe5 // vpmaxsd xmm4, xmm4, xmm5
- LONG $0xec70f9c5; BYTE $0xe5 // vpshufd xmm5, xmm4, 229
- LONG $0x3d59e2c4; BYTE $0xe5 // vpmaxsd xmm4, xmm4, xmm5
- LONG $0x7e79c1c4; BYTE $0xe2 // vmovd r10d, xmm4
- LONG $0x397de2c4; BYTE $0xc1 // vpminsd ymm0, ymm0, ymm1
- LONG $0x397de2c4; BYTE $0xc2 // vpminsd ymm0, ymm0, ymm2
- LONG $0x397de2c4; BYTE $0xc3 // vpminsd ymm0, ymm0, ymm3
- LONG $0x397de3c4; WORD $0x01c1 // vextracti128 xmm1, ymm0, 1
- LONG $0x3979e2c4; BYTE $0xc1 // vpminsd xmm0, xmm0, xmm1
- LONG $0xc870f9c5; BYTE $0x4e // vpshufd xmm1, xmm0, 78
- LONG $0x3979e2c4; BYTE $0xc1 // vpminsd xmm0, xmm0, xmm1
- LONG $0xc870f9c5; BYTE $0xe5 // vpshufd xmm1, xmm0, 229
- LONG $0x3979e2c4; BYTE $0xc1 // vpminsd xmm0, xmm0, xmm1
- LONG $0xc07ef9c5 // vmovd eax, xmm0
- WORD $0x8944; BYTE $0xd6 // mov esi, r10d
- WORD $0x394d; BYTE $0xc1 // cmp r9, r8
- JE LBB4_8
-
-LBB4_7:
- LONG $0x8f348b42 // mov esi, dword [rdi + 4*r9]
- WORD $0xf039 // cmp eax, esi
- WORD $0x4f0f; BYTE $0xc6 // cmovg eax, esi
- WORD $0x3941; BYTE $0xf2 // cmp r10d, esi
- LONG $0xf24d0f41 // cmovge esi, r10d
- LONG $0x01c18349 // add r9, 1
- WORD $0x8941; BYTE $0xf2 // mov r10d, esi
- WORD $0x394d; BYTE $0xc8 // cmp r8, r9
- JNE LBB4_7
-
-LBB4_8:
- WORD $0x3189 // mov dword [rcx], esi
- WORD $0x0289 // mov dword [rdx], eax
- VZEROUPPER
- RET
-
-TEXT ·_uint32_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB5_1
- WORD $0x8941; BYTE $0xf0 // mov r8d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB5_4
- WORD $0x3145; BYTE $0xc9 // xor r9d, r9d
- LONG $0xffffffb8; BYTE $0xff // mov eax, -1
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB5_7
-
-LBB5_1:
- LONG $0xffffffb8; BYTE $0xff // mov eax, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB5_8
-
-LBB5_4:
- WORD $0x8945; BYTE $0xc1 // mov r9d, r8d
- LONG $0xe0e18341 // and r9d, -32
- LONG $0xe4efd9c5 // vpxor xmm4, xmm4, xmm4
- LONG $0xc076fdc5 // vpcmpeqd ymm0, ymm0, ymm0
- WORD $0xc031 // xor eax, eax
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xdb76e5c5 // vpcmpeqd ymm3, ymm3, ymm3
- LONG $0xedefd1c5 // vpxor xmm5, xmm5, xmm5
- LONG $0xf6efc9c5 // vpxor xmm6, xmm6, xmm6
- LONG $0xffefc1c5 // vpxor xmm7, xmm7, xmm7
-
-LBB5_5:
- LONG $0x046f7ec5; BYTE $0x87 // vmovdqu ymm8, yword [rdi + 4*rax]
- LONG $0x4c6f7ec5; WORD $0x2087 // vmovdqu ymm9, yword [rdi + 4*rax + 32]
- LONG $0x546f7ec5; WORD $0x4087 // vmovdqu ymm10, yword [rdi + 4*rax + 64]
- LONG $0x5c6f7ec5; WORD $0x6087 // vmovdqu ymm11, yword [rdi + 4*rax + 96]
- LONG $0x3b7dc2c4; BYTE $0xc0 // vpminud ymm0, ymm0, ymm8
- LONG $0x3b75c2c4; BYTE $0xc9 // vpminud ymm1, ymm1, ymm9
- LONG $0x3b6dc2c4; BYTE $0xd2 // vpminud ymm2, ymm2, ymm10
- LONG $0x3b65c2c4; BYTE $0xdb // vpminud ymm3, ymm3, ymm11
- LONG $0x3f5dc2c4; BYTE $0xe0 // vpmaxud ymm4, ymm4, ymm8
- LONG $0x3f55c2c4; BYTE $0xe9 // vpmaxud ymm5, ymm5, ymm9
- LONG $0x3f4dc2c4; BYTE $0xf2 // vpmaxud ymm6, ymm6, ymm10
- LONG $0x3f45c2c4; BYTE $0xfb // vpmaxud ymm7, ymm7, ymm11
- LONG $0x20c08348 // add rax, 32
- WORD $0x3949; BYTE $0xc1 // cmp r9, rax
- JNE LBB5_5
- LONG $0x3f5de2c4; BYTE $0xe5 // vpmaxud ymm4, ymm4, ymm5
- LONG $0x3f5de2c4; BYTE $0xe6 // vpmaxud ymm4, ymm4, ymm6
- LONG $0x3f5de2c4; BYTE $0xe7 // vpmaxud ymm4, ymm4, ymm7
- LONG $0x397de3c4; WORD $0x01e5 // vextracti128 xmm5, ymm4, 1
- LONG $0x3f59e2c4; BYTE $0xe5 // vpmaxud xmm4, xmm4, xmm5
- LONG $0xec70f9c5; BYTE $0x4e // vpshufd xmm5, xmm4, 78
- LONG $0x3f59e2c4; BYTE $0xe5 // vpmaxud xmm4, xmm4, xmm5
- LONG $0xec70f9c5; BYTE $0xe5 // vpshufd xmm5, xmm4, 229
- LONG $0x3f59e2c4; BYTE $0xe5 // vpmaxud xmm4, xmm4, xmm5
- LONG $0x7e79c1c4; BYTE $0xe2 // vmovd r10d, xmm4
- LONG $0x3b7de2c4; BYTE $0xc1 // vpminud ymm0, ymm0, ymm1
- LONG $0x3b7de2c4; BYTE $0xc2 // vpminud ymm0, ymm0, ymm2
- LONG $0x3b7de2c4; BYTE $0xc3 // vpminud ymm0, ymm0, ymm3
- LONG $0x397de3c4; WORD $0x01c1 // vextracti128 xmm1, ymm0, 1
- LONG $0x3b79e2c4; BYTE $0xc1 // vpminud xmm0, xmm0, xmm1
- LONG $0xc870f9c5; BYTE $0x4e // vpshufd xmm1, xmm0, 78
- LONG $0x3b79e2c4; BYTE $0xc1 // vpminud xmm0, xmm0, xmm1
- LONG $0xc870f9c5; BYTE $0xe5 // vpshufd xmm1, xmm0, 229
- LONG $0x3b79e2c4; BYTE $0xc1 // vpminud xmm0, xmm0, xmm1
- LONG $0xc07ef9c5 // vmovd eax, xmm0
- WORD $0x8944; BYTE $0xd6 // mov esi, r10d
- WORD $0x394d; BYTE $0xc1 // cmp r9, r8
- JE LBB5_8
-
-LBB5_7:
- LONG $0x8f348b42 // mov esi, dword [rdi + 4*r9]
- WORD $0xf039 // cmp eax, esi
- WORD $0x430f; BYTE $0xc6 // cmovae eax, esi
- WORD $0x3941; BYTE $0xf2 // cmp r10d, esi
- LONG $0xf2470f41 // cmova esi, r10d
- LONG $0x01c18349 // add r9, 1
- WORD $0x8941; BYTE $0xf2 // mov r10d, esi
- WORD $0x394d; BYTE $0xc8 // cmp r8, r9
- JNE LBB5_7
-
-LBB5_8:
- WORD $0x3189 // mov dword [rcx], esi
- WORD $0x0289 // mov dword [rdx], eax
- VZEROUPPER
- RET
-
-DATA LCDATA4<>+0x000(SB)/8, $0x8000000000000000
-DATA LCDATA4<>+0x008(SB)/8, $0x7fffffffffffffff
-GLOBL LCDATA4<>(SB), 8, $16
-
-TEXT ·_int64_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA4<>(SB), BP
-
- QUAD $0xffffffffffffb848; WORD $0x7fff // mov rax, 9223372036854775807
- WORD $0xf685 // test esi, esi
- JLE LBB6_1
- WORD $0x8941; BYTE $0xf0 // mov r8d, esi
- WORD $0xfe83; BYTE $0x0f // cmp esi, 15
- JA LBB6_4
- LONG $0x01508d4c // lea r10, [rax + 1]
- WORD $0x3145; BYTE $0xc9 // xor r9d, r9d
- JMP LBB6_7
-
-LBB6_1:
- LONG $0x01708d48 // lea rsi, [rax + 1]
- JMP LBB6_8
-
-LBB6_4:
- WORD $0x8945; BYTE $0xc1 // mov r9d, r8d
- LONG $0x597de2c4; WORD $0x0065 // vpbroadcastq ymm4, qword 0[rbp] /* [rip + .LCPI6_0] */
- LONG $0xf0e18341 // and r9d, -16
- LONG $0x597de2c4; WORD $0x0845 // vpbroadcastq ymm0, qword 8[rbp] /* [rip + .LCPI6_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd86ffdc5 // vmovdqa ymm3, ymm0
- LONG $0xd06ffdc5 // vmovdqa ymm2, ymm0
- LONG $0xc86ffdc5 // vmovdqa ymm1, ymm0
- LONG $0xfc6ffdc5 // vmovdqa ymm7, ymm4
- LONG $0xf46ffdc5 // vmovdqa ymm6, ymm4
- LONG $0xec6ffdc5 // vmovdqa ymm5, ymm4
-
-LBB6_5:
- LONG $0x046f7ec5; BYTE $0xc7 // vmovdqu ymm8, yword [rdi + 8*rax]
- LONG $0x373d62c4; BYTE $0xc8 // vpcmpgtq ymm9, ymm8, ymm0
- LONG $0x4b3de3c4; WORD $0x90c0 // vblendvpd ymm0, ymm8, ymm0, ymm9
- LONG $0x4c6f7ec5; WORD $0x20c7 // vmovdqu ymm9, yword [rdi + 8*rax + 32]
- LONG $0x373562c4; BYTE $0xd3 // vpcmpgtq ymm10, ymm9, ymm3
- LONG $0x4b35e3c4; WORD $0xa0db // vblendvpd ymm3, ymm9, ymm3, ymm10
- LONG $0x546f7ec5; WORD $0x40c7 // vmovdqu ymm10, yword [rdi + 8*rax + 64]
- LONG $0x372d62c4; BYTE $0xda // vpcmpgtq ymm11, ymm10, ymm2
- LONG $0x4b2de3c4; WORD $0xb0d2 // vblendvpd ymm2, ymm10, ymm2, ymm11
- LONG $0x5c6f7ec5; WORD $0x60c7 // vmovdqu ymm11, yword [rdi + 8*rax + 96]
- LONG $0x372562c4; BYTE $0xe1 // vpcmpgtq ymm12, ymm11, ymm1
- LONG $0x4b25e3c4; WORD $0xc0c9 // vblendvpd ymm1, ymm11, ymm1, ymm12
- LONG $0x375d42c4; BYTE $0xe0 // vpcmpgtq ymm12, ymm4, ymm8
- LONG $0x4b3de3c4; WORD $0xc0e4 // vblendvpd ymm4, ymm8, ymm4, ymm12
- LONG $0x374542c4; BYTE $0xc1 // vpcmpgtq ymm8, ymm7, ymm9
- LONG $0x4b35e3c4; WORD $0x80ff // vblendvpd ymm7, ymm9, ymm7, ymm8
- LONG $0x374d42c4; BYTE $0xc2 // vpcmpgtq ymm8, ymm6, ymm10
- LONG $0x4b2de3c4; WORD $0x80f6 // vblendvpd ymm6, ymm10, ymm6, ymm8
- LONG $0x375542c4; BYTE $0xc3 // vpcmpgtq ymm8, ymm5, ymm11
- LONG $0x4b25e3c4; WORD $0x80ed // vblendvpd ymm5, ymm11, ymm5, ymm8
- LONG $0x10c08348 // add rax, 16
- WORD $0x3949; BYTE $0xc1 // cmp r9, rax
- JNE LBB6_5
- LONG $0x375d62c4; BYTE $0xc7 // vpcmpgtq ymm8, ymm4, ymm7
- LONG $0x4b45e3c4; WORD $0x80e4 // vblendvpd ymm4, ymm7, ymm4, ymm8
- LONG $0x375de2c4; BYTE $0xfe // vpcmpgtq ymm7, ymm4, ymm6
- LONG $0x4b4de3c4; WORD $0x70e4 // vblendvpd ymm4, ymm6, ymm4, ymm7
- LONG $0x375de2c4; BYTE $0xf5 // vpcmpgtq ymm6, ymm4, ymm5
- LONG $0x4b55e3c4; WORD $0x60e4 // vblendvpd ymm4, ymm5, ymm4, ymm6
- LONG $0x197de3c4; WORD $0x01e5 // vextractf128 xmm5, ymm4, 1
- LONG $0x3759e2c4; BYTE $0xf5 // vpcmpgtq xmm6, xmm4, xmm5
- LONG $0x4b51e3c4; WORD $0x60e4 // vblendvpd xmm4, xmm5, xmm4, xmm6
- LONG $0x0479e3c4; WORD $0x4eec // vpermilps xmm5, xmm4, 78
- LONG $0x3759e2c4; BYTE $0xf5 // vpcmpgtq xmm6, xmm4, xmm5
- LONG $0x4b51e3c4; WORD $0x60e4 // vblendvpd xmm4, xmm5, xmm4, xmm6
- LONG $0x7ef9c1c4; BYTE $0xe2 // vmovq r10, xmm4
- LONG $0x3765e2c4; BYTE $0xe0 // vpcmpgtq ymm4, ymm3, ymm0
- LONG $0x4b65e3c4; WORD $0x40c0 // vblendvpd ymm0, ymm3, ymm0, ymm4
- LONG $0x376de2c4; BYTE $0xd8 // vpcmpgtq ymm3, ymm2, ymm0
- LONG $0x4b6de3c4; WORD $0x30c0 // vblendvpd ymm0, ymm2, ymm0, ymm3
- LONG $0x3775e2c4; BYTE $0xd0 // vpcmpgtq ymm2, ymm1, ymm0
- LONG $0x4b75e3c4; WORD $0x20c0 // vblendvpd ymm0, ymm1, ymm0, ymm2
- LONG $0x197de3c4; WORD $0x01c1 // vextractf128 xmm1, ymm0, 1
- LONG $0x3771e2c4; BYTE $0xd0 // vpcmpgtq xmm2, xmm1, xmm0
- LONG $0x4b71e3c4; WORD $0x20c0 // vblendvpd xmm0, xmm1, xmm0, xmm2
- LONG $0x0479e3c4; WORD $0x4ec8 // vpermilps xmm1, xmm0, 78
- LONG $0x3771e2c4; BYTE $0xd0 // vpcmpgtq xmm2, xmm1, xmm0
- LONG $0x4b71e3c4; WORD $0x20c0 // vblendvpd xmm0, xmm1, xmm0, xmm2
- LONG $0x7ef9e1c4; BYTE $0xc0 // vmovq rax, xmm0
- WORD $0x894c; BYTE $0xd6 // mov rsi, r10
- WORD $0x394d; BYTE $0xc1 // cmp r9, r8
- JE LBB6_8
-
-LBB6_7:
- LONG $0xcf348b4a // mov rsi, qword [rdi + 8*r9]
- WORD $0x3948; BYTE $0xf0 // cmp rax, rsi
- LONG $0xc64f0f48 // cmovg rax, rsi
- WORD $0x3949; BYTE $0xf2 // cmp r10, rsi
- LONG $0xf24d0f49 // cmovge rsi, r10
- LONG $0x01c18349 // add r9, 1
- WORD $0x8949; BYTE $0xf2 // mov r10, rsi
- WORD $0x394d; BYTE $0xc8 // cmp r8, r9
- JNE LBB6_7
-
-LBB6_8:
- WORD $0x8948; BYTE $0x31 // mov qword [rcx], rsi
- WORD $0x8948; BYTE $0x02 // mov qword [rdx], rax
- VZEROUPPER
- RET
-
-DATA LCDATA5<>+0x000(SB)/8, $0x8000000000000000
-GLOBL LCDATA5<>(SB), 8, $8
-
-TEXT ·_uint64_max_min_avx2(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA5<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB7_1
- WORD $0x8941; BYTE $0xf0 // mov r8d, esi
- WORD $0xfe83; BYTE $0x0f // cmp esi, 15
- JA LBB7_4
- LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // mov rax, -1
- WORD $0x3145; BYTE $0xc9 // xor r9d, r9d
- WORD $0x3145; BYTE $0xd2 // xor r10d, r10d
- JMP LBB7_7
-
-LBB7_1:
- LONG $0xffc0c748; WORD $0xffff; BYTE $0xff // mov rax, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB7_8
-
-LBB7_4:
- WORD $0x8945; BYTE $0xc1 // mov r9d, r8d
- LONG $0xf0e18341 // and r9d, -16
- LONG $0xedefd1c5 // vpxor xmm5, xmm5, xmm5
- LONG $0xc976f5c5 // vpcmpeqd ymm1, ymm1, ymm1
- WORD $0xc031 // xor eax, eax
- LONG $0x597de2c4; WORD $0x0045 // vpbroadcastq ymm0, qword 0[rbp] /* [rip + .LCPI7_0] */
- LONG $0xe476ddc5 // vpcmpeqd ymm4, ymm4, ymm4
- LONG $0xdb76e5c5 // vpcmpeqd ymm3, ymm3, ymm3
- LONG $0xd276edc5 // vpcmpeqd ymm2, ymm2, ymm2
- LONG $0xef3941c4; BYTE $0xc0 // vpxor xmm8, xmm8, xmm8
- LONG $0xffefc1c5 // vpxor xmm7, xmm7, xmm7
- LONG $0xf6efc9c5 // vpxor xmm6, xmm6, xmm6
-
-LBB7_5:
- LONG $0x0c6f7ec5; BYTE $0xc7 // vmovdqu ymm9, yword [rdi + 8*rax]
- LONG $0xd0ef75c5 // vpxor ymm10, ymm1, ymm0
- LONG $0xd8ef35c5 // vpxor ymm11, ymm9, ymm0
- LONG $0x372542c4; BYTE $0xd2 // vpcmpgtq ymm10, ymm11, ymm10
- LONG $0x4b35e3c4; WORD $0xa0c9 // vblendvpd ymm1, ymm9, ymm1, ymm10
- LONG $0xd0ef55c5 // vpxor ymm10, ymm5, ymm0
- LONG $0x372d42c4; BYTE $0xd3 // vpcmpgtq ymm10, ymm10, ymm11
- LONG $0x4b35e3c4; WORD $0xa0ed // vblendvpd ymm5, ymm9, ymm5, ymm10
- LONG $0x4c6f7ec5; WORD $0x20c7 // vmovdqu ymm9, yword [rdi + 8*rax + 32]
- LONG $0xd0ef5dc5 // vpxor ymm10, ymm4, ymm0
- LONG $0xd8ef35c5 // vpxor ymm11, ymm9, ymm0
- LONG $0x372542c4; BYTE $0xd2 // vpcmpgtq ymm10, ymm11, ymm10
- LONG $0x4b35e3c4; WORD $0xa0e4 // vblendvpd ymm4, ymm9, ymm4, ymm10
- LONG $0xd0ef3dc5 // vpxor ymm10, ymm8, ymm0
- LONG $0x372d42c4; BYTE $0xd3 // vpcmpgtq ymm10, ymm10, ymm11
- LONG $0x5c6f7ec5; WORD $0x40c7 // vmovdqu ymm11, yword [rdi + 8*rax + 64]
- LONG $0x4b3543c4; WORD $0xa0c0 // vblendvpd ymm8, ymm9, ymm8, ymm10
- LONG $0xc8ef65c5 // vpxor ymm9, ymm3, ymm0
- LONG $0xd0ef25c5 // vpxor ymm10, ymm11, ymm0
- LONG $0x372d42c4; BYTE $0xc9 // vpcmpgtq ymm9, ymm10, ymm9
- LONG $0x4b25e3c4; WORD $0x90db // vblendvpd ymm3, ymm11, ymm3, ymm9
- LONG $0xc8ef45c5 // vpxor ymm9, ymm7, ymm0
- LONG $0x373542c4; BYTE $0xca // vpcmpgtq ymm9, ymm9, ymm10
- LONG $0x4b25e3c4; WORD $0x90ff // vblendvpd ymm7, ymm11, ymm7, ymm9
- LONG $0x4c6f7ec5; WORD $0x60c7 // vmovdqu ymm9, yword [rdi + 8*rax + 96]
- LONG $0xd0ef6dc5 // vpxor ymm10, ymm2, ymm0
- LONG $0xd8ef35c5 // vpxor ymm11, ymm9, ymm0
- LONG $0x372542c4; BYTE $0xd2 // vpcmpgtq ymm10, ymm11, ymm10
- LONG $0x4b35e3c4; WORD $0xa0d2 // vblendvpd ymm2, ymm9, ymm2, ymm10
- LONG $0xd0ef4dc5 // vpxor ymm10, ymm6, ymm0
- LONG $0x372d42c4; BYTE $0xd3 // vpcmpgtq ymm10, ymm10, ymm11
- LONG $0x4b35e3c4; WORD $0xa0f6 // vblendvpd ymm6, ymm9, ymm6, ymm10
- LONG $0x10c08348 // add rax, 16
- WORD $0x3949; BYTE $0xc1 // cmp r9, rax
- JNE LBB7_5
- LONG $0xc8ef3dc5 // vpxor ymm9, ymm8, ymm0
- LONG $0xd0ef55c5 // vpxor ymm10, ymm5, ymm0
- LONG $0x372d42c4; BYTE $0xc9 // vpcmpgtq ymm9, ymm10, ymm9
- LONG $0x4b3de3c4; WORD $0x90ed // vblendvpd ymm5, ymm8, ymm5, ymm9
- LONG $0xc05755c5 // vxorpd ymm8, ymm5, ymm0
- LONG $0xc8ef45c5 // vpxor ymm9, ymm7, ymm0
- LONG $0x373d42c4; BYTE $0xc1 // vpcmpgtq ymm8, ymm8, ymm9
- LONG $0x4b45e3c4; WORD $0x80ed // vblendvpd ymm5, ymm7, ymm5, ymm8
- LONG $0xf857d5c5 // vxorpd ymm7, ymm5, ymm0
- LONG $0xc0ef4dc5 // vpxor ymm8, ymm6, ymm0
- LONG $0x3745c2c4; BYTE $0xf8 // vpcmpgtq ymm7, ymm7, ymm8
- LONG $0x4b4de3c4; WORD $0x70ed // vblendvpd ymm5, ymm6, ymm5, ymm7
- LONG $0x197de3c4; WORD $0x01ee // vextractf128 xmm6, ymm5, 1
- LONG $0xc05749c5 // vxorpd xmm8, xmm6, xmm0
- LONG $0xf857d1c5 // vxorpd xmm7, xmm5, xmm0
- LONG $0x3741c2c4; BYTE $0xf8 // vpcmpgtq xmm7, xmm7, xmm8
- LONG $0x4b49e3c4; WORD $0x70ed // vblendvpd xmm5, xmm6, xmm5, xmm7
- LONG $0x0479e3c4; WORD $0x4ef5 // vpermilps xmm6, xmm5, 78
- LONG $0xc05751c5 // vxorpd xmm8, xmm5, xmm0
- LONG $0xf857c9c5 // vxorpd xmm7, xmm6, xmm0
- LONG $0x3739e2c4; BYTE $0xff // vpcmpgtq xmm7, xmm8, xmm7
- LONG $0x4b49e3c4; WORD $0x70ed // vblendvpd xmm5, xmm6, xmm5, xmm7
- LONG $0xf0eff5c5 // vpxor ymm6, ymm1, ymm0
- LONG $0xf8efddc5 // vpxor ymm7, ymm4, ymm0
- LONG $0x3745e2c4; BYTE $0xf6 // vpcmpgtq ymm6, ymm7, ymm6
- LONG $0x4b5de3c4; WORD $0x60c9 // vblendvpd ymm1, ymm4, ymm1, ymm6
- LONG $0xe057f5c5 // vxorpd ymm4, ymm1, ymm0
- LONG $0xf0efe5c5 // vpxor ymm6, ymm3, ymm0
- LONG $0x374de2c4; BYTE $0xe4 // vpcmpgtq ymm4, ymm6, ymm4
- LONG $0x4b65e3c4; WORD $0x40c9 // vblendvpd ymm1, ymm3, ymm1, ymm4
- LONG $0x7ef9c1c4; BYTE $0xea // vmovq r10, xmm5
- LONG $0xd857f5c5 // vxorpd ymm3, ymm1, ymm0
- LONG $0xe0efedc5 // vpxor ymm4, ymm2, ymm0
- LONG $0x375de2c4; BYTE $0xdb // vpcmpgtq ymm3, ymm4, ymm3
- LONG $0x4b6de3c4; WORD $0x30c9 // vblendvpd ymm1, ymm2, ymm1, ymm3
- LONG $0x197de3c4; WORD $0x01ca // vextractf128 xmm2, ymm1, 1
- LONG $0xd857f1c5 // vxorpd xmm3, xmm1, xmm0
- LONG $0xe057e9c5 // vxorpd xmm4, xmm2, xmm0
- LONG $0x3759e2c4; BYTE $0xdb // vpcmpgtq xmm3, xmm4, xmm3
- LONG $0x4b69e3c4; WORD $0x30c9 // vblendvpd xmm1, xmm2, xmm1, xmm3
- LONG $0x0479e3c4; WORD $0x4ed1 // vpermilps xmm2, xmm1, 78
- LONG $0xd857f1c5 // vxorpd xmm3, xmm1, xmm0
- LONG $0xc057e9c5 // vxorpd xmm0, xmm2, xmm0
- LONG $0x3779e2c4; BYTE $0xc3 // vpcmpgtq xmm0, xmm0, xmm3
- LONG $0x4b69e3c4; WORD $0x00c1 // vblendvpd xmm0, xmm2, xmm1, xmm0
- LONG $0x7ef9e1c4; BYTE $0xc0 // vmovq rax, xmm0
- WORD $0x894c; BYTE $0xd6 // mov rsi, r10
- WORD $0x394d; BYTE $0xc1 // cmp r9, r8
- JE LBB7_8
-
-LBB7_7:
- LONG $0xcf348b4a // mov rsi, qword [rdi + 8*r9]
- WORD $0x3948; BYTE $0xf0 // cmp rax, rsi
- LONG $0xc6430f48 // cmovae rax, rsi
- WORD $0x3949; BYTE $0xf2 // cmp r10, rsi
- LONG $0xf2470f49 // cmova rsi, r10
- LONG $0x01c18349 // add r9, 1
- WORD $0x8949; BYTE $0xf2 // mov r10, rsi
- WORD $0x394d; BYTE $0xc8 // cmp r8, r9
- JNE LBB7_7
-
-LBB7_8:
- WORD $0x8948; BYTE $0x31 // mov qword [rcx], rsi
- WORD $0x8948; BYTE $0x02 // mov qword [rdx], rax
- VZEROUPPER
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.go
deleted file mode 100644
index f9d3c44e3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import "unsafe"
-
-// This file contains convenience functions for utilizing Arm64 Neon intrinsics to quickly
-// and efficiently get the min and max from an integral slice.
-
-//go:noescape
-func _int32_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int32MaxMinNEON(values []int32) (min, max int32) {
- _int32_max_min_neon(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint32_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint32MaxMinNEON(values []uint32) (min, max uint32) {
- _uint32_max_min_neon(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int64_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int64MaxMinNEON(values []int64) (min, max int64) {
- _int64_max_min_neon(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint64_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint64MaxMinNEON(values []uint64) (min, max uint64) {
- _uint64_max_min_neon(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.s b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.s
deleted file mode 100644
index b679bb6e3..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_neon_arm64.s
+++ /dev/null
@@ -1,324 +0,0 @@
-//+build !noasm !appengine
-
-// ARROW-15336
-// (C2GOASM doesn't work correctly for Arm64)
-// Partly GENERATED BY asm2plan9s.
-
-
-// func _int32_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-TEXT ·_int32_max_min_neon(SB), $0-32
-
- MOVD values+0(FP), R0
- MOVD length+8(FP), R1
- MOVD minout+16(FP), R2
- MOVD maxout+24(FP), R3
-
- WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
- WORD $0x7100043f // cmp w1, #1
- WORD $0x910003fd // mov x29, sp
- BLT LBB0_3
-
- WORD $0x71000c3f // cmp w1, #3
- WORD $0x2a0103e8 // mov w8, w1
- BHI LBB0_4
-
- WORD $0xaa1f03e9 // mov x9, xzr
- WORD $0x52b0000b // mov w11, #-2147483648
- WORD $0x12b0000a // mov w10, #2147483647
- JMP LBB0_7
-LBB0_3:
- WORD $0x12b0000a // mov w10, #2147483647
- WORD $0x52b0000b // mov w11, #-2147483648
- WORD $0xb900006b // str w11, [x3]
- WORD $0xb900004a // str w10, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-LBB0_4:
- WORD $0x927e7509 // and x9, x8, #0xfffffffc
- WORD $0x9100200a // add x10, x0, #8
- WORD $0x0f046402 // movi v2.2s, #128, lsl #24
- WORD $0x2f046400 // mvni v0.2s, #128, lsl #24
- WORD $0x2f046401 // mvni v1.2s, #128, lsl #24
- WORD $0xaa0903eb // mov x11, x9
- WORD $0x0f046403 // movi v3.2s, #128, lsl #24
-LBB0_5:
- WORD $0x6d7f9544 // ldp d4, d5, [x10, #-8]
- WORD $0xf100116b // subs x11, x11, #4
- WORD $0x9100414a // add x10, x10, #16
- WORD $0x0ea46c00 // smin v0.2s, v0.2s, v4.2s
- WORD $0x0ea56c21 // smin v1.2s, v1.2s, v5.2s
- WORD $0x0ea46442 // smax v2.2s, v2.2s, v4.2s
- WORD $0x0ea56463 // smax v3.2s, v3.2s, v5.2s
- BNE LBB0_5
-
- WORD $0x0ea36442 // smax v2.2s, v2.2s, v3.2s
- WORD $0x0ea16c00 // smin v0.2s, v0.2s, v1.2s
- WORD $0x0e0c0441 // dup v1.2s, v2.s[1]
- WORD $0x0e0c0403 // dup v3.2s, v0.s[1]
- WORD $0x0ea16441 // smax v1.2s, v2.2s, v1.2s
- WORD $0x0ea36c00 // smin v0.2s, v0.2s, v3.2s
- WORD $0xeb08013f // cmp x9, x8
- WORD $0x1e26002b // fmov w11, s1
- WORD $0x1e26000a // fmov w10, s0
- BEQ LBB0_9
-LBB0_7:
- WORD $0x8b09080c // add x12, x0, x9, lsl #2
- WORD $0xcb090108 // sub x8, x8, x9
-LBB0_8:
- WORD $0xb8404589 // ldr w9, [x12], #4
- WORD $0x6b09015f // cmp w10, w9
- WORD $0x1a89b14a // csel w10, w10, w9, lt
- WORD $0x6b09017f // cmp w11, w9
- WORD $0x1a89c16b // csel w11, w11, w9, gt
- WORD $0xf1000508 // subs x8, x8, #1
- BNE LBB0_8
-LBB0_9:
- WORD $0xb900006b // str w11, [x3]
- WORD $0xb900004a // str w10, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-
-// func _uint32_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-TEXT ·_uint32_max_min_neon(SB), $0-32
-
- MOVD values+0(FP), R0
- MOVD length+8(FP), R1
- MOVD minout+16(FP), R2
- MOVD maxout+24(FP), R3
-
- WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
- WORD $0x7100043f // cmp w1, #1
- WORD $0x910003fd // mov x29, sp
- BLT LBB1_3
-
- WORD $0x71000c3f // cmp w1, #3
- WORD $0x2a0103e8 // mov w8, w1
- BHI LBB1_4
-
- WORD $0xaa1f03e9 // mov x9, xzr
- WORD $0x2a1f03ea // mov w10, wzr
- WORD $0x1280000b // mov w11, #-1
- JMP LBB1_7
-LBB1_3:
- WORD $0x2a1f03ea // mov w10, wzr
- WORD $0x1280000b // mov w11, #-1
- WORD $0xb900006a // str w10, [x3]
- WORD $0xb900004b // str w11, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-LBB1_4:
- WORD $0x927e7509 // and x9, x8, #0xfffffffc
- WORD $0x6f00e401 // movi v1.2d, #0000000000000000
- WORD $0x6f07e7e0 // movi v0.2d, #0xffffffffffffffff
- WORD $0x9100200a // add x10, x0, #8
- WORD $0x6f07e7e2 // movi v2.2d, #0xffffffffffffffff
- WORD $0xaa0903eb // mov x11, x9
- WORD $0x6f00e403 // movi v3.2d, #0000000000000000
-LBB1_5:
- WORD $0x6d7f9544 // ldp d4, d5, [x10, #-8]
- WORD $0xf100116b // subs x11, x11, #4
- WORD $0x9100414a // add x10, x10, #16
- WORD $0x2ea46c00 // umin v0.2s, v0.2s, v4.2s
- WORD $0x2ea56c42 // umin v2.2s, v2.2s, v5.2s
- WORD $0x2ea46421 // umax v1.2s, v1.2s, v4.2s
- WORD $0x2ea56463 // umax v3.2s, v3.2s, v5.2s
- BNE LBB1_5
-
- WORD $0x2ea36421 // umax v1.2s, v1.2s, v3.2s
- WORD $0x2ea26c00 // umin v0.2s, v0.2s, v2.2s
- WORD $0x0e0c0422 // dup v2.2s, v1.s[1]
- WORD $0x0e0c0403 // dup v3.2s, v0.s[1]
- WORD $0x2ea26421 // umax v1.2s, v1.2s, v2.2s
- WORD $0x2ea36c00 // umin v0.2s, v0.2s, v3.2s
- WORD $0xeb08013f // cmp x9, x8
- WORD $0x1e26002a // fmov w10, s1
- WORD $0x1e26000b // fmov w11, s0
- BEQ LBB1_9
-LBB1_7:
- WORD $0x8b09080c // add x12, x0, x9, lsl #2
- WORD $0xcb090108 // sub x8, x8, x9
-LBB1_8:
- WORD $0xb8404589 // ldr w9, [x12], #4
- WORD $0x6b09017f // cmp w11, w9
- WORD $0x1a89316b // csel w11, w11, w9, lo
- WORD $0x6b09015f // cmp w10, w9
- WORD $0x1a89814a // csel w10, w10, w9, hi
- WORD $0xf1000508 // subs x8, x8, #1
- BNE LBB1_8
-LBB1_9:
- WORD $0xb900006a // str w10, [x3]
- WORD $0xb900004b // str w11, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-
-// func _int64_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-TEXT ·_int64_max_min_neon(SB), $0-32
-
- MOVD values+0(FP), R0
- MOVD length+8(FP), R1
- MOVD minout+16(FP), R2
- MOVD maxout+24(FP), R3
-
- WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
- WORD $0x7100043f // cmp w1, #1
- WORD $0x910003fd // mov x29, sp
- BLT LBB2_3
-
- WORD $0x2a0103e8 // mov w8, w1
- WORD $0xd2f0000b // mov x11, #-9223372036854775808
- WORD $0x71000c3f // cmp w1, #3
- WORD $0x92f0000a // mov x10, #9223372036854775807
- BHI LBB2_4
-
- WORD $0xaa1f03e9 // mov x9, xzr
- JMP LBB2_7
-LBB2_3:
- WORD $0x92f0000a // mov x10, #9223372036854775807
- WORD $0xd2f0000b // mov x11, #-9223372036854775808
- WORD $0xf900006b // str x11, [x3]
- WORD $0xf900004a // str x10, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-LBB2_4:
- WORD $0x927e7509 // and x9, x8, #0xfffffffc
- WORD $0x4e080d61 // dup v1.2d, x11
- WORD $0x4e080d40 // dup v0.2d, x10
- WORD $0x9100400a // add x10, x0, #16
- WORD $0xaa0903eb // mov x11, x9
- WORD $0x4ea01c02 // mov v2.16b, v0.16b
- WORD $0x4ea11c23 // mov v3.16b, v1.16b
-LBB2_5:
- WORD $0xad7f9544 // ldp q4, q5, [x10, #-16]
- WORD $0x4ea31c66 // mov v6.16b, v3.16b
- WORD $0x4ea11c27 // mov v7.16b, v1.16b
- WORD $0x4ea21c43 // mov v3.16b, v2.16b
- WORD $0x4ea01c01 // mov v1.16b, v0.16b
- WORD $0x4ee03480 // cmgt v0.2d, v4.2d, v0.2d
- WORD $0x4ee234a2 // cmgt v2.2d, v5.2d, v2.2d
- WORD $0x6e641c20 // bsl v0.16b, v1.16b, v4.16b
- WORD $0x4ee434e1 // cmgt v1.2d, v7.2d, v4.2d
- WORD $0x6e651c62 // bsl v2.16b, v3.16b, v5.16b
- WORD $0x4ee534c3 // cmgt v3.2d, v6.2d, v5.2d
- WORD $0xf100116b // subs x11, x11, #4
- WORD $0x6e641ce1 // bsl v1.16b, v7.16b, v4.16b
- WORD $0x6e651cc3 // bsl v3.16b, v6.16b, v5.16b
- WORD $0x9100814a // add x10, x10, #32
- BNE LBB2_5
-
- WORD $0x4ee33424 // cmgt v4.2d, v1.2d, v3.2d
- WORD $0x4ee03445 // cmgt v5.2d, v2.2d, v0.2d
- WORD $0x6e631c24 // bsl v4.16b, v1.16b, v3.16b
- WORD $0x6e621c05 // bsl v5.16b, v0.16b, v2.16b
- WORD $0x4e180480 // dup v0.2d, v4.d[1]
- WORD $0x4e1804a1 // dup v1.2d, v5.d[1]
- WORD $0x4ee03482 // cmgt v2.2d, v4.2d, v0.2d
- WORD $0x4ee53423 // cmgt v3.2d, v1.2d, v5.2d
- WORD $0x6e601c82 // bsl v2.16b, v4.16b, v0.16b
- WORD $0x6e611ca3 // bsl v3.16b, v5.16b, v1.16b
- WORD $0xeb08013f // cmp x9, x8
- WORD $0x9e66004b // fmov x11, d2
- WORD $0x9e66006a // fmov x10, d3
- BEQ LBB2_9
-LBB2_7:
- WORD $0x8b090c0c // add x12, x0, x9, lsl #3
- WORD $0xcb090108 // sub x8, x8, x9
-LBB2_8:
- WORD $0xf8408589 // ldr x9, [x12], #8
- WORD $0xeb09015f // cmp x10, x9
- WORD $0x9a89b14a // csel x10, x10, x9, lt
- WORD $0xeb09017f // cmp x11, x9
- WORD $0x9a89c16b // csel x11, x11, x9, gt
- WORD $0xf1000508 // subs x8, x8, #1
- BNE LBB2_8
-LBB2_9:
- WORD $0xf900006b // str x11, [x3]
- WORD $0xf900004a // str x10, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-
-
-// func _uint64_max_min_neon(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-TEXT ·_uint64_max_min_neon(SB), $0-32
-
- MOVD values+0(FP), R0
- MOVD length+8(FP), R1
- MOVD minout+16(FP), R2
- MOVD maxout+24(FP), R3
-
- WORD $0xa9bf7bfd // stp x29, x30, [sp, #-16]!
- WORD $0x7100043f // cmp w1, #1
- WORD $0x910003fd // mov x29, sp
- BLT LBB3_3
-
- WORD $0x71000c3f // cmp w1, #3
- WORD $0x2a0103e8 // mov w8, w1
- BHI LBB3_4
-
- WORD $0xaa1f03e9 // mov x9, xzr
- WORD $0xaa1f03ea // mov x10, xzr
- WORD $0x9280000b // mov x11, #-1
- JMP LBB3_7
-LBB3_3:
- WORD $0xaa1f03ea // mov x10, xzr
- WORD $0x9280000b // mov x11, #-1
- WORD $0xf900006a // str x10, [x3]
- WORD $0xf900004b // str x11, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-LBB3_4:
- WORD $0x927e7509 // and x9, x8, #0xfffffffc
- WORD $0x9100400a // add x10, x0, #16
- WORD $0x6f00e401 // movi v1.2d, #0000000000000000
- WORD $0x6f07e7e0 // movi v0.2d, #0xffffffffffffffff
- WORD $0x6f07e7e2 // movi v2.2d, #0xffffffffffffffff
- WORD $0xaa0903eb // mov x11, x9
- WORD $0x6f00e403 // movi v3.2d, #0000000000000000
-LBB3_5:
- WORD $0xad7f9544 // ldp q4, q5, [x10, #-16]
- WORD $0x4ea31c66 // mov v6.16b, v3.16b
- WORD $0x4ea11c27 // mov v7.16b, v1.16b
- WORD $0x4ea21c43 // mov v3.16b, v2.16b
- WORD $0x4ea01c01 // mov v1.16b, v0.16b
- WORD $0x6ee03480 // cmhi v0.2d, v4.2d, v0.2d
- WORD $0x6ee234a2 // cmhi v2.2d, v5.2d, v2.2d
- WORD $0x6e641c20 // bsl v0.16b, v1.16b, v4.16b
- WORD $0x6ee434e1 // cmhi v1.2d, v7.2d, v4.2d
- WORD $0x6e651c62 // bsl v2.16b, v3.16b, v5.16b
- WORD $0x6ee534c3 // cmhi v3.2d, v6.2d, v5.2d
- WORD $0xf100116b // subs x11, x11, #4
- WORD $0x6e641ce1 // bsl v1.16b, v7.16b, v4.16b
- WORD $0x6e651cc3 // bsl v3.16b, v6.16b, v5.16b
- WORD $0x9100814a // add x10, x10, #32
- BNE LBB3_5
-
- WORD $0x6ee33424 // cmhi v4.2d, v1.2d, v3.2d
- WORD $0x6ee03445 // cmhi v5.2d, v2.2d, v0.2d
- WORD $0x6e631c24 // bsl v4.16b, v1.16b, v3.16b
- WORD $0x6e621c05 // bsl v5.16b, v0.16b, v2.16b
- WORD $0x4e180480 // dup v0.2d, v4.d[1]
- WORD $0x4e1804a1 // dup v1.2d, v5.d[1]
- WORD $0x6ee03482 // cmhi v2.2d, v4.2d, v0.2d
- WORD $0x6ee53423 // cmhi v3.2d, v1.2d, v5.2d
- WORD $0x6e601c82 // bsl v2.16b, v4.16b, v0.16b
- WORD $0x6e611ca3 // bsl v3.16b, v5.16b, v1.16b
- WORD $0xeb08013f // cmp x9, x8
- WORD $0x9e66004a // fmov x10, d2
- WORD $0x9e66006b // fmov x11, d3
- BEQ LBB3_9
-LBB3_7:
- WORD $0x8b090c0c // add x12, x0, x9, lsl #3
- WORD $0xcb090108 // sub x8, x8, x9
-LBB3_8:
- WORD $0xf8408589 // ldr x9, [x12], #8
- WORD $0xeb09017f // cmp x11, x9
- WORD $0x9a89316b // csel x11, x11, x9, lo
- WORD $0xeb09015f // cmp x10, x9
- WORD $0x9a89814a // csel x10, x10, x9, hi
- WORD $0xf1000508 // subs x8, x8, #1
- BNE LBB3_8
-LBB3_9:
- WORD $0xf900006a // str x10, [x3]
- WORD $0xf900004b // str x11, [x2]
- WORD $0xa8c17bfd // ldp x29, x30, [sp], #16
- RET
-
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_noasm.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_noasm.go
deleted file mode 100644
index 19c24b590..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_noasm.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-func init() {
- minmaxFuncs.i8 = int8MinMax
- minmaxFuncs.ui8 = uint8MinMax
- minmaxFuncs.i16 = int16MinMax
- minmaxFuncs.ui16 = uint16MinMax
- minmaxFuncs.i32 = int32MinMax
- minmaxFuncs.ui32 = uint32MinMax
- minmaxFuncs.i64 = int64MinMax
- minmaxFuncs.ui64 = uint64MinMax
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_ppc64le.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_ppc64le.go
deleted file mode 100644
index ffd2db006..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_ppc64le.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-func init() {
- minmaxFuncs.i8 = int8MinMax
- minmaxFuncs.ui8 = uint8MinMax
- minmaxFuncs.i16 = int16MinMax
- minmaxFuncs.ui16 = uint16MinMax
- minmaxFuncs.i32 = int32MinMax
- minmaxFuncs.ui32 = uint32MinMax
- minmaxFuncs.i64 = int64MinMax
- minmaxFuncs.ui64 = uint64MinMax
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_s390x.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_s390x.go
deleted file mode 100644
index ffd2db006..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_s390x.go
+++ /dev/null
@@ -1,30 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-func init() {
- minmaxFuncs.i8 = int8MinMax
- minmaxFuncs.ui8 = uint8MinMax
- minmaxFuncs.i16 = int16MinMax
- minmaxFuncs.ui16 = uint16MinMax
- minmaxFuncs.i32 = int32MinMax
- minmaxFuncs.ui32 = uint32MinMax
- minmaxFuncs.i64 = int64MinMax
- minmaxFuncs.ui64 = uint64MinMax
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.go
deleted file mode 100644
index 1e12a8d17..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.go
+++ /dev/null
@@ -1,88 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import "unsafe"
-
-// This file contains convenience functions for utilizing SSE4 intrinsics to quickly
-// and efficiently get the min and max from an integral slice.
-
-//go:noescape
-func _int8_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int8MaxMinSSE4(values []int8) (min, max int8) {
- _int8_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint8_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint8MaxMinSSE4(values []uint8) (min, max uint8) {
- _uint8_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int16_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int16MaxMinSSE4(values []int16) (min, max int16) {
- _int16_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint16_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint16MaxMinSSE4(values []uint16) (min, max uint16) {
- _uint16_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int32_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int32MaxMinSSE4(values []int32) (min, max int32) {
- _int32_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint32_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint32MaxMinSSE4(values []uint32) (min, max uint32) {
- _uint32_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _int64_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func int64MaxMinSSE4(values []int64) (min, max int64) {
- _int64_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
-
-//go:noescape
-func _uint64_max_min_sse4(values unsafe.Pointer, length int, minout, maxout unsafe.Pointer)
-
-func uint64MaxMinSSE4(values []uint64) (min, max uint64) {
- _uint64_max_min_sse4(unsafe.Pointer(&values[0]), len(values), unsafe.Pointer(&min), unsafe.Pointer(&max))
- return
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.s b/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.s
deleted file mode 100644
index 8f1eccf60..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/min_max_sse4_amd64.s
+++ /dev/null
@@ -1,1044 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-DATA LCDATA1<>+0x000(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x008(SB)/8, $0x8080808080808080
-DATA LCDATA1<>+0x010(SB)/8, $0x7f7f7f7f7f7f7f7f
-DATA LCDATA1<>+0x018(SB)/8, $0x7f7f7f7f7f7f7f7f
-GLOBL LCDATA1<>(SB), 8, $32
-
-TEXT ·_int8_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA1<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB0_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB0_4
- WORD $0xb041; BYTE $0x80 // mov r8b, -128
- WORD $0xb640; BYTE $0x7f // mov sil, 127
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- JMP LBB0_11
-
-LBB0_1:
- WORD $0xb640; BYTE $0x7f // mov sil, 127
- WORD $0xb041; BYTE $0x80 // mov r8b, -128
- JMP LBB0_12
-
-LBB0_4:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xe0e38341 // and r11d, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x05e8c149 // shr r8, 5
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB0_5
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI0_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI0_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
-
-LBB0_7:
- LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax]
- LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16]
- LONG $0x746f0ff3; WORD $0x2007 // movdqu xmm6, oword [rdi + rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3007 // movdqu xmm7, oword [rdi + rax + 48]
- LONG $0x38380f66; BYTE $0xc4 // pminsb xmm0, xmm4
- LONG $0x38380f66; BYTE $0xd5 // pminsb xmm2, xmm5
- LONG $0x3c380f66; BYTE $0xcc // pmaxsb xmm1, xmm4
- LONG $0x3c380f66; BYTE $0xdd // pmaxsb xmm3, xmm5
- LONG $0x38380f66; BYTE $0xc6 // pminsb xmm0, xmm6
- LONG $0x38380f66; BYTE $0xd7 // pminsb xmm2, xmm7
- LONG $0x3c380f66; BYTE $0xce // pmaxsb xmm1, xmm6
- LONG $0x3c380f66; BYTE $0xdf // pmaxsb xmm3, xmm7
- LONG $0x40c08348 // add rax, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB0_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB0_10
-
-LBB0_9:
- LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax]
- LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16]
- LONG $0x3c380f66; BYTE $0xdd // pmaxsb xmm3, xmm5
- LONG $0x3c380f66; BYTE $0xcc // pmaxsb xmm1, xmm4
- LONG $0x38380f66; BYTE $0xd5 // pminsb xmm2, xmm5
- LONG $0x38380f66; BYTE $0xc4 // pminsb xmm0, xmm4
-
-LBB0_10:
- LONG $0x38380f66; BYTE $0xc2 // pminsb xmm0, xmm2
- LONG $0x3c380f66; BYTE $0xcb // pmaxsb xmm1, xmm3
- LONG $0x4def0f66; BYTE $0x10 // pxor xmm1, oword 16[rbp] /* [rip + .LCPI0_1] */
- LONG $0xd16f0f66 // movdqa xmm2, xmm1
- LONG $0xd2710f66; BYTE $0x08 // psrlw xmm2, 8
- LONG $0xd1da0f66 // pminub xmm2, xmm1
- LONG $0x41380f66; BYTE $0xca // phminposuw xmm1, xmm2
- LONG $0x7e0f4166; BYTE $0xc8 // movd r8d, xmm1
- LONG $0x7ff08041 // xor r8b, 127
- LONG $0x45ef0f66; BYTE $0x00 // pxor xmm0, oword 0[rbp] /* [rip + .LCPI0_0] */
- LONG $0xc86f0f66 // movdqa xmm1, xmm0
- LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8
- LONG $0xc8da0f66 // pminub xmm1, xmm0
- LONG $0x41380f66; BYTE $0xc1 // phminposuw xmm0, xmm1
- LONG $0xc67e0f66 // movd esi, xmm0
- LONG $0x80f68040 // xor sil, -128
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB0_12
-
-LBB0_11:
- LONG $0x04b60f42; BYTE $0x1f // movzx eax, byte [rdi + r11]
- WORD $0x3840; BYTE $0xc6 // cmp sil, al
- LONG $0xf6b60f40 // movzx esi, sil
- WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax
- WORD $0x3841; BYTE $0xc0 // cmp r8b, al
- LONG $0xc0b60f45 // movzx r8d, r8b
- LONG $0xc04c0f44 // cmovl r8d, eax
- LONG $0x01c38349 // add r11, 1
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB0_11
-
-LBB0_12:
- WORD $0x8844; BYTE $0x01 // mov byte [rcx], r8b
- WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil
- RET
-
-LBB0_5:
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI0_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI0_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB0_9
- JMP LBB0_10
-
-TEXT ·_uint8_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB1_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x1f // cmp esi, 31
- JA LBB1_4
- WORD $0xb640; BYTE $0xff // mov sil, -1
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0xc031 // xor eax, eax
- JMP LBB1_11
-
-LBB1_1:
- WORD $0xb640; BYTE $0xff // mov sil, -1
- WORD $0xc031 // xor eax, eax
- JMP LBB1_12
-
-LBB1_4:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xe0e38341 // and r11d, -32
- LONG $0xe0438d49 // lea rax, [r11 - 32]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x05e8c149 // shr r8, 5
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB1_5
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
-
-LBB1_7:
- LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax]
- LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16]
- LONG $0x746f0ff3; WORD $0x2007 // movdqu xmm6, oword [rdi + rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3007 // movdqu xmm7, oword [rdi + rax + 48]
- LONG $0xc4da0f66 // pminub xmm0, xmm4
- LONG $0xd5da0f66 // pminub xmm2, xmm5
- LONG $0xccde0f66 // pmaxub xmm1, xmm4
- LONG $0xddde0f66 // pmaxub xmm3, xmm5
- LONG $0xc6da0f66 // pminub xmm0, xmm6
- LONG $0xd7da0f66 // pminub xmm2, xmm7
- LONG $0xcede0f66 // pmaxub xmm1, xmm6
- LONG $0xdfde0f66 // pmaxub xmm3, xmm7
- LONG $0x40c08348 // add rax, 64
- LONG $0x02c28349 // add r10, 2
- JNE LBB1_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB1_10
-
-LBB1_9:
- LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax]
- LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16]
- LONG $0xddde0f66 // pmaxub xmm3, xmm5
- LONG $0xccde0f66 // pmaxub xmm1, xmm4
- LONG $0xd5da0f66 // pminub xmm2, xmm5
- LONG $0xc4da0f66 // pminub xmm0, xmm4
-
-LBB1_10:
- LONG $0xc2da0f66 // pminub xmm0, xmm2
- LONG $0xcbde0f66 // pmaxub xmm1, xmm3
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xd1ef0f66 // pxor xmm2, xmm1
- LONG $0xca6f0f66 // movdqa xmm1, xmm2
- LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8
- LONG $0xcada0f66 // pminub xmm1, xmm2
- LONG $0x41380f66; BYTE $0xc9 // phminposuw xmm1, xmm1
- LONG $0xc87e0f66 // movd eax, xmm1
- WORD $0xd0f6 // not al
- LONG $0xc86f0f66 // movdqa xmm1, xmm0
- LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8
- LONG $0xc8da0f66 // pminub xmm1, xmm0
- LONG $0x41380f66; BYTE $0xc1 // phminposuw xmm0, xmm1
- LONG $0xc67e0f66 // movd esi, xmm0
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB1_12
-
-LBB1_11:
- LONG $0x04b60f46; BYTE $0x1f // movzx r8d, byte [rdi + r11]
- WORD $0x3844; BYTE $0xc6 // cmp sil, r8b
- LONG $0xf6b60f40 // movzx esi, sil
- LONG $0xf0430f41 // cmovae esi, r8d
- WORD $0x3844; BYTE $0xc0 // cmp al, r8b
- WORD $0xb60f; BYTE $0xc0 // movzx eax, al
- LONG $0xc0460f41 // cmovbe eax, r8d
- LONG $0x01c38349 // add r11, 1
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB1_11
-
-LBB1_12:
- WORD $0x0188 // mov byte [rcx], al
- WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil
- RET
-
-LBB1_5:
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB1_9
- JMP LBB1_10
-
-DATA LCDATA2<>+0x000(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x008(SB)/8, $0x8000800080008000
-DATA LCDATA2<>+0x010(SB)/8, $0x7fff7fff7fff7fff
-DATA LCDATA2<>+0x018(SB)/8, $0x7fff7fff7fff7fff
-GLOBL LCDATA2<>(SB), 8, $32
-
-TEXT ·_int16_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA2<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB2_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x0f // cmp esi, 15
- JA LBB2_4
- LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768
- LONG $0x7fffbe66 // mov si, 32767
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- JMP LBB2_11
-
-LBB2_1:
- LONG $0x7fffbe66 // mov si, 32767
- LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768
- JMP LBB2_12
-
-LBB2_4:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xf0e38341 // and r11d, -16
- LONG $0xf0438d49 // lea rax, [r11 - 16]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x04e8c149 // shr r8, 4
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB2_5
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI2_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI2_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
-
-LBB2_7:
- LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax]
- LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16]
- LONG $0x746f0ff3; WORD $0x2047 // movdqu xmm6, oword [rdi + 2*rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3047 // movdqu xmm7, oword [rdi + 2*rax + 48]
- LONG $0xc4ea0f66 // pminsw xmm0, xmm4
- LONG $0xd5ea0f66 // pminsw xmm2, xmm5
- LONG $0xccee0f66 // pmaxsw xmm1, xmm4
- LONG $0xddee0f66 // pmaxsw xmm3, xmm5
- LONG $0xc6ea0f66 // pminsw xmm0, xmm6
- LONG $0xd7ea0f66 // pminsw xmm2, xmm7
- LONG $0xceee0f66 // pmaxsw xmm1, xmm6
- LONG $0xdfee0f66 // pmaxsw xmm3, xmm7
- LONG $0x20c08348 // add rax, 32
- LONG $0x02c28349 // add r10, 2
- JNE LBB2_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB2_10
-
-LBB2_9:
- LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax]
- LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16]
- LONG $0xddee0f66 // pmaxsw xmm3, xmm5
- LONG $0xccee0f66 // pmaxsw xmm1, xmm4
- LONG $0xd5ea0f66 // pminsw xmm2, xmm5
- LONG $0xc4ea0f66 // pminsw xmm0, xmm4
-
-LBB2_10:
- LONG $0xc2ea0f66 // pminsw xmm0, xmm2
- LONG $0xcbee0f66 // pmaxsw xmm1, xmm3
- LONG $0x4def0f66; BYTE $0x10 // pxor xmm1, oword 16[rbp] /* [rip + .LCPI2_1] */
- LONG $0x41380f66; BYTE $0xc9 // phminposuw xmm1, xmm1
- LONG $0x7e0f4166; BYTE $0xc8 // movd r8d, xmm1
- LONG $0xfff08141; WORD $0x007f; BYTE $0x00 // xor r8d, 32767
- LONG $0x45ef0f66; BYTE $0x00 // pxor xmm0, oword 0[rbp] /* [rip + .LCPI2_0] */
- LONG $0x41380f66; BYTE $0xc0 // phminposuw xmm0, xmm0
- LONG $0xc67e0f66 // movd esi, xmm0
- LONG $0x8000f681; WORD $0x0000 // xor esi, 32768
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB2_12
-
-LBB2_11:
- LONG $0x04b70f42; BYTE $0x5f // movzx eax, word [rdi + 2*r11]
- WORD $0x3966; BYTE $0xc6 // cmp si, ax
- WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax
- LONG $0xc0394166 // cmp r8w, ax
- LONG $0xc04c0f44 // cmovl r8d, eax
- LONG $0x01c38349 // add r11, 1
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB2_11
-
-LBB2_12:
- LONG $0x01894466 // mov word [rcx], r8w
- WORD $0x8966; BYTE $0x32 // mov word [rdx], si
- RET
-
-LBB2_5:
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI2_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI2_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB2_9
- JMP LBB2_10
-
-TEXT ·_uint16_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB3_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x0f // cmp esi, 15
- JA LBB3_4
- LONG $0xffb84166; BYTE $0xff // mov r8w, -1
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0xf631 // xor esi, esi
- JMP LBB3_11
-
-LBB3_1:
- LONG $0xffb84166; BYTE $0xff // mov r8w, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB3_12
-
-LBB3_4:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xf0e38341 // and r11d, -16
- LONG $0xf0438d49 // lea rax, [r11 - 16]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x04e8c149 // shr r8, 4
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB3_5
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
-
-LBB3_7:
- LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax]
- LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16]
- LONG $0x746f0ff3; WORD $0x2047 // movdqu xmm6, oword [rdi + 2*rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3047 // movdqu xmm7, oword [rdi + 2*rax + 48]
- LONG $0x3a380f66; BYTE $0xc4 // pminuw xmm0, xmm4
- LONG $0x3a380f66; BYTE $0xd5 // pminuw xmm2, xmm5
- LONG $0x3e380f66; BYTE $0xcc // pmaxuw xmm1, xmm4
- LONG $0x3e380f66; BYTE $0xdd // pmaxuw xmm3, xmm5
- LONG $0x3a380f66; BYTE $0xc6 // pminuw xmm0, xmm6
- LONG $0x3a380f66; BYTE $0xd7 // pminuw xmm2, xmm7
- LONG $0x3e380f66; BYTE $0xce // pmaxuw xmm1, xmm6
- LONG $0x3e380f66; BYTE $0xdf // pmaxuw xmm3, xmm7
- LONG $0x20c08348 // add rax, 32
- LONG $0x02c28349 // add r10, 2
- JNE LBB3_7
- LONG $0x01c0f641 // test r8b, 1
- JE LBB3_10
-
-LBB3_9:
- LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax]
- LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16]
- LONG $0x3e380f66; BYTE $0xdd // pmaxuw xmm3, xmm5
- LONG $0x3e380f66; BYTE $0xcc // pmaxuw xmm1, xmm4
- LONG $0x3a380f66; BYTE $0xd5 // pminuw xmm2, xmm5
- LONG $0x3a380f66; BYTE $0xc4 // pminuw xmm0, xmm4
-
-LBB3_10:
- LONG $0x3a380f66; BYTE $0xc2 // pminuw xmm0, xmm2
- LONG $0x3e380f66; BYTE $0xcb // pmaxuw xmm1, xmm3
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xd1ef0f66 // pxor xmm2, xmm1
- LONG $0x41380f66; BYTE $0xca // phminposuw xmm1, xmm2
- LONG $0xce7e0f66 // movd esi, xmm1
- WORD $0xd6f7 // not esi
- LONG $0x41380f66; BYTE $0xc0 // phminposuw xmm0, xmm0
- LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB3_12
-
-LBB3_11:
- LONG $0x04b70f42; BYTE $0x5f // movzx eax, word [rdi + 2*r11]
- LONG $0xc0394166 // cmp r8w, ax
- LONG $0xc0430f44 // cmovae r8d, eax
- WORD $0x3966; BYTE $0xc6 // cmp si, ax
- WORD $0x460f; BYTE $0xf0 // cmovbe esi, eax
- LONG $0x01c38349 // add r11, 1
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB3_11
-
-LBB3_12:
- WORD $0x8966; BYTE $0x31 // mov word [rcx], si
- LONG $0x02894466 // mov word [rdx], r8w
- RET
-
-LBB3_5:
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB3_9
- JMP LBB3_10
-
-DATA LCDATA3<>+0x000(SB)/8, $0x8000000080000000
-DATA LCDATA3<>+0x008(SB)/8, $0x8000000080000000
-DATA LCDATA3<>+0x010(SB)/8, $0x7fffffff7fffffff
-DATA LCDATA3<>+0x018(SB)/8, $0x7fffffff7fffffff
-GLOBL LCDATA3<>(SB), 8, $32
-
-TEXT ·_int32_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA3<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB4_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x07 // cmp esi, 7
- JA LBB4_6
- LONG $0x000000b8; BYTE $0x80 // mov eax, -2147483648
- LONG $0xffffb841; WORD $0x7fff // mov r8d, 2147483647
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- JMP LBB4_4
-
-LBB4_1:
- LONG $0xffffb841; WORD $0x7fff // mov r8d, 2147483647
- LONG $0x000000b8; BYTE $0x80 // mov eax, -2147483648
- JMP LBB4_13
-
-LBB4_6:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xf8e38341 // and r11d, -8
- LONG $0xf8438d49 // lea rax, [r11 - 8]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x03e8c149 // shr r8, 3
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB4_7
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI4_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI4_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
-
-LBB4_9:
- LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax]
- LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16]
- LONG $0x746f0ff3; WORD $0x2087 // movdqu xmm6, oword [rdi + 4*rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3087 // movdqu xmm7, oword [rdi + 4*rax + 48]
- LONG $0x39380f66; BYTE $0xc4 // pminsd xmm0, xmm4
- LONG $0x39380f66; BYTE $0xd5 // pminsd xmm2, xmm5
- LONG $0x3d380f66; BYTE $0xcc // pmaxsd xmm1, xmm4
- LONG $0x3d380f66; BYTE $0xdd // pmaxsd xmm3, xmm5
- LONG $0x39380f66; BYTE $0xc6 // pminsd xmm0, xmm6
- LONG $0x39380f66; BYTE $0xd7 // pminsd xmm2, xmm7
- LONG $0x3d380f66; BYTE $0xce // pmaxsd xmm1, xmm6
- LONG $0x3d380f66; BYTE $0xdf // pmaxsd xmm3, xmm7
- LONG $0x10c08348 // add rax, 16
- LONG $0x02c28349 // add r10, 2
- JNE LBB4_9
- LONG $0x01c0f641 // test r8b, 1
- JE LBB4_12
-
-LBB4_11:
- LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax]
- LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16]
- LONG $0x3d380f66; BYTE $0xdd // pmaxsd xmm3, xmm5
- LONG $0x3d380f66; BYTE $0xcc // pmaxsd xmm1, xmm4
- LONG $0x39380f66; BYTE $0xd5 // pminsd xmm2, xmm5
- LONG $0x39380f66; BYTE $0xc4 // pminsd xmm0, xmm4
-
-LBB4_12:
- LONG $0x39380f66; BYTE $0xc2 // pminsd xmm0, xmm2
- LONG $0x3d380f66; BYTE $0xcb // pmaxsd xmm1, xmm3
- LONG $0xd1700f66; BYTE $0x4e // pshufd xmm2, xmm1, 78
- LONG $0x3d380f66; BYTE $0xd1 // pmaxsd xmm2, xmm1
- LONG $0xca700f66; BYTE $0xe5 // pshufd xmm1, xmm2, 229
- LONG $0x3d380f66; BYTE $0xca // pmaxsd xmm1, xmm2
- LONG $0xc87e0f66 // movd eax, xmm1
- LONG $0xc8700f66; BYTE $0x4e // pshufd xmm1, xmm0, 78
- LONG $0x39380f66; BYTE $0xc8 // pminsd xmm1, xmm0
- LONG $0xc1700f66; BYTE $0xe5 // pshufd xmm0, xmm1, 229
- LONG $0x39380f66; BYTE $0xc1 // pminsd xmm0, xmm1
- LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB4_13
-
-LBB4_4:
- WORD $0xc689 // mov esi, eax
-
-LBB4_5:
- LONG $0x9f048b42 // mov eax, dword [rdi + 4*r11]
- WORD $0x3941; BYTE $0xc0 // cmp r8d, eax
- LONG $0xc04f0f44 // cmovg r8d, eax
- WORD $0xc639 // cmp esi, eax
- WORD $0x4d0f; BYTE $0xc6 // cmovge eax, esi
- LONG $0x01c38349 // add r11, 1
- WORD $0xc689 // mov esi, eax
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB4_5
-
-LBB4_13:
- WORD $0x0189 // mov dword [rcx], eax
- WORD $0x8944; BYTE $0x02 // mov dword [rdx], r8d
- RET
-
-LBB4_7:
- LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI4_0] */
- LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI4_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0xd06f0f66 // movdqa xmm2, xmm0
- LONG $0xd96f0f66 // movdqa xmm3, xmm1
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB4_11
- JMP LBB4_12
-
-TEXT ·_uint32_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
-
- WORD $0xf685 // test esi, esi
- JLE LBB5_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x07 // cmp esi, 7
- JA LBB5_6
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- LONG $0xffffb841; WORD $0xffff // mov r8d, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB5_4
-
-LBB5_1:
- LONG $0xffffb841; WORD $0xffff // mov r8d, -1
- WORD $0xf631 // xor esi, esi
- JMP LBB5_13
-
-LBB5_6:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xf8e38341 // and r11d, -8
- LONG $0xf8438d49 // lea rax, [r11 - 8]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x03e8c149 // shr r8, 3
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB5_7
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
-
-LBB5_9:
- LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax]
- LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16]
- LONG $0x746f0ff3; WORD $0x2087 // movdqu xmm6, oword [rdi + 4*rax + 32]
- LONG $0x7c6f0ff3; WORD $0x3087 // movdqu xmm7, oword [rdi + 4*rax + 48]
- LONG $0x3b380f66; BYTE $0xc4 // pminud xmm0, xmm4
- LONG $0x3b380f66; BYTE $0xd5 // pminud xmm2, xmm5
- LONG $0x3f380f66; BYTE $0xcc // pmaxud xmm1, xmm4
- LONG $0x3f380f66; BYTE $0xdd // pmaxud xmm3, xmm5
- LONG $0x3b380f66; BYTE $0xc6 // pminud xmm0, xmm6
- LONG $0x3b380f66; BYTE $0xd7 // pminud xmm2, xmm7
- LONG $0x3f380f66; BYTE $0xce // pmaxud xmm1, xmm6
- LONG $0x3f380f66; BYTE $0xdf // pmaxud xmm3, xmm7
- LONG $0x10c08348 // add rax, 16
- LONG $0x02c28349 // add r10, 2
- JNE LBB5_9
- LONG $0x01c0f641 // test r8b, 1
- JE LBB5_12
-
-LBB5_11:
- LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax]
- LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16]
- LONG $0x3f380f66; BYTE $0xdd // pmaxud xmm3, xmm5
- LONG $0x3f380f66; BYTE $0xcc // pmaxud xmm1, xmm4
- LONG $0x3b380f66; BYTE $0xd5 // pminud xmm2, xmm5
- LONG $0x3b380f66; BYTE $0xc4 // pminud xmm0, xmm4
-
-LBB5_12:
- LONG $0x3b380f66; BYTE $0xc2 // pminud xmm0, xmm2
- LONG $0x3f380f66; BYTE $0xcb // pmaxud xmm1, xmm3
- LONG $0xd1700f66; BYTE $0x4e // pshufd xmm2, xmm1, 78
- LONG $0x3f380f66; BYTE $0xd1 // pmaxud xmm2, xmm1
- LONG $0xca700f66; BYTE $0xe5 // pshufd xmm1, xmm2, 229
- LONG $0x3f380f66; BYTE $0xca // pmaxud xmm1, xmm2
- LONG $0xce7e0f66 // movd esi, xmm1
- LONG $0xc8700f66; BYTE $0x4e // pshufd xmm1, xmm0, 78
- LONG $0x3b380f66; BYTE $0xc8 // pminud xmm1, xmm0
- LONG $0xc1700f66; BYTE $0xe5 // pshufd xmm0, xmm1, 229
- LONG $0x3b380f66; BYTE $0xc1 // pminud xmm0, xmm1
- LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB5_13
-
-LBB5_4:
- WORD $0xf089 // mov eax, esi
-
-LBB5_5:
- LONG $0x9f348b42 // mov esi, dword [rdi + 4*r11]
- WORD $0x3941; BYTE $0xf0 // cmp r8d, esi
- LONG $0xc6430f44 // cmovae r8d, esi
- WORD $0xf039 // cmp eax, esi
- WORD $0x470f; BYTE $0xf0 // cmova esi, eax
- LONG $0x01c38349 // add r11, 1
- WORD $0xf089 // mov eax, esi
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB5_5
-
-LBB5_13:
- WORD $0x3189 // mov dword [rcx], esi
- WORD $0x8944; BYTE $0x02 // mov dword [rdx], r8d
- RET
-
-LBB5_7:
- LONG $0xc9ef0f66 // pxor xmm1, xmm1
- LONG $0xc0760f66 // pcmpeqd xmm0, xmm0
- WORD $0xc031 // xor eax, eax
- LONG $0xd2760f66 // pcmpeqd xmm2, xmm2
- LONG $0xdbef0f66 // pxor xmm3, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB5_11
- JMP LBB5_12
-
-DATA LCDATA4<>+0x000(SB)/8, $0x8000000000000000
-DATA LCDATA4<>+0x008(SB)/8, $0x8000000000000000
-DATA LCDATA4<>+0x010(SB)/8, $0x7fffffffffffffff
-DATA LCDATA4<>+0x018(SB)/8, $0x7fffffffffffffff
-GLOBL LCDATA4<>(SB), 8, $32
-
-TEXT ·_int64_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA4<>(SB), BP
-
- QUAD $0xffffffffffffb849; WORD $0x7fff // mov r8, 9223372036854775807
- WORD $0xf685 // test esi, esi
- JLE LBB6_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x03 // cmp esi, 3
- JA LBB6_6
- LONG $0x01708d49 // lea rsi, [r8 + 1]
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- JMP LBB6_4
-
-LBB6_1:
- LONG $0x01708d49 // lea rsi, [r8 + 1]
- JMP LBB6_13
-
-LBB6_6:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xfce38341 // and r11d, -4
- LONG $0xfc438d49 // lea rax, [r11 - 4]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x02e8c149 // shr r8, 2
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB6_7
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0x6f0f4466; WORD $0x004d // movdqa xmm9, oword 0[rbp] /* [rip + .LCPI6_0] */
- LONG $0x6f0f4466; WORD $0x1045 // movdqa xmm8, oword 16[rbp] /* [rip + .LCPI6_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0x6f0f4166; BYTE $0xd0 // movdqa xmm2, xmm8
- LONG $0x6f0f4166; BYTE $0xf1 // movdqa xmm6, xmm9
-
-LBB6_9:
- LONG $0x3c6f0ff3; BYTE $0xc7 // movdqu xmm7, oword [rdi + 8*rax]
- LONG $0xc76f0f66 // movdqa xmm0, xmm7
- LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8
- LONG $0xe76f0f66 // movdqa xmm4, xmm7
- LONG $0x380f4166; WORD $0xe015 // blendvpd xmm4, xmm8, xmm0
- LONG $0x4c6f0ff3; WORD $0x10c7 // movdqu xmm1, oword [rdi + 8*rax + 16]
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0xe96f0f66 // movdqa xmm5, xmm1
- LONG $0x15380f66; BYTE $0xea // blendvpd xmm5, xmm2, xmm0
- LONG $0x6f0f4166; BYTE $0xc1 // movdqa xmm0, xmm9
- LONG $0x37380f66; BYTE $0xc7 // pcmpgtq xmm0, xmm7
- LONG $0x380f4166; WORD $0xf915 // blendvpd xmm7, xmm9, xmm0
- LONG $0xc66f0f66 // movdqa xmm0, xmm6
- LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1
- LONG $0x15380f66; BYTE $0xce // blendvpd xmm1, xmm6, xmm0
- LONG $0x5c6f0ff3; WORD $0x20c7 // movdqu xmm3, oword [rdi + 8*rax + 32]
- LONG $0xc36f0f66 // movdqa xmm0, xmm3
- LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4
- LONG $0x6f0f4466; BYTE $0xc3 // movdqa xmm8, xmm3
- LONG $0x380f4466; WORD $0xc415 // blendvpd xmm8, xmm4, xmm0
- LONG $0x646f0ff3; WORD $0x30c7 // movdqu xmm4, oword [rdi + 8*rax + 48]
- LONG $0xc46f0f66 // movdqa xmm0, xmm4
- LONG $0x37380f66; BYTE $0xc5 // pcmpgtq xmm0, xmm5
- LONG $0xd46f0f66 // movdqa xmm2, xmm4
- LONG $0x15380f66; BYTE $0xd5 // blendvpd xmm2, xmm5, xmm0
- LONG $0xc7280f66 // movapd xmm0, xmm7
- LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3
- LONG $0x15380f66; BYTE $0xdf // blendvpd xmm3, xmm7, xmm0
- LONG $0xc1280f66 // movapd xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4
- LONG $0x15380f66; BYTE $0xe1 // blendvpd xmm4, xmm1, xmm0
- LONG $0x08c08348 // add rax, 8
- LONG $0x280f4466; BYTE $0xcb // movapd xmm9, xmm3
- LONG $0xf4280f66 // movapd xmm6, xmm4
- LONG $0x02c28349 // add r10, 2
- JNE LBB6_9
- LONG $0x01c0f641 // test r8b, 1
- JE LBB6_12
-
-LBB6_11:
- LONG $0x4c6f0ff3; WORD $0x10c7 // movdqu xmm1, oword [rdi + 8*rax + 16]
- LONG $0xc4280f66 // movapd xmm0, xmm4
- LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1
- LONG $0xe96f0f66 // movdqa xmm5, xmm1
- LONG $0x15380f66; BYTE $0xec // blendvpd xmm5, xmm4, xmm0
- LONG $0x246f0ff3; BYTE $0xc7 // movdqu xmm4, oword [rdi + 8*rax]
- LONG $0xc3280f66 // movapd xmm0, xmm3
- LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4
- LONG $0xf46f0f66 // movdqa xmm6, xmm4
- LONG $0x15380f66; BYTE $0xf3 // blendvpd xmm6, xmm3, xmm0
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0x15380f66; BYTE $0xca // blendvpd xmm1, xmm2, xmm0
- LONG $0xc46f0f66 // movdqa xmm0, xmm4
- LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8
- LONG $0x380f4166; WORD $0xe015 // blendvpd xmm4, xmm8, xmm0
- LONG $0x280f4466; BYTE $0xc4 // movapd xmm8, xmm4
- LONG $0xd1280f66 // movapd xmm2, xmm1
- LONG $0xde280f66 // movapd xmm3, xmm6
- LONG $0xe5280f66 // movapd xmm4, xmm5
-
-LBB6_12:
- LONG $0xc3280f66 // movapd xmm0, xmm3
- LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4
- LONG $0x15380f66; BYTE $0xe3 // blendvpd xmm4, xmm3, xmm0
- LONG $0xcc700f66; BYTE $0x4e // pshufd xmm1, xmm4, 78
- LONG $0xc46f0f66 // movdqa xmm0, xmm4
- LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1
- LONG $0x15380f66; BYTE $0xcc // blendvpd xmm1, xmm4, xmm0
- LONG $0x7e0f4866; BYTE $0xce // movq rsi, xmm1
- LONG $0xc26f0f66 // movdqa xmm0, xmm2
- LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8
- LONG $0x380f4166; WORD $0xd015 // blendvpd xmm2, xmm8, xmm0
- LONG $0xca700f66; BYTE $0x4e // pshufd xmm1, xmm2, 78
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0x15380f66; BYTE $0xca // blendvpd xmm1, xmm2, xmm0
- LONG $0x7e0f4966; BYTE $0xc8 // movq r8, xmm1
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB6_13
-
-LBB6_4:
- WORD $0x8948; BYTE $0xf0 // mov rax, rsi
-
-LBB6_5:
- LONG $0xdf348b4a // mov rsi, qword [rdi + 8*r11]
- WORD $0x3949; BYTE $0xf0 // cmp r8, rsi
- LONG $0xc64f0f4c // cmovg r8, rsi
- WORD $0x3948; BYTE $0xf0 // cmp rax, rsi
- LONG $0xf04d0f48 // cmovge rsi, rax
- LONG $0x01c38349 // add r11, 1
- WORD $0x8948; BYTE $0xf0 // mov rax, rsi
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB6_5
-
-LBB6_13:
- WORD $0x8948; BYTE $0x31 // mov qword [rcx], rsi
- WORD $0x894c; BYTE $0x02 // mov qword [rdx], r8
- RET
-
-LBB6_7:
- LONG $0x5d280f66; BYTE $0x00 // movapd xmm3, oword 0[rbp] /* [rip + .LCPI6_0] */
- LONG $0x6f0f4466; WORD $0x1045 // movdqa xmm8, oword 16[rbp] /* [rip + .LCPI6_1] */
- WORD $0xc031 // xor eax, eax
- LONG $0x6f0f4166; BYTE $0xd0 // movdqa xmm2, xmm8
- LONG $0xe3280f66 // movapd xmm4, xmm3
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB6_11
- JMP LBB6_12
-
-DATA LCDATA5<>+0x000(SB)/8, $0x8000000000000000
-DATA LCDATA5<>+0x008(SB)/8, $0x8000000000000000
-GLOBL LCDATA5<>(SB), 8, $16
-
-TEXT ·_uint64_max_min_sse4(SB), $0-32
-
- MOVQ values+0(FP), DI
- MOVQ length+8(FP), SI
- MOVQ minout+16(FP), DX
- MOVQ maxout+24(FP), CX
- LEAQ LCDATA5<>(SB), BP
-
- WORD $0xf685 // test esi, esi
- JLE LBB7_1
- WORD $0x8941; BYTE $0xf1 // mov r9d, esi
- WORD $0xfe83; BYTE $0x03 // cmp esi, 3
- JA LBB7_6
- LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1
- WORD $0x3145; BYTE $0xdb // xor r11d, r11d
- WORD $0xc031 // xor eax, eax
- JMP LBB7_4
-
-LBB7_1:
- LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1
- WORD $0xc031 // xor eax, eax
- JMP LBB7_13
-
-LBB7_6:
- WORD $0x8945; BYTE $0xcb // mov r11d, r9d
- LONG $0xfce38341 // and r11d, -4
- LONG $0xfc438d49 // lea rax, [r11 - 4]
- WORD $0x8949; BYTE $0xc0 // mov r8, rax
- LONG $0x02e8c149 // shr r8, 2
- LONG $0x01c08349 // add r8, 1
- WORD $0x8548; BYTE $0xc0 // test rax, rax
- JE LBB7_7
- WORD $0x894d; BYTE $0xc2 // mov r10, r8
- LONG $0xfee28349 // and r10, -2
- WORD $0xf749; BYTE $0xda // neg r10
- LONG $0xef0f4566; BYTE $0xc9 // pxor xmm9, xmm9
- LONG $0x760f4566; BYTE $0xd2 // pcmpeqd xmm10, xmm10
- WORD $0xc031 // xor eax, eax
- LONG $0x6f0f4466; WORD $0x0045 // movdqa xmm8, oword 0[rbp] /* [rip + .LCPI7_0] */
- LONG $0x760f4566; BYTE $0xdb // pcmpeqd xmm11, xmm11
- LONG $0xef0f4566; BYTE $0xe4 // pxor xmm12, xmm12
-
-LBB7_9:
- LONG $0x6f0f4166; BYTE $0xd2 // movdqa xmm2, xmm10
- LONG $0xef0f4166; BYTE $0xd0 // pxor xmm2, xmm8
- LONG $0x246f0ff3; BYTE $0xc7 // movdqu xmm4, oword [rdi + 8*rax]
- LONG $0x6c6f0ff3; WORD $0x10c7 // movdqu xmm5, oword [rdi + 8*rax + 16]
- LONG $0x6f0f44f3; WORD $0xc76c; BYTE $0x20 // movdqu xmm13, oword [rdi + 8*rax + 32]
- LONG $0xc46f0f66 // movdqa xmm0, xmm4
- LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8
- LONG $0x6f0f4166; BYTE $0xc9 // movdqa xmm1, xmm9
- LONG $0xef0f4166; BYTE $0xc8 // pxor xmm1, xmm8
- LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0xdc6f0f66 // movdqa xmm3, xmm4
- LONG $0x380f4166; WORD $0xda15 // blendvpd xmm3, xmm10, xmm0
- LONG $0x746f0ff3; WORD $0x30c7 // movdqu xmm6, oword [rdi + 8*rax + 48]
- LONG $0x6f0f4166; BYTE $0xfb // movdqa xmm7, xmm11
- LONG $0xef0f4166; BYTE $0xf8 // pxor xmm7, xmm8
- LONG $0xc56f0f66 // movdqa xmm0, xmm5
- LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8
- LONG $0x6f0f4166; BYTE $0xd4 // movdqa xmm2, xmm12
- LONG $0xef0f4166; BYTE $0xd0 // pxor xmm2, xmm8
- LONG $0x37380f66; BYTE $0xd0 // pcmpgtq xmm2, xmm0
- LONG $0x37380f66; BYTE $0xc7 // pcmpgtq xmm0, xmm7
- LONG $0xfd6f0f66 // movdqa xmm7, xmm5
- LONG $0x380f4166; WORD $0xfb15 // blendvpd xmm7, xmm11, xmm0
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x380f4166; WORD $0xe115 // blendvpd xmm4, xmm9, xmm0
- LONG $0xc26f0f66 // movdqa xmm0, xmm2
- LONG $0x380f4166; WORD $0xec15 // blendvpd xmm5, xmm12, xmm0
- LONG $0xd3280f66 // movapd xmm2, xmm3
- LONG $0x570f4166; BYTE $0xd0 // xorpd xmm2, xmm8
- LONG $0x6f0f4166; BYTE $0xc5 // movdqa xmm0, xmm13
- LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8
- LONG $0xcc280f66 // movapd xmm1, xmm4
- LONG $0x570f4166; BYTE $0xc8 // xorpd xmm1, xmm8
- LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0x6f0f4566; BYTE $0xd5 // movdqa xmm10, xmm13
- LONG $0x380f4466; WORD $0xd315 // blendvpd xmm10, xmm3, xmm0
- LONG $0xdf280f66 // movapd xmm3, xmm7
- LONG $0x570f4166; BYTE $0xd8 // xorpd xmm3, xmm8
- LONG $0xc66f0f66 // movdqa xmm0, xmm6
- LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8
- LONG $0xd5280f66 // movapd xmm2, xmm5
- LONG $0x570f4166; BYTE $0xd0 // xorpd xmm2, xmm8
- LONG $0x37380f66; BYTE $0xd0 // pcmpgtq xmm2, xmm0
- LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3
- LONG $0x6f0f4466; BYTE $0xde // movdqa xmm11, xmm6
- LONG $0x380f4466; WORD $0xdf15 // blendvpd xmm11, xmm7, xmm0
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x380f4466; WORD $0xec15 // blendvpd xmm13, xmm4, xmm0
- LONG $0xc26f0f66 // movdqa xmm0, xmm2
- LONG $0x15380f66; BYTE $0xf5 // blendvpd xmm6, xmm5, xmm0
- LONG $0x08c08348 // add rax, 8
- LONG $0x280f4566; BYTE $0xcd // movapd xmm9, xmm13
- LONG $0x280f4466; BYTE $0xe6 // movapd xmm12, xmm6
- LONG $0x02c28349 // add r10, 2
- JNE LBB7_9
- LONG $0x01c0f641 // test r8b, 1
- JE LBB7_12
-
-LBB7_11:
- LONG $0x24100f66; BYTE $0xc7 // movupd xmm4, oword [rdi + 8*rax]
- LONG $0x5c100f66; WORD $0x10c7 // movupd xmm3, oword [rdi + 8*rax + 16]
- LONG $0x6d280f66; BYTE $0x00 // movapd xmm5, oword 0[rbp] /* [rip + .LCPI7_0] */
- LONG $0xc6280f66 // movapd xmm0, xmm6
- LONG $0xc5570f66 // xorpd xmm0, xmm5
- LONG $0xcb280f66 // movapd xmm1, xmm3
- LONG $0xcd570f66 // xorpd xmm1, xmm5
- LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1
- LONG $0xfb280f66 // movapd xmm7, xmm3
- LONG $0x15380f66; BYTE $0xfe // blendvpd xmm7, xmm6, xmm0
- LONG $0x280f4166; BYTE $0xc5 // movapd xmm0, xmm13
- LONG $0xc5570f66 // xorpd xmm0, xmm5
- LONG $0xd4280f66 // movapd xmm2, xmm4
- LONG $0xd5570f66 // xorpd xmm2, xmm5
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0xf4280f66 // movapd xmm6, xmm4
- LONG $0x380f4166; WORD $0xf515 // blendvpd xmm6, xmm13, xmm0
- LONG $0x280f4166; BYTE $0xc3 // movapd xmm0, xmm11
- LONG $0xc5570f66 // xorpd xmm0, xmm5
- LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x380f4166; WORD $0xdb15 // blendvpd xmm3, xmm11, xmm0
- LONG $0x570f4166; BYTE $0xea // xorpd xmm5, xmm10
- LONG $0x37380f66; BYTE $0xd5 // pcmpgtq xmm2, xmm5
- LONG $0xc26f0f66 // movdqa xmm0, xmm2
- LONG $0x380f4166; WORD $0xe215 // blendvpd xmm4, xmm10, xmm0
- LONG $0x280f4466; BYTE $0xd4 // movapd xmm10, xmm4
- LONG $0x280f4466; BYTE $0xdb // movapd xmm11, xmm3
- LONG $0x280f4466; BYTE $0xee // movapd xmm13, xmm6
- LONG $0xf7280f66 // movapd xmm6, xmm7
-
-LBB7_12:
- LONG $0x4d280f66; BYTE $0x00 // movapd xmm1, oword 0[rbp] /* [rip + .LCPI7_0] */
- LONG $0xd6280f66 // movapd xmm2, xmm6
- LONG $0xd1570f66 // xorpd xmm2, xmm1
- LONG $0x280f4166; BYTE $0xc5 // movapd xmm0, xmm13
- LONG $0xc1570f66 // xorpd xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0x380f4166; WORD $0xf515 // blendvpd xmm6, xmm13, xmm0
- LONG $0xd6700f66; BYTE $0x4e // pshufd xmm2, xmm6, 78
- LONG $0xc6280f66 // movapd xmm0, xmm6
- LONG $0xc1570f66 // xorpd xmm0, xmm1
- LONG $0xda6f0f66 // movdqa xmm3, xmm2
- LONG $0xd9ef0f66 // pxor xmm3, xmm1
- LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3
- LONG $0x15380f66; BYTE $0xd6 // blendvpd xmm2, xmm6, xmm0
- LONG $0x7e0f4866; BYTE $0xd0 // movq rax, xmm2
- LONG $0x6f0f4166; BYTE $0xd2 // movdqa xmm2, xmm10
- LONG $0xd1ef0f66 // pxor xmm2, xmm1
- LONG $0x6f0f4166; BYTE $0xc3 // movdqa xmm0, xmm11
- LONG $0xc1ef0f66 // pxor xmm0, xmm1
- LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2
- LONG $0x380f4566; WORD $0xda15 // blendvpd xmm11, xmm10, xmm0
- LONG $0x700f4166; WORD $0x4ed3 // pshufd xmm2, xmm11, 78
- LONG $0x6f0f4166; BYTE $0xc3 // movdqa xmm0, xmm11
- LONG $0xc1ef0f66 // pxor xmm0, xmm1
- LONG $0xcaef0f66 // pxor xmm1, xmm2
- LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0
- LONG $0xc16f0f66 // movdqa xmm0, xmm1
- LONG $0x380f4166; WORD $0xd315 // blendvpd xmm2, xmm11, xmm0
- LONG $0x7e0f4966; BYTE $0xd0 // movq r8, xmm2
- WORD $0x394d; BYTE $0xcb // cmp r11, r9
- JE LBB7_13
-
-LBB7_4:
- WORD $0x8948; BYTE $0xc6 // mov rsi, rax
-
-LBB7_5:
- LONG $0xdf048b4a // mov rax, qword [rdi + 8*r11]
- WORD $0x3949; BYTE $0xc0 // cmp r8, rax
- LONG $0xc0430f4c // cmovae r8, rax
- WORD $0x3948; BYTE $0xc6 // cmp rsi, rax
- LONG $0xc6470f48 // cmova rax, rsi
- LONG $0x01c38349 // add r11, 1
- WORD $0x8948; BYTE $0xc6 // mov rsi, rax
- WORD $0x394d; BYTE $0xd9 // cmp r9, r11
- JNE LBB7_5
-
-LBB7_13:
- WORD $0x8948; BYTE $0x01 // mov qword [rcx], rax
- WORD $0x894c; BYTE $0x02 // mov qword [rdx], r8
- RET
-
-LBB7_7:
- LONG $0x570f4566; BYTE $0xed // xorpd xmm13, xmm13
- LONG $0x760f4566; BYTE $0xd2 // pcmpeqd xmm10, xmm10
- WORD $0xc031 // xor eax, eax
- LONG $0x760f4566; BYTE $0xdb // pcmpeqd xmm11, xmm11
- LONG $0xf6570f66 // xorpd xmm6, xmm6
- LONG $0x01c0f641 // test r8b, 1
- JNE LBB7_11
- JMP LBB7_12
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go
deleted file mode 100644
index 1666df129..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go
+++ /dev/null
@@ -1,407 +0,0 @@
-// Code generated by transpose_ints.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-// when we upgrade to support go1.18, this can be massively simplified by using
-// Go Generics, but since we aren't supporting go1.18 yet, I didn't want to use
-// them here so we can maintain the backwards compatibility.
-
-func transposeInt8Int8(src []int8, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeInt8Uint8(src []int8, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeInt8Int16(src []int8, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeInt8Uint16(src []int8, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeInt8Int32(src []int8, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeInt8Uint32(src []int8, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeInt8Int64(src []int8, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeInt8Uint64(src []int8, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeUint8Int8(src []uint8, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeUint8Uint8(src []uint8, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeUint8Int16(src []uint8, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeUint8Uint16(src []uint8, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeUint8Int32(src []uint8, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeUint8Uint32(src []uint8, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeUint8Int64(src []uint8, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeUint8Uint64(src []uint8, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeInt16Int8(src []int16, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeInt16Uint8(src []int16, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeInt16Int16(src []int16, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeInt16Uint16(src []int16, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeInt16Int32(src []int16, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeInt16Uint32(src []int16, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeInt16Int64(src []int16, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeInt16Uint64(src []int16, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeUint16Int8(src []uint16, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeUint16Uint8(src []uint16, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeUint16Int16(src []uint16, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeUint16Uint16(src []uint16, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeUint16Int32(src []uint16, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeUint16Uint32(src []uint16, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeUint16Int64(src []uint16, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeUint16Uint64(src []uint16, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeInt32Int8(src []int32, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeInt32Uint8(src []int32, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeInt32Int16(src []int32, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeInt32Uint16(src []int32, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeInt32Int32(src []int32, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeInt32Uint32(src []int32, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeInt32Int64(src []int32, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeInt32Uint64(src []int32, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeUint32Int8(src []uint32, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeUint32Uint8(src []uint32, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeUint32Int16(src []uint32, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeUint32Uint16(src []uint32, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeUint32Int32(src []uint32, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeUint32Uint32(src []uint32, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeUint32Int64(src []uint32, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeUint32Uint64(src []uint32, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeInt64Int8(src []int64, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeInt64Uint8(src []int64, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeInt64Int16(src []int64, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeInt64Uint16(src []int64, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeInt64Int32(src []int64, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeInt64Uint32(src []int64, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeInt64Int64(src []int64, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeInt64Uint64(src []int64, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
-
-func transposeUint64Int8(src []uint64, dest []int8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int8(transposeMap[s])
- }
-}
-
-func transposeUint64Uint8(src []uint64, dest []uint8, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint8(transposeMap[s])
- }
-}
-
-func transposeUint64Int16(src []uint64, dest []int16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int16(transposeMap[s])
- }
-}
-
-func transposeUint64Uint16(src []uint64, dest []uint16, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint16(transposeMap[s])
- }
-}
-
-func transposeUint64Int32(src []uint64, dest []int32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int32(transposeMap[s])
- }
-}
-
-func transposeUint64Uint32(src []uint64, dest []uint32, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint32(transposeMap[s])
- }
-}
-
-func transposeUint64Int64(src []uint64, dest []int64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = int64(transposeMap[s])
- }
-}
-
-func transposeUint64Uint64(src []uint64, dest []uint64, transposeMap []int32) {
- for i, s := range src {
- dest[i] = uint64(transposeMap[s])
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go.tmpl
deleted file mode 100644
index 680ae1ee7..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.go.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type }}
-{{ $srcName := .Name }}
-{{ range $typelist }}
-{{ $dest := .Type }}
-{{ $destName := .Name }}
-
-func transpose{{ $srcName }}{{ $destName }}(src []{{$src}}, dest []{{$dest}}, transposeMap []int32) {
- for i, s := range src {
- dest[i] = {{ $dest }}(transposeMap[s])
- }
-}
-
-{{ end }}
-{{ end }}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.tmpldata b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.tmpldata
deleted file mode 100644
index 72eaf300c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints.tmpldata
+++ /dev/null
@@ -1,34 +0,0 @@
-[
- {
- "Name": "Int8",
- "Type": "int8"
- },
- {
- "Name": "Uint8",
- "Type": "uint8"
- },
- {
- "Name": "Int16",
- "Type": "int16"
- },
- {
- "Name": "Uint16",
- "Type": "uint16"
- },
- {
- "Name": "Int32",
- "Type": "int32"
- },
- {
- "Name": "Uint32",
- "Type": "uint32"
- },
- {
- "Name": "Int64",
- "Type": "int64"
- },
- {
- "Name": "Uint64",
- "Type": "uint64"
- }
-]
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go
deleted file mode 100644
index d4433d368..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go
+++ /dev/null
@@ -1,325 +0,0 @@
-// Code generated by transpose_ints_amd64.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import (
- "golang.org/x/sys/cpu"
-)
-
-var (
- TransposeInt8Int8 func([]int8, []int8, []int32)
- TransposeInt8Uint8 func([]int8, []uint8, []int32)
- TransposeInt8Int16 func([]int8, []int16, []int32)
- TransposeInt8Uint16 func([]int8, []uint16, []int32)
- TransposeInt8Int32 func([]int8, []int32, []int32)
- TransposeInt8Uint32 func([]int8, []uint32, []int32)
- TransposeInt8Int64 func([]int8, []int64, []int32)
- TransposeInt8Uint64 func([]int8, []uint64, []int32)
-
- TransposeUint8Int8 func([]uint8, []int8, []int32)
- TransposeUint8Uint8 func([]uint8, []uint8, []int32)
- TransposeUint8Int16 func([]uint8, []int16, []int32)
- TransposeUint8Uint16 func([]uint8, []uint16, []int32)
- TransposeUint8Int32 func([]uint8, []int32, []int32)
- TransposeUint8Uint32 func([]uint8, []uint32, []int32)
- TransposeUint8Int64 func([]uint8, []int64, []int32)
- TransposeUint8Uint64 func([]uint8, []uint64, []int32)
-
- TransposeInt16Int8 func([]int16, []int8, []int32)
- TransposeInt16Uint8 func([]int16, []uint8, []int32)
- TransposeInt16Int16 func([]int16, []int16, []int32)
- TransposeInt16Uint16 func([]int16, []uint16, []int32)
- TransposeInt16Int32 func([]int16, []int32, []int32)
- TransposeInt16Uint32 func([]int16, []uint32, []int32)
- TransposeInt16Int64 func([]int16, []int64, []int32)
- TransposeInt16Uint64 func([]int16, []uint64, []int32)
-
- TransposeUint16Int8 func([]uint16, []int8, []int32)
- TransposeUint16Uint8 func([]uint16, []uint8, []int32)
- TransposeUint16Int16 func([]uint16, []int16, []int32)
- TransposeUint16Uint16 func([]uint16, []uint16, []int32)
- TransposeUint16Int32 func([]uint16, []int32, []int32)
- TransposeUint16Uint32 func([]uint16, []uint32, []int32)
- TransposeUint16Int64 func([]uint16, []int64, []int32)
- TransposeUint16Uint64 func([]uint16, []uint64, []int32)
-
- TransposeInt32Int8 func([]int32, []int8, []int32)
- TransposeInt32Uint8 func([]int32, []uint8, []int32)
- TransposeInt32Int16 func([]int32, []int16, []int32)
- TransposeInt32Uint16 func([]int32, []uint16, []int32)
- TransposeInt32Int32 func([]int32, []int32, []int32)
- TransposeInt32Uint32 func([]int32, []uint32, []int32)
- TransposeInt32Int64 func([]int32, []int64, []int32)
- TransposeInt32Uint64 func([]int32, []uint64, []int32)
-
- TransposeUint32Int8 func([]uint32, []int8, []int32)
- TransposeUint32Uint8 func([]uint32, []uint8, []int32)
- TransposeUint32Int16 func([]uint32, []int16, []int32)
- TransposeUint32Uint16 func([]uint32, []uint16, []int32)
- TransposeUint32Int32 func([]uint32, []int32, []int32)
- TransposeUint32Uint32 func([]uint32, []uint32, []int32)
- TransposeUint32Int64 func([]uint32, []int64, []int32)
- TransposeUint32Uint64 func([]uint32, []uint64, []int32)
-
- TransposeInt64Int8 func([]int64, []int8, []int32)
- TransposeInt64Uint8 func([]int64, []uint8, []int32)
- TransposeInt64Int16 func([]int64, []int16, []int32)
- TransposeInt64Uint16 func([]int64, []uint16, []int32)
- TransposeInt64Int32 func([]int64, []int32, []int32)
- TransposeInt64Uint32 func([]int64, []uint32, []int32)
- TransposeInt64Int64 func([]int64, []int64, []int32)
- TransposeInt64Uint64 func([]int64, []uint64, []int32)
-
- TransposeUint64Int8 func([]uint64, []int8, []int32)
- TransposeUint64Uint8 func([]uint64, []uint8, []int32)
- TransposeUint64Int16 func([]uint64, []int16, []int32)
- TransposeUint64Uint16 func([]uint64, []uint16, []int32)
- TransposeUint64Int32 func([]uint64, []int32, []int32)
- TransposeUint64Uint32 func([]uint64, []uint32, []int32)
- TransposeUint64Int64 func([]uint64, []int64, []int32)
- TransposeUint64Uint64 func([]uint64, []uint64, []int32)
-)
-
-func init() {
- if cpu.X86.HasAVX2 {
-
- TransposeInt8Int8 = transposeInt8Int8avx2
- TransposeInt8Uint8 = transposeInt8Uint8avx2
- TransposeInt8Int16 = transposeInt8Int16avx2
- TransposeInt8Uint16 = transposeInt8Uint16avx2
- TransposeInt8Int32 = transposeInt8Int32avx2
- TransposeInt8Uint32 = transposeInt8Uint32avx2
- TransposeInt8Int64 = transposeInt8Int64avx2
- TransposeInt8Uint64 = transposeInt8Uint64avx2
-
- TransposeUint8Int8 = transposeUint8Int8avx2
- TransposeUint8Uint8 = transposeUint8Uint8avx2
- TransposeUint8Int16 = transposeUint8Int16avx2
- TransposeUint8Uint16 = transposeUint8Uint16avx2
- TransposeUint8Int32 = transposeUint8Int32avx2
- TransposeUint8Uint32 = transposeUint8Uint32avx2
- TransposeUint8Int64 = transposeUint8Int64avx2
- TransposeUint8Uint64 = transposeUint8Uint64avx2
-
- TransposeInt16Int8 = transposeInt16Int8avx2
- TransposeInt16Uint8 = transposeInt16Uint8avx2
- TransposeInt16Int16 = transposeInt16Int16avx2
- TransposeInt16Uint16 = transposeInt16Uint16avx2
- TransposeInt16Int32 = transposeInt16Int32avx2
- TransposeInt16Uint32 = transposeInt16Uint32avx2
- TransposeInt16Int64 = transposeInt16Int64avx2
- TransposeInt16Uint64 = transposeInt16Uint64avx2
-
- TransposeUint16Int8 = transposeUint16Int8avx2
- TransposeUint16Uint8 = transposeUint16Uint8avx2
- TransposeUint16Int16 = transposeUint16Int16avx2
- TransposeUint16Uint16 = transposeUint16Uint16avx2
- TransposeUint16Int32 = transposeUint16Int32avx2
- TransposeUint16Uint32 = transposeUint16Uint32avx2
- TransposeUint16Int64 = transposeUint16Int64avx2
- TransposeUint16Uint64 = transposeUint16Uint64avx2
-
- TransposeInt32Int8 = transposeInt32Int8avx2
- TransposeInt32Uint8 = transposeInt32Uint8avx2
- TransposeInt32Int16 = transposeInt32Int16avx2
- TransposeInt32Uint16 = transposeInt32Uint16avx2
- TransposeInt32Int32 = transposeInt32Int32avx2
- TransposeInt32Uint32 = transposeInt32Uint32avx2
- TransposeInt32Int64 = transposeInt32Int64avx2
- TransposeInt32Uint64 = transposeInt32Uint64avx2
-
- TransposeUint32Int8 = transposeUint32Int8avx2
- TransposeUint32Uint8 = transposeUint32Uint8avx2
- TransposeUint32Int16 = transposeUint32Int16avx2
- TransposeUint32Uint16 = transposeUint32Uint16avx2
- TransposeUint32Int32 = transposeUint32Int32avx2
- TransposeUint32Uint32 = transposeUint32Uint32avx2
- TransposeUint32Int64 = transposeUint32Int64avx2
- TransposeUint32Uint64 = transposeUint32Uint64avx2
-
- TransposeInt64Int8 = transposeInt64Int8avx2
- TransposeInt64Uint8 = transposeInt64Uint8avx2
- TransposeInt64Int16 = transposeInt64Int16avx2
- TransposeInt64Uint16 = transposeInt64Uint16avx2
- TransposeInt64Int32 = transposeInt64Int32avx2
- TransposeInt64Uint32 = transposeInt64Uint32avx2
- TransposeInt64Int64 = transposeInt64Int64avx2
- TransposeInt64Uint64 = transposeInt64Uint64avx2
-
- TransposeUint64Int8 = transposeUint64Int8avx2
- TransposeUint64Uint8 = transposeUint64Uint8avx2
- TransposeUint64Int16 = transposeUint64Int16avx2
- TransposeUint64Uint16 = transposeUint64Uint16avx2
- TransposeUint64Int32 = transposeUint64Int32avx2
- TransposeUint64Uint32 = transposeUint64Uint32avx2
- TransposeUint64Int64 = transposeUint64Int64avx2
- TransposeUint64Uint64 = transposeUint64Uint64avx2
-
- } else if cpu.X86.HasSSE42 {
-
- TransposeInt8Int8 = transposeInt8Int8sse4
- TransposeInt8Uint8 = transposeInt8Uint8sse4
- TransposeInt8Int16 = transposeInt8Int16sse4
- TransposeInt8Uint16 = transposeInt8Uint16sse4
- TransposeInt8Int32 = transposeInt8Int32sse4
- TransposeInt8Uint32 = transposeInt8Uint32sse4
- TransposeInt8Int64 = transposeInt8Int64sse4
- TransposeInt8Uint64 = transposeInt8Uint64sse4
-
- TransposeUint8Int8 = transposeUint8Int8sse4
- TransposeUint8Uint8 = transposeUint8Uint8sse4
- TransposeUint8Int16 = transposeUint8Int16sse4
- TransposeUint8Uint16 = transposeUint8Uint16sse4
- TransposeUint8Int32 = transposeUint8Int32sse4
- TransposeUint8Uint32 = transposeUint8Uint32sse4
- TransposeUint8Int64 = transposeUint8Int64sse4
- TransposeUint8Uint64 = transposeUint8Uint64sse4
-
- TransposeInt16Int8 = transposeInt16Int8sse4
- TransposeInt16Uint8 = transposeInt16Uint8sse4
- TransposeInt16Int16 = transposeInt16Int16sse4
- TransposeInt16Uint16 = transposeInt16Uint16sse4
- TransposeInt16Int32 = transposeInt16Int32sse4
- TransposeInt16Uint32 = transposeInt16Uint32sse4
- TransposeInt16Int64 = transposeInt16Int64sse4
- TransposeInt16Uint64 = transposeInt16Uint64sse4
-
- TransposeUint16Int8 = transposeUint16Int8sse4
- TransposeUint16Uint8 = transposeUint16Uint8sse4
- TransposeUint16Int16 = transposeUint16Int16sse4
- TransposeUint16Uint16 = transposeUint16Uint16sse4
- TransposeUint16Int32 = transposeUint16Int32sse4
- TransposeUint16Uint32 = transposeUint16Uint32sse4
- TransposeUint16Int64 = transposeUint16Int64sse4
- TransposeUint16Uint64 = transposeUint16Uint64sse4
-
- TransposeInt32Int8 = transposeInt32Int8sse4
- TransposeInt32Uint8 = transposeInt32Uint8sse4
- TransposeInt32Int16 = transposeInt32Int16sse4
- TransposeInt32Uint16 = transposeInt32Uint16sse4
- TransposeInt32Int32 = transposeInt32Int32sse4
- TransposeInt32Uint32 = transposeInt32Uint32sse4
- TransposeInt32Int64 = transposeInt32Int64sse4
- TransposeInt32Uint64 = transposeInt32Uint64sse4
-
- TransposeUint32Int8 = transposeUint32Int8sse4
- TransposeUint32Uint8 = transposeUint32Uint8sse4
- TransposeUint32Int16 = transposeUint32Int16sse4
- TransposeUint32Uint16 = transposeUint32Uint16sse4
- TransposeUint32Int32 = transposeUint32Int32sse4
- TransposeUint32Uint32 = transposeUint32Uint32sse4
- TransposeUint32Int64 = transposeUint32Int64sse4
- TransposeUint32Uint64 = transposeUint32Uint64sse4
-
- TransposeInt64Int8 = transposeInt64Int8sse4
- TransposeInt64Uint8 = transposeInt64Uint8sse4
- TransposeInt64Int16 = transposeInt64Int16sse4
- TransposeInt64Uint16 = transposeInt64Uint16sse4
- TransposeInt64Int32 = transposeInt64Int32sse4
- TransposeInt64Uint32 = transposeInt64Uint32sse4
- TransposeInt64Int64 = transposeInt64Int64sse4
- TransposeInt64Uint64 = transposeInt64Uint64sse4
-
- TransposeUint64Int8 = transposeUint64Int8sse4
- TransposeUint64Uint8 = transposeUint64Uint8sse4
- TransposeUint64Int16 = transposeUint64Int16sse4
- TransposeUint64Uint16 = transposeUint64Uint16sse4
- TransposeUint64Int32 = transposeUint64Int32sse4
- TransposeUint64Uint32 = transposeUint64Uint32sse4
- TransposeUint64Int64 = transposeUint64Int64sse4
- TransposeUint64Uint64 = transposeUint64Uint64sse4
-
- } else {
-
- TransposeInt8Int8 = transposeInt8Int8
- TransposeInt8Uint8 = transposeInt8Uint8
- TransposeInt8Int16 = transposeInt8Int16
- TransposeInt8Uint16 = transposeInt8Uint16
- TransposeInt8Int32 = transposeInt8Int32
- TransposeInt8Uint32 = transposeInt8Uint32
- TransposeInt8Int64 = transposeInt8Int64
- TransposeInt8Uint64 = transposeInt8Uint64
-
- TransposeUint8Int8 = transposeUint8Int8
- TransposeUint8Uint8 = transposeUint8Uint8
- TransposeUint8Int16 = transposeUint8Int16
- TransposeUint8Uint16 = transposeUint8Uint16
- TransposeUint8Int32 = transposeUint8Int32
- TransposeUint8Uint32 = transposeUint8Uint32
- TransposeUint8Int64 = transposeUint8Int64
- TransposeUint8Uint64 = transposeUint8Uint64
-
- TransposeInt16Int8 = transposeInt16Int8
- TransposeInt16Uint8 = transposeInt16Uint8
- TransposeInt16Int16 = transposeInt16Int16
- TransposeInt16Uint16 = transposeInt16Uint16
- TransposeInt16Int32 = transposeInt16Int32
- TransposeInt16Uint32 = transposeInt16Uint32
- TransposeInt16Int64 = transposeInt16Int64
- TransposeInt16Uint64 = transposeInt16Uint64
-
- TransposeUint16Int8 = transposeUint16Int8
- TransposeUint16Uint8 = transposeUint16Uint8
- TransposeUint16Int16 = transposeUint16Int16
- TransposeUint16Uint16 = transposeUint16Uint16
- TransposeUint16Int32 = transposeUint16Int32
- TransposeUint16Uint32 = transposeUint16Uint32
- TransposeUint16Int64 = transposeUint16Int64
- TransposeUint16Uint64 = transposeUint16Uint64
-
- TransposeInt32Int8 = transposeInt32Int8
- TransposeInt32Uint8 = transposeInt32Uint8
- TransposeInt32Int16 = transposeInt32Int16
- TransposeInt32Uint16 = transposeInt32Uint16
- TransposeInt32Int32 = transposeInt32Int32
- TransposeInt32Uint32 = transposeInt32Uint32
- TransposeInt32Int64 = transposeInt32Int64
- TransposeInt32Uint64 = transposeInt32Uint64
-
- TransposeUint32Int8 = transposeUint32Int8
- TransposeUint32Uint8 = transposeUint32Uint8
- TransposeUint32Int16 = transposeUint32Int16
- TransposeUint32Uint16 = transposeUint32Uint16
- TransposeUint32Int32 = transposeUint32Int32
- TransposeUint32Uint32 = transposeUint32Uint32
- TransposeUint32Int64 = transposeUint32Int64
- TransposeUint32Uint64 = transposeUint32Uint64
-
- TransposeInt64Int8 = transposeInt64Int8
- TransposeInt64Uint8 = transposeInt64Uint8
- TransposeInt64Int16 = transposeInt64Int16
- TransposeInt64Uint16 = transposeInt64Uint16
- TransposeInt64Int32 = transposeInt64Int32
- TransposeInt64Uint32 = transposeInt64Uint32
- TransposeInt64Int64 = transposeInt64Int64
- TransposeInt64Uint64 = transposeInt64Uint64
-
- TransposeUint64Int8 = transposeUint64Int8
- TransposeUint64Uint8 = transposeUint64Uint8
- TransposeUint64Int16 = transposeUint64Int16
- TransposeUint64Uint16 = transposeUint64Uint16
- TransposeUint64Int32 = transposeUint64Int32
- TransposeUint64Uint32 = transposeUint64Uint32
- TransposeUint64Int64 = transposeUint64Int64
- TransposeUint64Uint64 = transposeUint64Uint64
-
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go.tmpl
deleted file mode 100644
index eac0208e5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_amd64.go.tmpl
+++ /dev/null
@@ -1,75 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package utils
-
-import (
- "golang.org/x/sys/cpu"
-)
-
-var (
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} func([]{{$src}}, []{{$dest}}, []int32)
-{{end}}
-{{end}}
-)
-
-
-func init() {
- if cpu.X86.HasAVX2 {
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }}avx2
-{{end}}
-{{end}}
- } else if cpu.X86.HasSSE42 {
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }}sse4
-{{end}}
-{{end}}
- } else {
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} = transpose{{ $srcName }}{{ $destName }}
-{{end}}
-{{end}}
- }
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_arm64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_arm64.go
deleted file mode 100644
index cc957cdaa..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_arm64.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by transpose_ints_s390x.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
- TransposeInt8Int8 = transposeInt8Int8
- TransposeInt8Uint8 = transposeInt8Uint8
- TransposeInt8Int16 = transposeInt8Int16
- TransposeInt8Uint16 = transposeInt8Uint16
- TransposeInt8Int32 = transposeInt8Int32
- TransposeInt8Uint32 = transposeInt8Uint32
- TransposeInt8Int64 = transposeInt8Int64
- TransposeInt8Uint64 = transposeInt8Uint64
-
- TransposeUint8Int8 = transposeUint8Int8
- TransposeUint8Uint8 = transposeUint8Uint8
- TransposeUint8Int16 = transposeUint8Int16
- TransposeUint8Uint16 = transposeUint8Uint16
- TransposeUint8Int32 = transposeUint8Int32
- TransposeUint8Uint32 = transposeUint8Uint32
- TransposeUint8Int64 = transposeUint8Int64
- TransposeUint8Uint64 = transposeUint8Uint64
-
- TransposeInt16Int8 = transposeInt16Int8
- TransposeInt16Uint8 = transposeInt16Uint8
- TransposeInt16Int16 = transposeInt16Int16
- TransposeInt16Uint16 = transposeInt16Uint16
- TransposeInt16Int32 = transposeInt16Int32
- TransposeInt16Uint32 = transposeInt16Uint32
- TransposeInt16Int64 = transposeInt16Int64
- TransposeInt16Uint64 = transposeInt16Uint64
-
- TransposeUint16Int8 = transposeUint16Int8
- TransposeUint16Uint8 = transposeUint16Uint8
- TransposeUint16Int16 = transposeUint16Int16
- TransposeUint16Uint16 = transposeUint16Uint16
- TransposeUint16Int32 = transposeUint16Int32
- TransposeUint16Uint32 = transposeUint16Uint32
- TransposeUint16Int64 = transposeUint16Int64
- TransposeUint16Uint64 = transposeUint16Uint64
-
- TransposeInt32Int8 = transposeInt32Int8
- TransposeInt32Uint8 = transposeInt32Uint8
- TransposeInt32Int16 = transposeInt32Int16
- TransposeInt32Uint16 = transposeInt32Uint16
- TransposeInt32Int32 = transposeInt32Int32
- TransposeInt32Uint32 = transposeInt32Uint32
- TransposeInt32Int64 = transposeInt32Int64
- TransposeInt32Uint64 = transposeInt32Uint64
-
- TransposeUint32Int8 = transposeUint32Int8
- TransposeUint32Uint8 = transposeUint32Uint8
- TransposeUint32Int16 = transposeUint32Int16
- TransposeUint32Uint16 = transposeUint32Uint16
- TransposeUint32Int32 = transposeUint32Int32
- TransposeUint32Uint32 = transposeUint32Uint32
- TransposeUint32Int64 = transposeUint32Int64
- TransposeUint32Uint64 = transposeUint32Uint64
-
- TransposeInt64Int8 = transposeInt64Int8
- TransposeInt64Uint8 = transposeInt64Uint8
- TransposeInt64Int16 = transposeInt64Int16
- TransposeInt64Uint16 = transposeInt64Uint16
- TransposeInt64Int32 = transposeInt64Int32
- TransposeInt64Uint32 = transposeInt64Uint32
- TransposeInt64Int64 = transposeInt64Int64
- TransposeInt64Uint64 = transposeInt64Uint64
-
- TransposeUint64Int8 = transposeUint64Int8
- TransposeUint64Uint8 = transposeUint64Uint8
- TransposeUint64Int16 = transposeUint64Int16
- TransposeUint64Uint16 = transposeUint64Uint16
- TransposeUint64Int32 = transposeUint64Int32
- TransposeUint64Uint32 = transposeUint64Uint32
- TransposeUint64Int64 = transposeUint64Int64
- TransposeUint64Uint64 = transposeUint64Uint64
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.go
deleted file mode 100644
index f1421ddf5..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.go
+++ /dev/null
@@ -1,473 +0,0 @@
-// Code generated by transpose_ints_simd.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import (
- "unsafe"
-)
-
-//go:noescape
-func _transpose_int8_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int8avx2(src []int8, dest []int8, transposeMap []int32) {
- _transpose_int8_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint8avx2(src []int8, dest []uint8, transposeMap []int32) {
- _transpose_int8_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int16avx2(src []int8, dest []int16, transposeMap []int32) {
- _transpose_int8_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint16avx2(src []int8, dest []uint16, transposeMap []int32) {
- _transpose_int8_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int32avx2(src []int8, dest []int32, transposeMap []int32) {
- _transpose_int8_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint32avx2(src []int8, dest []uint32, transposeMap []int32) {
- _transpose_int8_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int64avx2(src []int8, dest []int64, transposeMap []int32) {
- _transpose_int8_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint64avx2(src []int8, dest []uint64, transposeMap []int32) {
- _transpose_int8_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int8avx2(src []uint8, dest []int8, transposeMap []int32) {
- _transpose_uint8_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint8avx2(src []uint8, dest []uint8, transposeMap []int32) {
- _transpose_uint8_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int16avx2(src []uint8, dest []int16, transposeMap []int32) {
- _transpose_uint8_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint16avx2(src []uint8, dest []uint16, transposeMap []int32) {
- _transpose_uint8_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int32avx2(src []uint8, dest []int32, transposeMap []int32) {
- _transpose_uint8_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint32avx2(src []uint8, dest []uint32, transposeMap []int32) {
- _transpose_uint8_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int64avx2(src []uint8, dest []int64, transposeMap []int32) {
- _transpose_uint8_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint64avx2(src []uint8, dest []uint64, transposeMap []int32) {
- _transpose_uint8_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int8avx2(src []int16, dest []int8, transposeMap []int32) {
- _transpose_int16_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint8avx2(src []int16, dest []uint8, transposeMap []int32) {
- _transpose_int16_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int16avx2(src []int16, dest []int16, transposeMap []int32) {
- _transpose_int16_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint16avx2(src []int16, dest []uint16, transposeMap []int32) {
- _transpose_int16_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int32avx2(src []int16, dest []int32, transposeMap []int32) {
- _transpose_int16_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint32avx2(src []int16, dest []uint32, transposeMap []int32) {
- _transpose_int16_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int64avx2(src []int16, dest []int64, transposeMap []int32) {
- _transpose_int16_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint64avx2(src []int16, dest []uint64, transposeMap []int32) {
- _transpose_int16_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int8avx2(src []uint16, dest []int8, transposeMap []int32) {
- _transpose_uint16_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint8avx2(src []uint16, dest []uint8, transposeMap []int32) {
- _transpose_uint16_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int16avx2(src []uint16, dest []int16, transposeMap []int32) {
- _transpose_uint16_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint16avx2(src []uint16, dest []uint16, transposeMap []int32) {
- _transpose_uint16_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int32avx2(src []uint16, dest []int32, transposeMap []int32) {
- _transpose_uint16_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint32avx2(src []uint16, dest []uint32, transposeMap []int32) {
- _transpose_uint16_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int64avx2(src []uint16, dest []int64, transposeMap []int32) {
- _transpose_uint16_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint64avx2(src []uint16, dest []uint64, transposeMap []int32) {
- _transpose_uint16_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int8avx2(src []int32, dest []int8, transposeMap []int32) {
- _transpose_int32_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint8avx2(src []int32, dest []uint8, transposeMap []int32) {
- _transpose_int32_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int16avx2(src []int32, dest []int16, transposeMap []int32) {
- _transpose_int32_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint16avx2(src []int32, dest []uint16, transposeMap []int32) {
- _transpose_int32_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int32avx2(src []int32, dest []int32, transposeMap []int32) {
- _transpose_int32_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint32avx2(src []int32, dest []uint32, transposeMap []int32) {
- _transpose_int32_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int64avx2(src []int32, dest []int64, transposeMap []int32) {
- _transpose_int32_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint64avx2(src []int32, dest []uint64, transposeMap []int32) {
- _transpose_int32_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int8avx2(src []uint32, dest []int8, transposeMap []int32) {
- _transpose_uint32_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint8avx2(src []uint32, dest []uint8, transposeMap []int32) {
- _transpose_uint32_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int16avx2(src []uint32, dest []int16, transposeMap []int32) {
- _transpose_uint32_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint16avx2(src []uint32, dest []uint16, transposeMap []int32) {
- _transpose_uint32_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int32avx2(src []uint32, dest []int32, transposeMap []int32) {
- _transpose_uint32_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint32avx2(src []uint32, dest []uint32, transposeMap []int32) {
- _transpose_uint32_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int64avx2(src []uint32, dest []int64, transposeMap []int32) {
- _transpose_uint32_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint64avx2(src []uint32, dest []uint64, transposeMap []int32) {
- _transpose_uint32_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int8avx2(src []int64, dest []int8, transposeMap []int32) {
- _transpose_int64_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint8avx2(src []int64, dest []uint8, transposeMap []int32) {
- _transpose_int64_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int16avx2(src []int64, dest []int16, transposeMap []int32) {
- _transpose_int64_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint16avx2(src []int64, dest []uint16, transposeMap []int32) {
- _transpose_int64_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int32avx2(src []int64, dest []int32, transposeMap []int32) {
- _transpose_int64_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint32avx2(src []int64, dest []uint32, transposeMap []int32) {
- _transpose_int64_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int64avx2(src []int64, dest []int64, transposeMap []int32) {
- _transpose_int64_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint64avx2(src []int64, dest []uint64, transposeMap []int32) {
- _transpose_int64_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int8avx2(src []uint64, dest []int8, transposeMap []int32) {
- _transpose_uint64_int8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint8_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint8avx2(src []uint64, dest []uint8, transposeMap []int32) {
- _transpose_uint64_uint8_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int16avx2(src []uint64, dest []int16, transposeMap []int32) {
- _transpose_uint64_int16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint16_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint16avx2(src []uint64, dest []uint16, transposeMap []int32) {
- _transpose_uint64_uint16_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int32avx2(src []uint64, dest []int32, transposeMap []int32) {
- _transpose_uint64_int32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint32_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint32avx2(src []uint64, dest []uint32, transposeMap []int32) {
- _transpose_uint64_uint32_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int64avx2(src []uint64, dest []int64, transposeMap []int32) {
- _transpose_uint64_int64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint64_avx2(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint64avx2(src []uint64, dest []uint64, transposeMap []int32) {
- _transpose_uint64_uint64_avx2(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.s b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.s
deleted file mode 100644
index fbcc101eb..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_avx2_amd64.s
+++ /dev/null
@@ -1,3074 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_transpose_uint8_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB0_1
-
-LBB0_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB0_5
-
-LBB0_1:
- WORD $0xd285 // test edx, edx
- JLE LBB0_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB0_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB0_3
-
-LBB0_4:
- RET
-
-TEXT ·_transpose_int8_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB1_1
-
-LBB1_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB1_5
-
-LBB1_1:
- WORD $0xd285 // test edx, edx
- JLE LBB1_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB1_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB1_3
-
-LBB1_4:
- RET
-
-TEXT ·_transpose_uint16_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB2_1
-
-LBB2_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB2_5
-
-LBB2_1:
- WORD $0xd285 // test edx, edx
- JLE LBB2_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB2_3:
- LONG $0x04b70f42; BYTE $0x47 // movzx eax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB2_3
-
-LBB2_4:
- RET
-
-TEXT ·_transpose_int16_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB3_1
-
-LBB3_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB3_5
-
-LBB3_1:
- WORD $0xd285 // test edx, edx
- JLE LBB3_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB3_3:
- LONG $0x04bf0f4a; BYTE $0x47 // movsx rax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB3_3
-
-LBB3_4:
- RET
-
-TEXT ·_transpose_uint32_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB4_1
-
-LBB4_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB4_5
-
-LBB4_1:
- WORD $0xd285 // test edx, edx
- JLE LBB4_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB4_3:
- LONG $0x87048b42 // mov eax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB4_3
-
-LBB4_4:
- RET
-
-TEXT ·_transpose_int32_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB5_1
-
-LBB5_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB5_5
-
-LBB5_1:
- WORD $0xd285 // test edx, edx
- JLE LBB5_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB5_3:
- LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB5_3
-
-LBB5_4:
- RET
-
-TEXT ·_transpose_uint64_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB6_1
-
-LBB6_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB6_5
-
-LBB6_1:
- WORD $0xd285 // test edx, edx
- JLE LBB6_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB6_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB6_3
-
-LBB6_4:
- RET
-
-TEXT ·_transpose_int64_uint8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB7_1
-
-LBB7_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB7_5
-
-LBB7_1:
- WORD $0xd285 // test edx, edx
- JLE LBB7_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB7_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB7_3
-
-LBB7_4:
- RET
-
-TEXT ·_transpose_uint8_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB8_1
-
-LBB8_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB8_5
-
-LBB8_1:
- WORD $0xd285 // test edx, edx
- JLE LBB8_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB8_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB8_3
-
-LBB8_4:
- RET
-
-TEXT ·_transpose_int8_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB9_1
-
-LBB9_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB9_5
-
-LBB9_1:
- WORD $0xd285 // test edx, edx
- JLE LBB9_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB9_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB9_3
-
-LBB9_4:
- RET
-
-TEXT ·_transpose_uint16_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB10_1
-
-LBB10_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB10_5
-
-LBB10_1:
- WORD $0xd285 // test edx, edx
- JLE LBB10_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB10_3:
- LONG $0x04b70f42; BYTE $0x47 // movzx eax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB10_3
-
-LBB10_4:
- RET
-
-TEXT ·_transpose_int16_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB11_1
-
-LBB11_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB11_5
-
-LBB11_1:
- WORD $0xd285 // test edx, edx
- JLE LBB11_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB11_3:
- LONG $0x04bf0f4a; BYTE $0x47 // movsx rax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB11_3
-
-LBB11_4:
- RET
-
-TEXT ·_transpose_uint32_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB12_1
-
-LBB12_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB12_5
-
-LBB12_1:
- WORD $0xd285 // test edx, edx
- JLE LBB12_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB12_3:
- LONG $0x87048b42 // mov eax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB12_3
-
-LBB12_4:
- RET
-
-TEXT ·_transpose_int32_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB13_1
-
-LBB13_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB13_5
-
-LBB13_1:
- WORD $0xd285 // test edx, edx
- JLE LBB13_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB13_3:
- LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB13_3
-
-LBB13_4:
- RET
-
-TEXT ·_transpose_uint64_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB14_1
-
-LBB14_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB14_5
-
-LBB14_1:
- WORD $0xd285 // test edx, edx
- JLE LBB14_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB14_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB14_3
-
-LBB14_4:
- RET
-
-TEXT ·_transpose_int64_int8_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB15_1
-
-LBB15_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB15_5
-
-LBB15_1:
- WORD $0xd285 // test edx, edx
- JLE LBB15_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB15_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB15_3
-
-LBB15_4:
- RET
-
-TEXT ·_transpose_uint8_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB16_1
-
-LBB16_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB16_5
-
-LBB16_1:
- WORD $0xd285 // test edx, edx
- JLE LBB16_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB16_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB16_3
-
-LBB16_4:
- RET
-
-TEXT ·_transpose_int8_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB17_1
-
-LBB17_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB17_5
-
-LBB17_1:
- WORD $0xd285 // test edx, edx
- JLE LBB17_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB17_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB17_3
-
-LBB17_4:
- RET
-
-TEXT ·_transpose_uint16_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB18_1
-
-LBB18_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB18_5
-
-LBB18_1:
- WORD $0xd285 // test edx, edx
- JLE LBB18_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB18_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB18_3
-
-LBB18_4:
- RET
-
-TEXT ·_transpose_int16_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB19_1
-
-LBB19_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB19_5
-
-LBB19_1:
- WORD $0xd285 // test edx, edx
- JLE LBB19_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB19_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB19_3
-
-LBB19_4:
- RET
-
-TEXT ·_transpose_uint32_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB20_1
-
-LBB20_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB20_5
-
-LBB20_1:
- WORD $0xd285 // test edx, edx
- JLE LBB20_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB20_3:
- LONG $0x47048b42 // mov eax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB20_3
-
-LBB20_4:
- RET
-
-TEXT ·_transpose_int32_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB21_1
-
-LBB21_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB21_5
-
-LBB21_1:
- WORD $0xd285 // test edx, edx
- JLE LBB21_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB21_3:
- LONG $0x4704634a // movsxd rax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB21_3
-
-LBB21_4:
- RET
-
-TEXT ·_transpose_uint64_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB22_1
-
-LBB22_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB22_5
-
-LBB22_1:
- WORD $0xd285 // test edx, edx
- JLE LBB22_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB22_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB22_3
-
-LBB22_4:
- RET
-
-TEXT ·_transpose_int64_uint16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB23_1
-
-LBB23_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB23_5
-
-LBB23_1:
- WORD $0xd285 // test edx, edx
- JLE LBB23_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB23_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB23_3
-
-LBB23_4:
- RET
-
-TEXT ·_transpose_uint8_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB24_1
-
-LBB24_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB24_5
-
-LBB24_1:
- WORD $0xd285 // test edx, edx
- JLE LBB24_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB24_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB24_3
-
-LBB24_4:
- RET
-
-TEXT ·_transpose_int8_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB25_1
-
-LBB25_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB25_5
-
-LBB25_1:
- WORD $0xd285 // test edx, edx
- JLE LBB25_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB25_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB25_3
-
-LBB25_4:
- RET
-
-TEXT ·_transpose_uint16_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB26_1
-
-LBB26_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB26_5
-
-LBB26_1:
- WORD $0xd285 // test edx, edx
- JLE LBB26_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB26_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB26_3
-
-LBB26_4:
- RET
-
-TEXT ·_transpose_int16_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB27_1
-
-LBB27_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB27_5
-
-LBB27_1:
- WORD $0xd285 // test edx, edx
- JLE LBB27_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB27_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB27_3
-
-LBB27_4:
- RET
-
-TEXT ·_transpose_uint32_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB28_1
-
-LBB28_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB28_5
-
-LBB28_1:
- WORD $0xd285 // test edx, edx
- JLE LBB28_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB28_3:
- LONG $0x47048b42 // mov eax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB28_3
-
-LBB28_4:
- RET
-
-TEXT ·_transpose_int32_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB29_1
-
-LBB29_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB29_5
-
-LBB29_1:
- WORD $0xd285 // test edx, edx
- JLE LBB29_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB29_3:
- LONG $0x4704634a // movsxd rax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB29_3
-
-LBB29_4:
- RET
-
-TEXT ·_transpose_uint64_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB30_1
-
-LBB30_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB30_5
-
-LBB30_1:
- WORD $0xd285 // test edx, edx
- JLE LBB30_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB30_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB30_3
-
-LBB30_4:
- RET
-
-TEXT ·_transpose_int64_int16_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB31_1
-
-LBB31_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB31_5
-
-LBB31_1:
- WORD $0xd285 // test edx, edx
- JLE LBB31_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB31_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB31_3
-
-LBB31_4:
- RET
-
-TEXT ·_transpose_uint8_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB32_1
-
-LBB32_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB32_5
-
-LBB32_1:
- WORD $0xd285 // test edx, edx
- JLE LBB32_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB32_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB32_3
-
-LBB32_4:
- RET
-
-TEXT ·_transpose_int8_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB33_1
-
-LBB33_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB33_5
-
-LBB33_1:
- WORD $0xd285 // test edx, edx
- JLE LBB33_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB33_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB33_3
-
-LBB33_4:
- RET
-
-TEXT ·_transpose_uint16_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB34_1
-
-LBB34_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB34_5
-
-LBB34_1:
- WORD $0xd285 // test edx, edx
- JLE LBB34_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB34_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB34_3
-
-LBB34_4:
- RET
-
-TEXT ·_transpose_int16_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB35_1
-
-LBB35_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB35_5
-
-LBB35_1:
- WORD $0xd285 // test edx, edx
- JLE LBB35_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB35_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB35_3
-
-LBB35_4:
- RET
-
-TEXT ·_transpose_uint32_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB36_1
-
-LBB36_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB36_5
-
-LBB36_1:
- WORD $0xd285 // test edx, edx
- JLE LBB36_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB36_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB36_3
-
-LBB36_4:
- RET
-
-TEXT ·_transpose_int32_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB37_1
-
-LBB37_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB37_5
-
-LBB37_1:
- WORD $0xd285 // test edx, edx
- JLE LBB37_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB37_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB37_3
-
-LBB37_4:
- RET
-
-TEXT ·_transpose_uint64_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB38_1
-
-LBB38_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB38_5
-
-LBB38_1:
- WORD $0xd285 // test edx, edx
- JLE LBB38_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB38_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB38_3
-
-LBB38_4:
- RET
-
-TEXT ·_transpose_int64_uint32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB39_1
-
-LBB39_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB39_5
-
-LBB39_1:
- WORD $0xd285 // test edx, edx
- JLE LBB39_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB39_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB39_3
-
-LBB39_4:
- RET
-
-TEXT ·_transpose_uint8_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB40_1
-
-LBB40_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB40_5
-
-LBB40_1:
- WORD $0xd285 // test edx, edx
- JLE LBB40_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB40_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB40_3
-
-LBB40_4:
- RET
-
-TEXT ·_transpose_int8_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB41_1
-
-LBB41_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB41_5
-
-LBB41_1:
- WORD $0xd285 // test edx, edx
- JLE LBB41_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB41_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB41_3
-
-LBB41_4:
- RET
-
-TEXT ·_transpose_uint16_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB42_1
-
-LBB42_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB42_5
-
-LBB42_1:
- WORD $0xd285 // test edx, edx
- JLE LBB42_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB42_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB42_3
-
-LBB42_4:
- RET
-
-TEXT ·_transpose_int16_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB43_1
-
-LBB43_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB43_5
-
-LBB43_1:
- WORD $0xd285 // test edx, edx
- JLE LBB43_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB43_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB43_3
-
-LBB43_4:
- RET
-
-TEXT ·_transpose_uint32_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB44_1
-
-LBB44_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB44_5
-
-LBB44_1:
- WORD $0xd285 // test edx, edx
- JLE LBB44_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB44_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB44_3
-
-LBB44_4:
- RET
-
-TEXT ·_transpose_int32_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB45_1
-
-LBB45_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB45_5
-
-LBB45_1:
- WORD $0xd285 // test edx, edx
- JLE LBB45_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB45_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB45_3
-
-LBB45_4:
- RET
-
-TEXT ·_transpose_uint64_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB46_1
-
-LBB46_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB46_5
-
-LBB46_1:
- WORD $0xd285 // test edx, edx
- JLE LBB46_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB46_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB46_3
-
-LBB46_4:
- RET
-
-TEXT ·_transpose_int64_int32_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB47_1
-
-LBB47_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB47_5
-
-LBB47_1:
- WORD $0xd285 // test edx, edx
- JLE LBB47_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB47_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB47_3
-
-LBB47_4:
- RET
-
-TEXT ·_transpose_uint8_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB48_1
-
-LBB48_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB48_5
-
-LBB48_1:
- WORD $0xd285 // test edx, edx
- JLE LBB48_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB48_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB48_3
-
-LBB48_4:
- RET
-
-TEXT ·_transpose_int8_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB49_1
-
-LBB49_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB49_5
-
-LBB49_1:
- WORD $0xd285 // test edx, edx
- JLE LBB49_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB49_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB49_3
-
-LBB49_4:
- RET
-
-TEXT ·_transpose_uint16_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB50_1
-
-LBB50_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB50_5
-
-LBB50_1:
- WORD $0xd285 // test edx, edx
- JLE LBB50_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB50_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB50_3
-
-LBB50_4:
- RET
-
-TEXT ·_transpose_int16_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB51_1
-
-LBB51_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB51_5
-
-LBB51_1:
- WORD $0xd285 // test edx, edx
- JLE LBB51_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB51_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB51_3
-
-LBB51_4:
- RET
-
-TEXT ·_transpose_uint32_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB52_1
-
-LBB52_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB52_5
-
-LBB52_1:
- WORD $0xd285 // test edx, edx
- JLE LBB52_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB52_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB52_3
-
-LBB52_4:
- RET
-
-TEXT ·_transpose_int32_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB53_1
-
-LBB53_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB53_5
-
-LBB53_1:
- WORD $0xd285 // test edx, edx
- JLE LBB53_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB53_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB53_3
-
-LBB53_4:
- RET
-
-TEXT ·_transpose_uint64_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB54_1
-
-LBB54_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB54_5
-
-LBB54_1:
- WORD $0xd285 // test edx, edx
- JLE LBB54_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB54_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB54_3
-
-LBB54_4:
- RET
-
-TEXT ·_transpose_int64_uint64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB55_1
-
-LBB55_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB55_5
-
-LBB55_1:
- WORD $0xd285 // test edx, edx
- JLE LBB55_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB55_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB55_3
-
-LBB55_4:
- RET
-
-TEXT ·_transpose_uint8_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB56_1
-
-LBB56_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB56_5
-
-LBB56_1:
- WORD $0xd285 // test edx, edx
- JLE LBB56_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB56_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB56_3
-
-LBB56_4:
- RET
-
-TEXT ·_transpose_int8_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB57_1
-
-LBB57_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB57_5
-
-LBB57_1:
- WORD $0xd285 // test edx, edx
- JLE LBB57_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB57_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB57_3
-
-LBB57_4:
- RET
-
-TEXT ·_transpose_uint16_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB58_1
-
-LBB58_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB58_5
-
-LBB58_1:
- WORD $0xd285 // test edx, edx
- JLE LBB58_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB58_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB58_3
-
-LBB58_4:
- RET
-
-TEXT ·_transpose_int16_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB59_1
-
-LBB59_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB59_5
-
-LBB59_1:
- WORD $0xd285 // test edx, edx
- JLE LBB59_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB59_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB59_3
-
-LBB59_4:
- RET
-
-TEXT ·_transpose_uint32_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB60_1
-
-LBB60_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB60_5
-
-LBB60_1:
- WORD $0xd285 // test edx, edx
- JLE LBB60_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB60_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB60_3
-
-LBB60_4:
- RET
-
-TEXT ·_transpose_int32_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB61_1
-
-LBB61_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB61_5
-
-LBB61_1:
- WORD $0xd285 // test edx, edx
- JLE LBB61_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB61_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB61_3
-
-LBB61_4:
- RET
-
-TEXT ·_transpose_uint64_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB62_1
-
-LBB62_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB62_5
-
-LBB62_1:
- WORD $0xd285 // test edx, edx
- JLE LBB62_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB62_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB62_3
-
-LBB62_4:
- RET
-
-TEXT ·_transpose_int64_int64_avx2(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB63_1
-
-LBB63_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB63_5
-
-LBB63_1:
- WORD $0xd285 // test edx, edx
- JLE LBB63_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB63_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB63_3
-
-LBB63_4:
- RET
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_def.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_def.go
deleted file mode 100644
index c52598d71..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_def.go
+++ /dev/null
@@ -1,227 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package utils
-
-import (
- "errors"
-
- "github.com/apache/arrow/go/v15/arrow"
-)
-
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata -d arch=avx2 transpose_ints_simd.go.tmpl=transpose_ints_avx2_amd64.go
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata -d arch=sse4 transpose_ints_simd.go.tmpl=transpose_ints_sse4_amd64.go
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata transpose_ints_s390x.go.tmpl=transpose_ints_s390x.go
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata transpose_ints_s390x.go.tmpl=transpose_ints_arm64.go
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata transpose_ints_noasm.go.tmpl=transpose_ints_noasm.go
-//go:generate go run ../../arrow/_tools/tmpl -i -data=transpose_ints.tmpldata transpose_ints.go.tmpl=transpose_ints.go
-
-func bufToTyped(typ arrow.DataType, buf []byte, offset, length int) (interface{}, error) {
- switch typ.ID() {
- case arrow.INT8:
- return arrow.Int8Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.INT16:
- return arrow.Int16Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.INT32:
- return arrow.Int32Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.INT64:
- return arrow.Int64Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.UINT8:
- return arrow.Uint8Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.UINT16:
- return arrow.Uint16Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.UINT32:
- return arrow.Uint32Traits.CastFromBytes(buf)[offset : offset+length], nil
- case arrow.UINT64:
- return arrow.Uint64Traits.CastFromBytes(buf)[offset : offset+length], nil
- }
- return nil, errors.New("only accepts integral types")
-}
-
-// TransposeIntsBuffers takes the data-types, byte buffers, and offsets of a source and destination
-// buffer to perform TransposeInts on with the provided mapping data.
-func TransposeIntsBuffers(inType, outType arrow.DataType, indata, outdata []byte, inOffset, outOffset int, length int, transposeMap []int32) error {
- src, err := bufToTyped(inType, indata, inOffset, length)
- if err != nil {
- return err
- }
- dest, err := bufToTyped(outType, outdata, outOffset, length)
- if err != nil {
- return err
- }
-
- return TransposeInts(src, dest, transposeMap)
-}
-
-// TransposeInts expects two integral slices and the values they map to. Returning
-// an error if either src or dest are not an integral type.
-func TransposeInts(src, dest interface{}, mapping []int32) error {
- switch s := src.(type) {
- case []int8:
- switch d := dest.(type) {
- case []int8:
- TransposeInt8Int8(s, d, mapping)
- case []int16:
- TransposeInt8Int16(s, d, mapping)
- case []int32:
- TransposeInt8Int32(s, d, mapping)
- case []int64:
- TransposeInt8Int64(s, d, mapping)
- case []uint8:
- TransposeInt8Uint8(s, d, mapping)
- case []uint16:
- TransposeInt8Uint16(s, d, mapping)
- case []uint32:
- TransposeInt8Uint32(s, d, mapping)
- case []uint64:
- TransposeInt8Uint64(s, d, mapping)
- }
- case []int16:
- switch d := dest.(type) {
- case []int8:
- TransposeInt16Int8(s, d, mapping)
- case []int16:
- TransposeInt16Int16(s, d, mapping)
- case []int32:
- TransposeInt16Int32(s, d, mapping)
- case []int64:
- TransposeInt16Int64(s, d, mapping)
- case []uint8:
- TransposeInt16Uint8(s, d, mapping)
- case []uint16:
- TransposeInt16Uint16(s, d, mapping)
- case []uint32:
- TransposeInt16Uint32(s, d, mapping)
- case []uint64:
- TransposeInt16Uint64(s, d, mapping)
- }
- case []int32:
- switch d := dest.(type) {
- case []int8:
- TransposeInt32Int8(s, d, mapping)
- case []int16:
- TransposeInt32Int16(s, d, mapping)
- case []int32:
- TransposeInt32Int32(s, d, mapping)
- case []int64:
- TransposeInt32Int64(s, d, mapping)
- case []uint8:
- TransposeInt32Uint8(s, d, mapping)
- case []uint16:
- TransposeInt32Uint16(s, d, mapping)
- case []uint32:
- TransposeInt32Uint32(s, d, mapping)
- case []uint64:
- TransposeInt32Uint64(s, d, mapping)
- }
- case []int64:
- switch d := dest.(type) {
- case []int8:
- TransposeInt64Int8(s, d, mapping)
- case []int16:
- TransposeInt64Int16(s, d, mapping)
- case []int32:
- TransposeInt64Int32(s, d, mapping)
- case []int64:
- TransposeInt64Int64(s, d, mapping)
- case []uint8:
- TransposeInt64Uint8(s, d, mapping)
- case []uint16:
- TransposeInt64Uint16(s, d, mapping)
- case []uint32:
- TransposeInt64Uint32(s, d, mapping)
- case []uint64:
- TransposeInt64Uint64(s, d, mapping)
- }
- case []uint8:
- switch d := dest.(type) {
- case []int8:
- TransposeUint8Int8(s, d, mapping)
- case []int16:
- TransposeUint8Int16(s, d, mapping)
- case []int32:
- TransposeUint8Int32(s, d, mapping)
- case []int64:
- TransposeUint8Int64(s, d, mapping)
- case []uint8:
- TransposeUint8Uint8(s, d, mapping)
- case []uint16:
- TransposeUint8Uint16(s, d, mapping)
- case []uint32:
- TransposeUint8Uint32(s, d, mapping)
- case []uint64:
- TransposeUint8Uint64(s, d, mapping)
- }
- case []uint16:
- switch d := dest.(type) {
- case []int8:
- TransposeUint16Int8(s, d, mapping)
- case []int16:
- TransposeUint16Int16(s, d, mapping)
- case []int32:
- TransposeUint16Int32(s, d, mapping)
- case []int64:
- TransposeUint16Int64(s, d, mapping)
- case []uint8:
- TransposeUint16Uint8(s, d, mapping)
- case []uint16:
- TransposeUint16Uint16(s, d, mapping)
- case []uint32:
- TransposeUint16Uint32(s, d, mapping)
- case []uint64:
- TransposeUint16Uint64(s, d, mapping)
- }
- case []uint32:
- switch d := dest.(type) {
- case []int8:
- TransposeUint32Int8(s, d, mapping)
- case []int16:
- TransposeUint32Int16(s, d, mapping)
- case []int32:
- TransposeUint32Int32(s, d, mapping)
- case []int64:
- TransposeUint32Int64(s, d, mapping)
- case []uint8:
- TransposeUint32Uint8(s, d, mapping)
- case []uint16:
- TransposeUint32Uint16(s, d, mapping)
- case []uint32:
- TransposeUint32Uint32(s, d, mapping)
- case []uint64:
- TransposeUint32Uint64(s, d, mapping)
- }
- case []uint64:
- switch d := dest.(type) {
- case []int8:
- TransposeUint64Int8(s, d, mapping)
- case []int16:
- TransposeUint64Int16(s, d, mapping)
- case []int32:
- TransposeUint64Int32(s, d, mapping)
- case []int64:
- TransposeUint64Int64(s, d, mapping)
- case []uint8:
- TransposeUint64Uint8(s, d, mapping)
- case []uint16:
- TransposeUint64Uint16(s, d, mapping)
- case []uint32:
- TransposeUint64Uint32(s, d, mapping)
- case []uint64:
- TransposeUint64Uint64(s, d, mapping)
- }
- }
- return nil
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go
deleted file mode 100644
index 461aaf31f..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by transpose_ints_noasm.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build noasm || (!amd64 && !arm64 && !s390x && !ppc64le)
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
- TransposeInt8Int8 = transposeInt8Int8
- TransposeInt8Uint8 = transposeInt8Uint8
- TransposeInt8Int16 = transposeInt8Int16
- TransposeInt8Uint16 = transposeInt8Uint16
- TransposeInt8Int32 = transposeInt8Int32
- TransposeInt8Uint32 = transposeInt8Uint32
- TransposeInt8Int64 = transposeInt8Int64
- TransposeInt8Uint64 = transposeInt8Uint64
-
- TransposeUint8Int8 = transposeUint8Int8
- TransposeUint8Uint8 = transposeUint8Uint8
- TransposeUint8Int16 = transposeUint8Int16
- TransposeUint8Uint16 = transposeUint8Uint16
- TransposeUint8Int32 = transposeUint8Int32
- TransposeUint8Uint32 = transposeUint8Uint32
- TransposeUint8Int64 = transposeUint8Int64
- TransposeUint8Uint64 = transposeUint8Uint64
-
- TransposeInt16Int8 = transposeInt16Int8
- TransposeInt16Uint8 = transposeInt16Uint8
- TransposeInt16Int16 = transposeInt16Int16
- TransposeInt16Uint16 = transposeInt16Uint16
- TransposeInt16Int32 = transposeInt16Int32
- TransposeInt16Uint32 = transposeInt16Uint32
- TransposeInt16Int64 = transposeInt16Int64
- TransposeInt16Uint64 = transposeInt16Uint64
-
- TransposeUint16Int8 = transposeUint16Int8
- TransposeUint16Uint8 = transposeUint16Uint8
- TransposeUint16Int16 = transposeUint16Int16
- TransposeUint16Uint16 = transposeUint16Uint16
- TransposeUint16Int32 = transposeUint16Int32
- TransposeUint16Uint32 = transposeUint16Uint32
- TransposeUint16Int64 = transposeUint16Int64
- TransposeUint16Uint64 = transposeUint16Uint64
-
- TransposeInt32Int8 = transposeInt32Int8
- TransposeInt32Uint8 = transposeInt32Uint8
- TransposeInt32Int16 = transposeInt32Int16
- TransposeInt32Uint16 = transposeInt32Uint16
- TransposeInt32Int32 = transposeInt32Int32
- TransposeInt32Uint32 = transposeInt32Uint32
- TransposeInt32Int64 = transposeInt32Int64
- TransposeInt32Uint64 = transposeInt32Uint64
-
- TransposeUint32Int8 = transposeUint32Int8
- TransposeUint32Uint8 = transposeUint32Uint8
- TransposeUint32Int16 = transposeUint32Int16
- TransposeUint32Uint16 = transposeUint32Uint16
- TransposeUint32Int32 = transposeUint32Int32
- TransposeUint32Uint32 = transposeUint32Uint32
- TransposeUint32Int64 = transposeUint32Int64
- TransposeUint32Uint64 = transposeUint32Uint64
-
- TransposeInt64Int8 = transposeInt64Int8
- TransposeInt64Uint8 = transposeInt64Uint8
- TransposeInt64Int16 = transposeInt64Int16
- TransposeInt64Uint16 = transposeInt64Uint16
- TransposeInt64Int32 = transposeInt64Int32
- TransposeInt64Uint32 = transposeInt64Uint32
- TransposeInt64Int64 = transposeInt64Int64
- TransposeInt64Uint64 = transposeInt64Uint64
-
- TransposeUint64Int8 = transposeUint64Int8
- TransposeUint64Uint8 = transposeUint64Uint8
- TransposeUint64Int16 = transposeUint64Int16
- TransposeUint64Uint16 = transposeUint64Uint16
- TransposeUint64Int32 = transposeUint64Int32
- TransposeUint64Uint32 = transposeUint64Uint32
- TransposeUint64Int64 = transposeUint64Int64
- TransposeUint64Uint64 = transposeUint64Uint64
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go.tmpl
deleted file mode 100644
index faffdce35..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_noasm.go.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build noasm
-// +build noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} = transpose{{$srcName}}{{$destName}}
-{{end}}
-{{end}}
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_ppc64le.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_ppc64le.go
deleted file mode 100644
index cc957cdaa..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_ppc64le.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by transpose_ints_s390x.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
- TransposeInt8Int8 = transposeInt8Int8
- TransposeInt8Uint8 = transposeInt8Uint8
- TransposeInt8Int16 = transposeInt8Int16
- TransposeInt8Uint16 = transposeInt8Uint16
- TransposeInt8Int32 = transposeInt8Int32
- TransposeInt8Uint32 = transposeInt8Uint32
- TransposeInt8Int64 = transposeInt8Int64
- TransposeInt8Uint64 = transposeInt8Uint64
-
- TransposeUint8Int8 = transposeUint8Int8
- TransposeUint8Uint8 = transposeUint8Uint8
- TransposeUint8Int16 = transposeUint8Int16
- TransposeUint8Uint16 = transposeUint8Uint16
- TransposeUint8Int32 = transposeUint8Int32
- TransposeUint8Uint32 = transposeUint8Uint32
- TransposeUint8Int64 = transposeUint8Int64
- TransposeUint8Uint64 = transposeUint8Uint64
-
- TransposeInt16Int8 = transposeInt16Int8
- TransposeInt16Uint8 = transposeInt16Uint8
- TransposeInt16Int16 = transposeInt16Int16
- TransposeInt16Uint16 = transposeInt16Uint16
- TransposeInt16Int32 = transposeInt16Int32
- TransposeInt16Uint32 = transposeInt16Uint32
- TransposeInt16Int64 = transposeInt16Int64
- TransposeInt16Uint64 = transposeInt16Uint64
-
- TransposeUint16Int8 = transposeUint16Int8
- TransposeUint16Uint8 = transposeUint16Uint8
- TransposeUint16Int16 = transposeUint16Int16
- TransposeUint16Uint16 = transposeUint16Uint16
- TransposeUint16Int32 = transposeUint16Int32
- TransposeUint16Uint32 = transposeUint16Uint32
- TransposeUint16Int64 = transposeUint16Int64
- TransposeUint16Uint64 = transposeUint16Uint64
-
- TransposeInt32Int8 = transposeInt32Int8
- TransposeInt32Uint8 = transposeInt32Uint8
- TransposeInt32Int16 = transposeInt32Int16
- TransposeInt32Uint16 = transposeInt32Uint16
- TransposeInt32Int32 = transposeInt32Int32
- TransposeInt32Uint32 = transposeInt32Uint32
- TransposeInt32Int64 = transposeInt32Int64
- TransposeInt32Uint64 = transposeInt32Uint64
-
- TransposeUint32Int8 = transposeUint32Int8
- TransposeUint32Uint8 = transposeUint32Uint8
- TransposeUint32Int16 = transposeUint32Int16
- TransposeUint32Uint16 = transposeUint32Uint16
- TransposeUint32Int32 = transposeUint32Int32
- TransposeUint32Uint32 = transposeUint32Uint32
- TransposeUint32Int64 = transposeUint32Int64
- TransposeUint32Uint64 = transposeUint32Uint64
-
- TransposeInt64Int8 = transposeInt64Int8
- TransposeInt64Uint8 = transposeInt64Uint8
- TransposeInt64Int16 = transposeInt64Int16
- TransposeInt64Uint16 = transposeInt64Uint16
- TransposeInt64Int32 = transposeInt64Int32
- TransposeInt64Uint32 = transposeInt64Uint32
- TransposeInt64Int64 = transposeInt64Int64
- TransposeInt64Uint64 = transposeInt64Uint64
-
- TransposeUint64Int8 = transposeUint64Int8
- TransposeUint64Uint8 = transposeUint64Uint8
- TransposeUint64Int16 = transposeUint64Int16
- TransposeUint64Uint16 = transposeUint64Uint16
- TransposeUint64Int32 = transposeUint64Int32
- TransposeUint64Uint32 = transposeUint64Uint32
- TransposeUint64Int64 = transposeUint64Int64
- TransposeUint64Uint64 = transposeUint64Uint64
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go
deleted file mode 100644
index cc957cdaa..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Code generated by transpose_ints_s390x.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
- TransposeInt8Int8 = transposeInt8Int8
- TransposeInt8Uint8 = transposeInt8Uint8
- TransposeInt8Int16 = transposeInt8Int16
- TransposeInt8Uint16 = transposeInt8Uint16
- TransposeInt8Int32 = transposeInt8Int32
- TransposeInt8Uint32 = transposeInt8Uint32
- TransposeInt8Int64 = transposeInt8Int64
- TransposeInt8Uint64 = transposeInt8Uint64
-
- TransposeUint8Int8 = transposeUint8Int8
- TransposeUint8Uint8 = transposeUint8Uint8
- TransposeUint8Int16 = transposeUint8Int16
- TransposeUint8Uint16 = transposeUint8Uint16
- TransposeUint8Int32 = transposeUint8Int32
- TransposeUint8Uint32 = transposeUint8Uint32
- TransposeUint8Int64 = transposeUint8Int64
- TransposeUint8Uint64 = transposeUint8Uint64
-
- TransposeInt16Int8 = transposeInt16Int8
- TransposeInt16Uint8 = transposeInt16Uint8
- TransposeInt16Int16 = transposeInt16Int16
- TransposeInt16Uint16 = transposeInt16Uint16
- TransposeInt16Int32 = transposeInt16Int32
- TransposeInt16Uint32 = transposeInt16Uint32
- TransposeInt16Int64 = transposeInt16Int64
- TransposeInt16Uint64 = transposeInt16Uint64
-
- TransposeUint16Int8 = transposeUint16Int8
- TransposeUint16Uint8 = transposeUint16Uint8
- TransposeUint16Int16 = transposeUint16Int16
- TransposeUint16Uint16 = transposeUint16Uint16
- TransposeUint16Int32 = transposeUint16Int32
- TransposeUint16Uint32 = transposeUint16Uint32
- TransposeUint16Int64 = transposeUint16Int64
- TransposeUint16Uint64 = transposeUint16Uint64
-
- TransposeInt32Int8 = transposeInt32Int8
- TransposeInt32Uint8 = transposeInt32Uint8
- TransposeInt32Int16 = transposeInt32Int16
- TransposeInt32Uint16 = transposeInt32Uint16
- TransposeInt32Int32 = transposeInt32Int32
- TransposeInt32Uint32 = transposeInt32Uint32
- TransposeInt32Int64 = transposeInt32Int64
- TransposeInt32Uint64 = transposeInt32Uint64
-
- TransposeUint32Int8 = transposeUint32Int8
- TransposeUint32Uint8 = transposeUint32Uint8
- TransposeUint32Int16 = transposeUint32Int16
- TransposeUint32Uint16 = transposeUint32Uint16
- TransposeUint32Int32 = transposeUint32Int32
- TransposeUint32Uint32 = transposeUint32Uint32
- TransposeUint32Int64 = transposeUint32Int64
- TransposeUint32Uint64 = transposeUint32Uint64
-
- TransposeInt64Int8 = transposeInt64Int8
- TransposeInt64Uint8 = transposeInt64Uint8
- TransposeInt64Int16 = transposeInt64Int16
- TransposeInt64Uint16 = transposeInt64Uint16
- TransposeInt64Int32 = transposeInt64Int32
- TransposeInt64Uint32 = transposeInt64Uint32
- TransposeInt64Int64 = transposeInt64Int64
- TransposeInt64Uint64 = transposeInt64Uint64
-
- TransposeUint64Int8 = transposeUint64Int8
- TransposeUint64Uint8 = transposeUint64Uint8
- TransposeUint64Int16 = transposeUint64Int16
- TransposeUint64Uint16 = transposeUint64Uint16
- TransposeUint64Int32 = transposeUint64Int32
- TransposeUint64Uint32 = transposeUint64Uint32
- TransposeUint64Int64 = transposeUint64Int64
- TransposeUint64Uint64 = transposeUint64Uint64
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go.tmpl
deleted file mode 100644
index d93c8779c..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_s390x.go.tmpl
+++ /dev/null
@@ -1,34 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package utils
-
-// if building with the 'noasm' tag, then point to the pure go implementations
-var (
-{{ $typelist := .In }}
-{{range .In}}
-{{ $src := .Type -}}
-{{ $srcName := .Name -}}
-{{ range $typelist -}}
-{{ $dest := .Type -}}
-{{ $destName := .Name -}}
- Transpose{{$srcName}}{{$destName}} = transpose{{$srcName}}{{$destName}}
-{{end}}
-{{end}}
-)
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_simd.go.tmpl b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_simd.go.tmpl
deleted file mode 100644
index 034d0e9d2..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_simd.go.tmpl
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-// +build !noasm
-
-package utils
-
-import (
- "unsafe"
-)
-
-{{ $arch := .D.arch}}
-{{ $typelist := .In}}
-{{range .In}}
-{{ $src := .Type }}
-{{ $srcName := .Name }}
-{{ range $typelist}}
-{{ $dest := .Type }}
-{{ $destName := .Name }}
-
-//go:noescape
-func _transpose_{{printf "%s_%s_%s" $src $dest $arch}}(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transpose{{ $srcName }}{{ $destName }}{{ $arch }}(src []{{$src}}, dest []{{$dest}}, transposeMap []int32) {
- _transpose_{{printf "%s_%s_%s" $src $dest $arch}}(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-{{ end }}
-{{ end }}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.go b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.go
deleted file mode 100644
index 241ca74a7..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.go
+++ /dev/null
@@ -1,473 +0,0 @@
-// Code generated by transpose_ints_simd.go.tmpl. DO NOT EDIT.
-
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:build !noasm
-
-package utils
-
-import (
- "unsafe"
-)
-
-//go:noescape
-func _transpose_int8_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int8sse4(src []int8, dest []int8, transposeMap []int32) {
- _transpose_int8_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint8sse4(src []int8, dest []uint8, transposeMap []int32) {
- _transpose_int8_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int16sse4(src []int8, dest []int16, transposeMap []int32) {
- _transpose_int8_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint16sse4(src []int8, dest []uint16, transposeMap []int32) {
- _transpose_int8_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int32sse4(src []int8, dest []int32, transposeMap []int32) {
- _transpose_int8_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint32sse4(src []int8, dest []uint32, transposeMap []int32) {
- _transpose_int8_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Int64sse4(src []int8, dest []int64, transposeMap []int32) {
- _transpose_int8_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int8_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt8Uint64sse4(src []int8, dest []uint64, transposeMap []int32) {
- _transpose_int8_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int8sse4(src []uint8, dest []int8, transposeMap []int32) {
- _transpose_uint8_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint8sse4(src []uint8, dest []uint8, transposeMap []int32) {
- _transpose_uint8_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int16sse4(src []uint8, dest []int16, transposeMap []int32) {
- _transpose_uint8_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint16sse4(src []uint8, dest []uint16, transposeMap []int32) {
- _transpose_uint8_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int32sse4(src []uint8, dest []int32, transposeMap []int32) {
- _transpose_uint8_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint32sse4(src []uint8, dest []uint32, transposeMap []int32) {
- _transpose_uint8_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Int64sse4(src []uint8, dest []int64, transposeMap []int32) {
- _transpose_uint8_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint8_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint8Uint64sse4(src []uint8, dest []uint64, transposeMap []int32) {
- _transpose_uint8_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int8sse4(src []int16, dest []int8, transposeMap []int32) {
- _transpose_int16_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint8sse4(src []int16, dest []uint8, transposeMap []int32) {
- _transpose_int16_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int16sse4(src []int16, dest []int16, transposeMap []int32) {
- _transpose_int16_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint16sse4(src []int16, dest []uint16, transposeMap []int32) {
- _transpose_int16_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int32sse4(src []int16, dest []int32, transposeMap []int32) {
- _transpose_int16_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint32sse4(src []int16, dest []uint32, transposeMap []int32) {
- _transpose_int16_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Int64sse4(src []int16, dest []int64, transposeMap []int32) {
- _transpose_int16_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int16_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt16Uint64sse4(src []int16, dest []uint64, transposeMap []int32) {
- _transpose_int16_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int8sse4(src []uint16, dest []int8, transposeMap []int32) {
- _transpose_uint16_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint8sse4(src []uint16, dest []uint8, transposeMap []int32) {
- _transpose_uint16_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int16sse4(src []uint16, dest []int16, transposeMap []int32) {
- _transpose_uint16_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint16sse4(src []uint16, dest []uint16, transposeMap []int32) {
- _transpose_uint16_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int32sse4(src []uint16, dest []int32, transposeMap []int32) {
- _transpose_uint16_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint32sse4(src []uint16, dest []uint32, transposeMap []int32) {
- _transpose_uint16_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Int64sse4(src []uint16, dest []int64, transposeMap []int32) {
- _transpose_uint16_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint16_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint16Uint64sse4(src []uint16, dest []uint64, transposeMap []int32) {
- _transpose_uint16_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int8sse4(src []int32, dest []int8, transposeMap []int32) {
- _transpose_int32_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint8sse4(src []int32, dest []uint8, transposeMap []int32) {
- _transpose_int32_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int16sse4(src []int32, dest []int16, transposeMap []int32) {
- _transpose_int32_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint16sse4(src []int32, dest []uint16, transposeMap []int32) {
- _transpose_int32_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int32sse4(src []int32, dest []int32, transposeMap []int32) {
- _transpose_int32_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint32sse4(src []int32, dest []uint32, transposeMap []int32) {
- _transpose_int32_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Int64sse4(src []int32, dest []int64, transposeMap []int32) {
- _transpose_int32_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int32_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt32Uint64sse4(src []int32, dest []uint64, transposeMap []int32) {
- _transpose_int32_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int8sse4(src []uint32, dest []int8, transposeMap []int32) {
- _transpose_uint32_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint8sse4(src []uint32, dest []uint8, transposeMap []int32) {
- _transpose_uint32_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int16sse4(src []uint32, dest []int16, transposeMap []int32) {
- _transpose_uint32_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint16sse4(src []uint32, dest []uint16, transposeMap []int32) {
- _transpose_uint32_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int32sse4(src []uint32, dest []int32, transposeMap []int32) {
- _transpose_uint32_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint32sse4(src []uint32, dest []uint32, transposeMap []int32) {
- _transpose_uint32_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Int64sse4(src []uint32, dest []int64, transposeMap []int32) {
- _transpose_uint32_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint32_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint32Uint64sse4(src []uint32, dest []uint64, transposeMap []int32) {
- _transpose_uint32_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int8sse4(src []int64, dest []int8, transposeMap []int32) {
- _transpose_int64_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint8sse4(src []int64, dest []uint8, transposeMap []int32) {
- _transpose_int64_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int16sse4(src []int64, dest []int16, transposeMap []int32) {
- _transpose_int64_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint16sse4(src []int64, dest []uint16, transposeMap []int32) {
- _transpose_int64_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int32sse4(src []int64, dest []int32, transposeMap []int32) {
- _transpose_int64_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint32sse4(src []int64, dest []uint32, transposeMap []int32) {
- _transpose_int64_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Int64sse4(src []int64, dest []int64, transposeMap []int32) {
- _transpose_int64_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_int64_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeInt64Uint64sse4(src []int64, dest []uint64, transposeMap []int32) {
- _transpose_int64_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int8sse4(src []uint64, dest []int8, transposeMap []int32) {
- _transpose_uint64_int8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint8_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint8sse4(src []uint64, dest []uint8, transposeMap []int32) {
- _transpose_uint64_uint8_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int16sse4(src []uint64, dest []int16, transposeMap []int32) {
- _transpose_uint64_int16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint16_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint16sse4(src []uint64, dest []uint16, transposeMap []int32) {
- _transpose_uint64_uint16_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int32sse4(src []uint64, dest []int32, transposeMap []int32) {
- _transpose_uint64_int32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint32_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint32sse4(src []uint64, dest []uint32, transposeMap []int32) {
- _transpose_uint64_uint32_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_int64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Int64sse4(src []uint64, dest []int64, transposeMap []int32) {
- _transpose_uint64_int64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
-
-//go:noescape
-func _transpose_uint64_uint64_sse4(src, dest unsafe.Pointer, length int, transposeMap unsafe.Pointer)
-
-func transposeUint64Uint64sse4(src []uint64, dest []uint64, transposeMap []int32) {
- _transpose_uint64_uint64_sse4(unsafe.Pointer(&src[0]), unsafe.Pointer(&dest[0]), len(dest), unsafe.Pointer(&transposeMap[0]))
-}
diff --git a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.s b/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.s
deleted file mode 100644
index ee5199a5a..000000000
--- a/vendor/github.com/apache/arrow/go/v15/internal/utils/transpose_ints_sse4_amd64.s
+++ /dev/null
@@ -1,3074 +0,0 @@
-//+build !noasm !appengine
-// AUTO-GENERATED BY C2GOASM -- DO NOT EDIT
-
-TEXT ·_transpose_uint8_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB0_1
-
-LBB0_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB0_5
-
-LBB0_1:
- WORD $0xd285 // test edx, edx
- JLE LBB0_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB0_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB0_3
-
-LBB0_4:
- RET
-
-TEXT ·_transpose_int8_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB1_1
-
-LBB1_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB1_5
-
-LBB1_1:
- WORD $0xd285 // test edx, edx
- JLE LBB1_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB1_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB1_3
-
-LBB1_4:
- RET
-
-TEXT ·_transpose_uint16_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB2_1
-
-LBB2_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB2_5
-
-LBB2_1:
- WORD $0xd285 // test edx, edx
- JLE LBB2_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB2_3:
- LONG $0x04b70f42; BYTE $0x47 // movzx eax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB2_3
-
-LBB2_4:
- RET
-
-TEXT ·_transpose_int16_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB3_1
-
-LBB3_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB3_5
-
-LBB3_1:
- WORD $0xd285 // test edx, edx
- JLE LBB3_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB3_3:
- LONG $0x04bf0f4a; BYTE $0x47 // movsx rax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB3_3
-
-LBB3_4:
- RET
-
-TEXT ·_transpose_uint32_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB4_1
-
-LBB4_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB4_5
-
-LBB4_1:
- WORD $0xd285 // test edx, edx
- JLE LBB4_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB4_3:
- LONG $0x87048b42 // mov eax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB4_3
-
-LBB4_4:
- RET
-
-TEXT ·_transpose_int32_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB5_1
-
-LBB5_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB5_5
-
-LBB5_1:
- WORD $0xd285 // test edx, edx
- JLE LBB5_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB5_3:
- LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB5_3
-
-LBB5_4:
- RET
-
-TEXT ·_transpose_uint64_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB6_1
-
-LBB6_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB6_5
-
-LBB6_1:
- WORD $0xd285 // test edx, edx
- JLE LBB6_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB6_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB6_3
-
-LBB6_4:
- RET
-
-TEXT ·_transpose_int64_uint8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB7_1
-
-LBB7_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB7_5
-
-LBB7_1:
- WORD $0xd285 // test edx, edx
- JLE LBB7_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB7_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB7_3
-
-LBB7_4:
- RET
-
-TEXT ·_transpose_uint8_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB8_1
-
-LBB8_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB8_5
-
-LBB8_1:
- WORD $0xd285 // test edx, edx
- JLE LBB8_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB8_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB8_3
-
-LBB8_4:
- RET
-
-TEXT ·_transpose_int8_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB9_1
-
-LBB9_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB9_5
-
-LBB9_1:
- WORD $0xd285 // test edx, edx
- JLE LBB9_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB9_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB9_3
-
-LBB9_4:
- RET
-
-TEXT ·_transpose_uint16_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB10_1
-
-LBB10_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB10_5
-
-LBB10_1:
- WORD $0xd285 // test edx, edx
- JLE LBB10_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB10_3:
- LONG $0x04b70f42; BYTE $0x47 // movzx eax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB10_3
-
-LBB10_4:
- RET
-
-TEXT ·_transpose_int16_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB11_1
-
-LBB11_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB11_5
-
-LBB11_1:
- WORD $0xd285 // test edx, edx
- JLE LBB11_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB11_3:
- LONG $0x04bf0f4a; BYTE $0x47 // movsx rax, word [rdi + 2*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB11_3
-
-LBB11_4:
- RET
-
-TEXT ·_transpose_uint32_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB12_1
-
-LBB12_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB12_5
-
-LBB12_1:
- WORD $0xd285 // test edx, edx
- JLE LBB12_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB12_3:
- LONG $0x87048b42 // mov eax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB12_3
-
-LBB12_4:
- RET
-
-TEXT ·_transpose_int32_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB13_1
-
-LBB13_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB13_5
-
-LBB13_1:
- WORD $0xd285 // test edx, edx
- JLE LBB13_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB13_3:
- LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB13_3
-
-LBB13_4:
- RET
-
-TEXT ·_transpose_uint64_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB14_1
-
-LBB14_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB14_5
-
-LBB14_1:
- WORD $0xd285 // test edx, edx
- JLE LBB14_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB14_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB14_3
-
-LBB14_4:
- RET
-
-TEXT ·_transpose_int64_int8_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB15_1
-
-LBB15_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x1688 // mov byte [rsi], dl
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x01 // mov byte [rsi + 1], dl
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x02 // mov byte [rsi + 2], dl
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b60f // movzx edx, byte [rcx + 4*rdx]
- WORD $0x5688; BYTE $0x03 // mov byte [rsi + 3], dl
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x04c68348 // add rsi, 4
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB15_5
-
-LBB15_1:
- WORD $0xd285 // test edx, edx
- JLE LBB15_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB15_3:
- LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8]
- LONG $0x8104b60f // movzx eax, byte [rcx + 4*rax]
- LONG $0x06048842 // mov byte [rsi + r8], al
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB15_3
-
-LBB15_4:
- RET
-
-TEXT ·_transpose_uint8_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB16_1
-
-LBB16_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB16_5
-
-LBB16_1:
- WORD $0xd285 // test edx, edx
- JLE LBB16_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB16_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB16_3
-
-LBB16_4:
- RET
-
-TEXT ·_transpose_int8_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB17_1
-
-LBB17_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB17_5
-
-LBB17_1:
- WORD $0xd285 // test edx, edx
- JLE LBB17_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB17_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB17_3
-
-LBB17_4:
- RET
-
-TEXT ·_transpose_uint16_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB18_1
-
-LBB18_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB18_5
-
-LBB18_1:
- WORD $0xd285 // test edx, edx
- JLE LBB18_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB18_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB18_3
-
-LBB18_4:
- RET
-
-TEXT ·_transpose_int16_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB19_1
-
-LBB19_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB19_5
-
-LBB19_1:
- WORD $0xd285 // test edx, edx
- JLE LBB19_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB19_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB19_3
-
-LBB19_4:
- RET
-
-TEXT ·_transpose_uint32_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB20_1
-
-LBB20_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB20_5
-
-LBB20_1:
- WORD $0xd285 // test edx, edx
- JLE LBB20_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB20_3:
- LONG $0x47048b42 // mov eax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB20_3
-
-LBB20_4:
- RET
-
-TEXT ·_transpose_int32_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB21_1
-
-LBB21_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB21_5
-
-LBB21_1:
- WORD $0xd285 // test edx, edx
- JLE LBB21_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB21_3:
- LONG $0x4704634a // movsxd rax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB21_3
-
-LBB21_4:
- RET
-
-TEXT ·_transpose_uint64_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB22_1
-
-LBB22_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB22_5
-
-LBB22_1:
- WORD $0xd285 // test edx, edx
- JLE LBB22_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB22_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB22_3
-
-LBB22_4:
- RET
-
-TEXT ·_transpose_int64_uint16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB23_1
-
-LBB23_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB23_5
-
-LBB23_1:
- WORD $0xd285 // test edx, edx
- JLE LBB23_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB23_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB23_3
-
-LBB23_4:
- RET
-
-TEXT ·_transpose_uint8_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB24_1
-
-LBB24_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB24_5
-
-LBB24_1:
- WORD $0xd285 // test edx, edx
- JLE LBB24_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB24_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB24_3
-
-LBB24_4:
- RET
-
-TEXT ·_transpose_int8_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB25_1
-
-LBB25_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB25_5
-
-LBB25_1:
- WORD $0xd285 // test edx, edx
- JLE LBB25_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB25_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x46 // mov word [rsi + 2*r8], ax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB25_3
-
-LBB25_4:
- RET
-
-TEXT ·_transpose_uint16_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB26_1
-
-LBB26_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB26_5
-
-LBB26_1:
- WORD $0xd285 // test edx, edx
- JLE LBB26_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB26_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB26_3
-
-LBB26_4:
- RET
-
-TEXT ·_transpose_int16_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB27_1
-
-LBB27_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB27_5
-
-LBB27_1:
- WORD $0xd285 // test edx, edx
- JLE LBB27_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB27_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB27_3
-
-LBB27_4:
- RET
-
-TEXT ·_transpose_uint32_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB28_1
-
-LBB28_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB28_5
-
-LBB28_1:
- WORD $0xd285 // test edx, edx
- JLE LBB28_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB28_3:
- LONG $0x47048b42 // mov eax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB28_3
-
-LBB28_4:
- RET
-
-TEXT ·_transpose_int32_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB29_1
-
-LBB29_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB29_5
-
-LBB29_1:
- WORD $0xd285 // test edx, edx
- JLE LBB29_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB29_3:
- LONG $0x4704634a // movsxd rax, dword [rdi + 2*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB29_3
-
-LBB29_4:
- RET
-
-TEXT ·_transpose_uint64_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB30_1
-
-LBB30_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB30_5
-
-LBB30_1:
- WORD $0xd285 // test edx, edx
- JLE LBB30_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB30_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB30_3
-
-LBB30_4:
- RET
-
-TEXT ·_transpose_int64_int16_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB31_1
-
-LBB31_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- WORD $0x8966; BYTE $0x16 // mov word [rsi], dx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x02568966 // mov word [rsi + 2], dx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x04568966 // mov word [rsi + 4], dx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x9114b70f // movzx edx, word [rcx + 4*rdx]
- LONG $0x06568966 // mov word [rsi + 6], dx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x08c68348 // add rsi, 8
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB31_5
-
-LBB31_1:
- WORD $0xd285 // test edx, edx
- JLE LBB31_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB31_3:
- LONG $0x87048b4a // mov rax, qword [rdi + 4*r8]
- LONG $0x8104b70f // movzx eax, word [rcx + 4*rax]
- LONG $0x04894266; BYTE $0x06 // mov word [rsi + r8], ax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB31_3
-
-LBB31_4:
- RET
-
-TEXT ·_transpose_uint8_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB32_1
-
-LBB32_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB32_5
-
-LBB32_1:
- WORD $0xd285 // test edx, edx
- JLE LBB32_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB32_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB32_3
-
-LBB32_4:
- RET
-
-TEXT ·_transpose_int8_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB33_1
-
-LBB33_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB33_5
-
-LBB33_1:
- WORD $0xd285 // test edx, edx
- JLE LBB33_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB33_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB33_3
-
-LBB33_4:
- RET
-
-TEXT ·_transpose_uint16_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB34_1
-
-LBB34_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB34_5
-
-LBB34_1:
- WORD $0xd285 // test edx, edx
- JLE LBB34_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB34_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB34_3
-
-LBB34_4:
- RET
-
-TEXT ·_transpose_int16_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB35_1
-
-LBB35_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB35_5
-
-LBB35_1:
- WORD $0xd285 // test edx, edx
- JLE LBB35_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB35_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB35_3
-
-LBB35_4:
- RET
-
-TEXT ·_transpose_uint32_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB36_1
-
-LBB36_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB36_5
-
-LBB36_1:
- WORD $0xd285 // test edx, edx
- JLE LBB36_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB36_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB36_3
-
-LBB36_4:
- RET
-
-TEXT ·_transpose_int32_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB37_1
-
-LBB37_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB37_5
-
-LBB37_1:
- WORD $0xd285 // test edx, edx
- JLE LBB37_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB37_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB37_3
-
-LBB37_4:
- RET
-
-TEXT ·_transpose_uint64_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB38_1
-
-LBB38_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB38_5
-
-LBB38_1:
- WORD $0xd285 // test edx, edx
- JLE LBB38_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB38_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB38_3
-
-LBB38_4:
- RET
-
-TEXT ·_transpose_int64_uint32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB39_1
-
-LBB39_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB39_5
-
-LBB39_1:
- WORD $0xd285 // test edx, edx
- JLE LBB39_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB39_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB39_3
-
-LBB39_4:
- RET
-
-TEXT ·_transpose_uint8_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB40_1
-
-LBB40_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB40_5
-
-LBB40_1:
- WORD $0xd285 // test edx, edx
- JLE LBB40_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB40_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB40_3
-
-LBB40_4:
- RET
-
-TEXT ·_transpose_int8_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB41_1
-
-LBB41_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB41_5
-
-LBB41_1:
- WORD $0xd285 // test edx, edx
- JLE LBB41_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB41_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x86048942 // mov dword [rsi + 4*r8], eax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB41_3
-
-LBB41_4:
- RET
-
-TEXT ·_transpose_uint16_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB42_1
-
-LBB42_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB42_5
-
-LBB42_1:
- WORD $0xd285 // test edx, edx
- JLE LBB42_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB42_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB42_3
-
-LBB42_4:
- RET
-
-TEXT ·_transpose_int16_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB43_1
-
-LBB43_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB43_5
-
-LBB43_1:
- WORD $0xd285 // test edx, edx
- JLE LBB43_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB43_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x46048942 // mov dword [rsi + 2*r8], eax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB43_3
-
-LBB43_4:
- RET
-
-TEXT ·_transpose_uint32_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB44_1
-
-LBB44_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB44_5
-
-LBB44_1:
- WORD $0xd285 // test edx, edx
- JLE LBB44_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB44_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB44_3
-
-LBB44_4:
- RET
-
-TEXT ·_transpose_int32_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB45_1
-
-LBB45_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB45_5
-
-LBB45_1:
- WORD $0xd285 // test edx, edx
- JLE LBB45_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB45_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB45_3
-
-LBB45_4:
- RET
-
-TEXT ·_transpose_uint64_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB46_1
-
-LBB46_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB46_5
-
-LBB46_1:
- WORD $0xd285 // test edx, edx
- JLE LBB46_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB46_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB46_3
-
-LBB46_4:
- RET
-
-TEXT ·_transpose_int64_int32_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB47_1
-
-LBB47_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x1689 // mov dword [rsi], edx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x04 // mov dword [rsi + 4], edx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x08 // mov dword [rsi + 8], edx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- WORD $0x148b; BYTE $0x91 // mov edx, dword [rcx + 4*rdx]
- WORD $0x5689; BYTE $0x0c // mov dword [rsi + 12], edx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x10c68348 // add rsi, 16
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB47_5
-
-LBB47_1:
- WORD $0xd285 // test edx, edx
- JLE LBB47_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB47_3:
- LONG $0x47048b4a // mov rax, qword [rdi + 2*r8]
- WORD $0x048b; BYTE $0x81 // mov eax, dword [rcx + 4*rax]
- LONG $0x06048942 // mov dword [rsi + r8], eax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB47_3
-
-LBB47_4:
- RET
-
-TEXT ·_transpose_uint8_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB48_1
-
-LBB48_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB48_5
-
-LBB48_1:
- WORD $0xd285 // test edx, edx
- JLE LBB48_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB48_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB48_3
-
-LBB48_4:
- RET
-
-TEXT ·_transpose_int8_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB49_1
-
-LBB49_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB49_5
-
-LBB49_1:
- WORD $0xd285 // test edx, edx
- JLE LBB49_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB49_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB49_3
-
-LBB49_4:
- RET
-
-TEXT ·_transpose_uint16_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB50_1
-
-LBB50_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB50_5
-
-LBB50_1:
- WORD $0xd285 // test edx, edx
- JLE LBB50_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB50_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB50_3
-
-LBB50_4:
- RET
-
-TEXT ·_transpose_int16_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB51_1
-
-LBB51_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB51_5
-
-LBB51_1:
- WORD $0xd285 // test edx, edx
- JLE LBB51_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB51_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB51_3
-
-LBB51_4:
- RET
-
-TEXT ·_transpose_uint32_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB52_1
-
-LBB52_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB52_5
-
-LBB52_1:
- WORD $0xd285 // test edx, edx
- JLE LBB52_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB52_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB52_3
-
-LBB52_4:
- RET
-
-TEXT ·_transpose_int32_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB53_1
-
-LBB53_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB53_5
-
-LBB53_1:
- WORD $0xd285 // test edx, edx
- JLE LBB53_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB53_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB53_3
-
-LBB53_4:
- RET
-
-TEXT ·_transpose_uint64_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB54_1
-
-LBB54_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB54_5
-
-LBB54_1:
- WORD $0xd285 // test edx, edx
- JLE LBB54_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB54_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB54_3
-
-LBB54_4:
- RET
-
-TEXT ·_transpose_int64_uint64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB55_1
-
-LBB55_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB55_5
-
-LBB55_1:
- WORD $0xd285 // test edx, edx
- JLE LBB55_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB55_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB55_3
-
-LBB55_4:
- RET
-
-TEXT ·_transpose_uint8_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB56_1
-
-LBB56_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb60f; BYTE $0x17 // movzx edx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0157b60f // movzx edx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0257b60f // movzx edx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0357b60f // movzx edx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB56_5
-
-LBB56_1:
- WORD $0xd285 // test edx, edx
- JLE LBB56_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB56_3:
- LONG $0x04b60f42; BYTE $0x07 // movzx eax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB56_3
-
-LBB56_4:
- RET
-
-TEXT ·_transpose_int8_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB57_1
-
-LBB57_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17be0f48 // movsx rdx, byte [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57be0f48; BYTE $0x01 // movsx rdx, byte [rdi + 1]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57be0f48; BYTE $0x02 // movsx rdx, byte [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57be0f48; BYTE $0x03 // movsx rdx, byte [rdi + 3]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x04c78348 // add rdi, 4
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB57_5
-
-LBB57_1:
- WORD $0xd285 // test edx, edx
- JLE LBB57_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB57_3:
- LONG $0x04be0f4a; BYTE $0x07 // movsx rax, byte [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0xc604894a // mov qword [rsi + 8*r8], rax
- LONG $0x01c08349 // add r8, 1
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB57_3
-
-LBB57_4:
- RET
-
-TEXT ·_transpose_uint16_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB58_1
-
-LBB58_5:
- WORD $0xd089 // mov eax, edx
- WORD $0xb70f; BYTE $0x17 // movzx edx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x0257b70f // movzx edx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x0457b70f // movzx edx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0657b70f // movzx edx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB58_5
-
-LBB58_1:
- WORD $0xd285 // test edx, edx
- JLE LBB58_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB58_3:
- LONG $0x04b70f42; BYTE $0x07 // movzx eax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB58_3
-
-LBB58_4:
- RET
-
-TEXT ·_transpose_int16_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB59_1
-
-LBB59_5:
- WORD $0xd089 // mov eax, edx
- LONG $0x17bf0f48 // movsx rdx, word [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x57bf0f48; BYTE $0x02 // movsx rdx, word [rdi + 2]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x57bf0f48; BYTE $0x04 // movsx rdx, word [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x57bf0f48; BYTE $0x06 // movsx rdx, word [rdi + 6]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x08c78348 // add rdi, 8
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB59_5
-
-LBB59_1:
- WORD $0xd285 // test edx, edx
- JLE LBB59_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB59_3:
- LONG $0x04bf0f4a; BYTE $0x07 // movsx rax, word [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x8604894a // mov qword [rsi + 4*r8], rax
- LONG $0x02c08349 // add r8, 2
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB59_3
-
-LBB59_4:
- RET
-
-TEXT ·_transpose_uint32_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB60_1
-
-LBB60_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x178b // mov edx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- WORD $0x578b; BYTE $0x04 // mov edx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- WORD $0x578b; BYTE $0x08 // mov edx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- WORD $0x578b; BYTE $0x0c // mov edx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB60_5
-
-LBB60_1:
- WORD $0xd285 // test edx, edx
- JLE LBB60_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB60_3:
- LONG $0x07048b42 // mov eax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB60_3
-
-LBB60_4:
- RET
-
-TEXT ·_transpose_int32_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB61_1
-
-LBB61_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x6348; BYTE $0x17 // movsxd rdx, dword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x04576348 // movsxd rdx, dword [rdi + 4]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x08576348 // movsxd rdx, dword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x0c576348 // movsxd rdx, dword [rdi + 12]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x10c78348 // add rdi, 16
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB61_5
-
-LBB61_1:
- WORD $0xd285 // test edx, edx
- JLE LBB61_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB61_3:
- LONG $0x0704634a // movsxd rax, dword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x4604894a // mov qword [rsi + 2*r8], rax
- LONG $0x04c08349 // add r8, 4
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB61_3
-
-LBB61_4:
- RET
-
-TEXT ·_transpose_uint64_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB62_1
-
-LBB62_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB62_5
-
-LBB62_1:
- WORD $0xd285 // test edx, edx
- JLE LBB62_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB62_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB62_3
-
-LBB62_4:
- RET
-
-TEXT ·_transpose_int64_int64_sse4(SB), $0-32
-
- MOVQ src+0(FP), DI
- MOVQ dest+8(FP), SI
- MOVQ length+16(FP), DX
- MOVQ transposeMap+24(FP), CX
-
- WORD $0xfa83; BYTE $0x04 // cmp edx, 4
- JL LBB63_1
-
-LBB63_5:
- WORD $0xd089 // mov eax, edx
- WORD $0x8b48; BYTE $0x17 // mov rdx, qword [rdi]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- WORD $0x8948; BYTE $0x16 // mov qword [rsi], rdx
- LONG $0x08578b48 // mov rdx, qword [rdi + 8]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x08568948 // mov qword [rsi + 8], rdx
- LONG $0x10578b48 // mov rdx, qword [rdi + 16]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x10568948 // mov qword [rsi + 16], rdx
- LONG $0x18578b48 // mov rdx, qword [rdi + 24]
- LONG $0x91146348 // movsxd rdx, dword [rcx + 4*rdx]
- LONG $0x18568948 // mov qword [rsi + 24], rdx
- WORD $0x508d; BYTE $0xfc // lea edx, [rax - 4]
- LONG $0x20c78348 // add rdi, 32
- LONG $0x20c68348 // add rsi, 32
- WORD $0xf883; BYTE $0x07 // cmp eax, 7
- JG LBB63_5
-
-LBB63_1:
- WORD $0xd285 // test edx, edx
- JLE LBB63_4
- WORD $0xc283; BYTE $0x01 // add edx, 1
- WORD $0x3145; BYTE $0xc0 // xor r8d, r8d
-
-LBB63_3:
- LONG $0x07048b4a // mov rax, qword [rdi + r8]
- LONG $0x81046348 // movsxd rax, dword [rcx + 4*rax]
- LONG $0x0604894a // mov qword [rsi + r8], rax
- LONG $0x08c08349 // add r8, 8
- WORD $0xc283; BYTE $0xff // add edx, -1
- WORD $0xfa83; BYTE $0x01 // cmp edx, 1
- JG LBB63_3
-
-LBB63_4:
- RET