From 9432457b7be96496296a6520d0060be0501bb9a8 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Tue, 21 Jul 2026 16:50:51 +0000 Subject: [PATCH 1/2] [Release] Add release notes for Arrow Go 18.7.0 --- _posts/2026-07-21-arrow-go-18.7.0.md | 180 +++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 _posts/2026-07-21-arrow-go-18.7.0.md diff --git a/_posts/2026-07-21-arrow-go-18.7.0.md b/_posts/2026-07-21-arrow-go-18.7.0.md new file mode 100644 index 000000000000..3ae2c0b28721 --- /dev/null +++ b/_posts/2026-07-21-arrow-go-18.7.0.md @@ -0,0 +1,180 @@ +--- +layout: post +title: "Apache Arrow Go 18.7.0 Release" +date: "2026-07-21 00:00:00" +author: pmc +categories: [release] +--- + + +The Apache Arrow team is pleased to announce the v18.7.0 release of Apache Arrow Go. +This minor release covers 101 commits from 23 distinct contributors. + +## Contributors +```console +$ git shortlog -sn v18.6.0..v18.7.0 + 52 Minh Vu + 21 Matt Topol + 3 Fredrik Fornwall + 3 Sai Asish Y + 2 Jared Yu (余启正) + 2 Neelesh Salian + 2 Ondřej Pavela + 2 abir + 1 Alex Dubov + 1 Bryce Mecum + 1 David Li + 1 David Zhao + 1 Dima Kuznetsov + 1 Lucas Valente + 1 Mahdi Dibaiee + 1 Matan Rosenberg + 1 Patzifist + 1 Ruihao Chen + 1 Samuel Arnold + 1 Tobias Pütz + 1 Truffle + 1 Varun Venkatesh + 1 daniel-adam-tfs +``` + +## Changelog + +### What's Changed +* fix(release): keys download by @zeroshade in [#781](https://github.com/apache/arrow-go/pull/781) +* parquet/compress: enable WithAllLitEntropyCompression(true) for zstd by @varun0630 in [#779](https://github.com/apache/arrow-go/pull/779) +* release: fix syntax error in verify_rc.sh by @amoeba in [#782](https://github.com/apache/arrow-go/pull/782) +* fix(parquet): align dictionary fallback with parquet-mr by @twuebi in [#786](https://github.com/apache/arrow-go/pull/786) +* fix(arrow/cdata): make nativeCRecordBatchReader deterministic by @zeroshade in [#793](https://github.com/apache/arrow-go/pull/793) +* fix(compute/kernels): map FSB byte-width to numeric memo type for is_in by @SAY-5 in [#797](https://github.com/apache/arrow-go/pull/797) +* fix(arrow/flight): deliver response headers eagerly in streaming client middleware by @zeroshade in [#801](https://github.com/apache/arrow-go/pull/801) +* fix(ipc): preserve map child field metadata by @dimakuz in [#809](https://github.com/apache/arrow-go/pull/809) +* fix(avro): error on complex (non-nullable) unions instead of silently dropping (#777) by @SAY-5 in [#808](https://github.com/apache/arrow-go/pull/808) +* fix(parquet/metadata): do not pre-set hasDistinctCount in stat factories by @SAY-5 in [#807](https://github.com/apache/arrow-go/pull/807) +* feat(compute): support casts between binary/string and binary_view/string_view by @zeroshade in [#802](https://github.com/apache/arrow-go/pull/802) +* fix(arrow/array): preserve large integer precision in JSON decoding by @zeroshade in [#816](https://github.com/apache/arrow-go/pull/816) +* feat(arrow/array): add Resize method to RecordBuilder by @oakad in [#805](https://github.com/apache/arrow-go/pull/805) +* perf(parquet/pqarrow): cap RecordReader batch size to actual row count by @paveon in [#817](https://github.com/apache/arrow-go/pull/817) +* docs(parquet): correct DefaultDataPageSize comment from 1K to 1M by @zeroshade in [#822](https://github.com/apache/arrow-go/pull/822) +* fix(arrow/array): silence copylocks warning in numeric_generic.go by @zeroshade in [#823](https://github.com/apache/arrow-go/pull/823) +* feat(arrow/compute/exprs): support expr.IntervalYearToMonthLiteral in literalToDatum by @zeroshade in [#825](https://github.com/apache/arrow-go/pull/825) +* fix(parquet): return error instead of panicking on first-write failure by @zeroshade in [#824](https://github.com/apache/arrow-go/pull/824) +* [Parquet] Add SIMD-accelerated byte-stream-split decoding by @daniel-adam-tfs in [#654](https://github.com/apache/arrow-go/pull/654) +* perf(parquet/metadata): avoid constructing ColumnChunkMetaData in page index range determination by @paveon in [#831](https://github.com/apache/arrow-go/pull/831) +* feat: filter and take for dictionary arrays by @lesam in [#716](https://github.com/apache/arrow-go/pull/716) +* fix(arrow/array): adding string boundary checking for (*String).Value by @happydave1 in [#844](https://github.com/apache/arrow-go/pull/844) +* fix(parquet/variant): correct binary search bounds in ObjectValue.ValueByKey by @qzyu999 in [#841](https://github.com/apache/arrow-go/pull/841) +* fix(parquet/variant): correct is_large bit position in valueSize for arrays by @qzyu999 in [#840](https://github.com/apache/arrow-go/pull/840) +* feat(avro): support local-timestamp logical types by @abir-eon in [#832](https://github.com/apache/arrow-go/pull/832) +* fix(avro): append raw bytes by @matan129 in [#850](https://github.com/apache/arrow-go/pull/850) +* fix(arrow/array): use scale-aware ValueStr in decimal array String() by @zeroshade in [#849](https://github.com/apache/arrow-go/pull/849) +* feat(parquet/pqarrow): support writing LARGE_LIST types by @lidavidm in [#838](https://github.com/apache/arrow-go/pull/838) +* fix(arrow/scalar): implement Release()/Retain() on *scalar.Extension by @zeroshade in [#851](https://github.com/apache/arrow-go/pull/851) +* docs(arrow/ipc): document that Writer and FileWriter are not concurrency safe by @zeroshade in [#856](https://github.com/apache/arrow-go/pull/856) +* fix(parquet): add WriteBatchSpacedWithError to surface spaced-write failures by @zeroshade in [#852](https://github.com/apache/arrow-go/pull/852) +* ci: pin Go to go.mod in RC verify so the matching toolchain is used by @zeroshade in [#857](https://github.com/apache/arrow-go/pull/857) +* feat(arrow/extensions): add UnshredVariant to collapse a shredded variant array by @nssalian in [#859](https://github.com/apache/arrow-go/pull/859) +* fix(arrow/compute): accept type max value in safe decimal-to-int cast by @zeroshade in [#862](https://github.com/apache/arrow-go/pull/862) +* fix(array): validate negative bounds in NewSliceData by @fallintoplace in [#870](https://github.com/apache/arrow-go/pull/870) +* fix(array): dictionary null index zeroing by @fallintoplace in [#871](https://github.com/apache/arrow-go/pull/871) +* fix(array): struct stringer required child mask by @fallintoplace in [#873](https://github.com/apache/arrow-go/pull/873) +* fix(array): empty chunked approximate equality by @fallintoplace in [#874](https://github.com/apache/arrow-go/pull/874) +* fix(array): validate dense union offset lengths by @fallintoplace in [#875](https://github.com/apache/arrow-go/pull/875) +* Use semantic type equality in AddColumn by @fallintoplace in [#878](https://github.com/apache/arrow-go/pull/878) +* fix(array): clear dictionary data on reset by @fallintoplace in [#876](https://github.com/apache/arrow-go/pull/876) +* Reject negative chunked slice bounds by @fallintoplace in [#879](https://github.com/apache/arrow-go/pull/879) +* fix(array): array data hashing coverage by @fallintoplace in [#872](https://github.com/apache/arrow-go/pull/872) +* Support dense union slice offsets by @fallintoplace in [#877](https://github.com/apache/arrow-go/pull/877) +* Support sparse union sliced type ids by @fallintoplace in [#881](https://github.com/apache/arrow-go/pull/881) +* fix(build): correct phony target declaration by @fallintoplace in [#890](https://github.com/apache/arrow-go/pull/890) +* fix(parquet/compress): Gzip CompressBound by @fallintoplace in [#886](https://github.com/apache/arrow-go/pull/886) +* fix(parquet): free excluded stats bytes in ApplyStatSizeLimits by @mdibaiee in [#885](https://github.com/apache/arrow-go/pull/885) +* fix(tmpl): preserve escaped JSON string bytes by @fallintoplace in [#889](https://github.com/apache/arrow-go/pull/889) +* fix(parquet/compress): Brotli CompressBound by @fallintoplace in [#884](https://github.com/apache/arrow-go/pull/884) +* fix(parquet): align DataPageV2 pages to row boundaries in spaced writes by @truffle-dev in [#883](https://github.com/apache/arrow-go/pull/883) +* fix(array): guard BinaryViewBuilder size checks by @fallintoplace in [#888](https://github.com/apache/arrow-go/pull/888) +* fix: clarify StringViewBuilder UnmarshalJSON error message by @fallintoplace in [#894](https://github.com/apache/arrow-go/pull/894) +* fix: clarify StringViewBuilder.UnmarshalOne expected type by @fallintoplace in [#897](https://github.com/apache/arrow-go/pull/897) +* fix: guard multiBufferBuilder UnsafeAppend against short copy by @fallintoplace in [#896](https://github.com/apache/arrow-go/pull/896) +* fix(array): make SetNull idempotent and track null count by @fallintoplace in [#905](https://github.com/apache/arrow-go/pull/905) +* fix(ci): accept --json and pin gobenchdata by @fallintoplace in [#906](https://github.com/apache/arrow-go/pull/906) +* build: verify Apache RAT jar checksum before execution by @fallintoplace in [#908](https://github.com/apache/arrow-go/pull/908) +* fix(parquet): read full bloom filter buffers by @fallintoplace in [#892](https://github.com/apache/arrow-go/pull/892) +* fix(docs): fix CPU markdown link in README by @fallintoplace in [#907](https://github.com/apache/arrow-go/pull/907) +* fix(parquet): validate DataPageV2 decoded length by @fallintoplace in [#911](https://github.com/apache/arrow-go/pull/911) +* fix(arreflect): validate primitive conversion assignment overflow checks by @fallintoplace in [#903](https://github.com/apache/arrow-go/pull/903) +* fix(parquet): clamp repLevels in byte-array DataPageV2 row-boundary alignment by @zeroshade in [#919](https://github.com/apache/arrow-go/pull/919) +* fix(parquet/metadata): fix BloomFilter memory recycling, doc contract, and benchmark by @Patzifist in [#864](https://github.com/apache/arrow-go/pull/864) +* fix(flight/flightsql): recover real error when prepared DoPut stream closes early by @fornwall in [#920](https://github.com/apache/arrow-go/pull/920) +* fix: guard protobuf oneof/union reflection on nil oneof values by @fallintoplace in [#910](https://github.com/apache/arrow-go/pull/910) +* fix(parquet): copy ByteArray statistics min/max to prevent use-after-free by @zeroshade in [#917](https://github.com/apache/arrow-go/pull/917) +* fix(array): bounds check FixedSizeBinary.Value by @fallintoplace in [#923](https://github.com/apache/arrow-go/pull/923) +* fix(array): reject unsupported type IDs by @fallintoplace in [#925](https://github.com/apache/arrow-go/pull/925) +* fix(array): validate JSON start offsets by @fallintoplace in [#929](https://github.com/apache/arrow-go/pull/929) +* fix(scalar): validate dictionary indices before conversion by @fallintoplace in [#927](https://github.com/apache/arrow-go/pull/927) +* fix(array): retain dictionary before replacement by @fallintoplace in [#926](https://github.com/apache/arrow-go/pull/926) +* feat(parquet): opt-in streaming reads for large data pages by @joechenrh in [#880](https://github.com/apache/arrow-go/pull/880) +* fix(parquet): propagate row-group and page-index write errors by @fallintoplace in [#921](https://github.com/apache/arrow-go/pull/921) +* fix(array): honor struct offsets in constructors and validity masks by @fallintoplace in [#922](https://github.com/apache/arrow-go/pull/922) +* fix(parquet): make column reader cleanup idempotent by @fallintoplace in [#924](https://github.com/apache/arrow-go/pull/924) +* fix(scalar): hash list values logically by @fallintoplace in [#928](https://github.com/apache/arrow-go/pull/928) +* fix(array): recursively validate nested arrays by @fallintoplace in [#930](https://github.com/apache/arrow-go/pull/930) +* feat(parquet/variant): add Metadata.SizeBytes to split a concatenated variant by @nssalian in [#939](https://github.com/apache/arrow-go/pull/939) +* fix(cdata): validate imported array sizes by @fallintoplace in [#931](https://github.com/apache/arrow-go/pull/931) +* fix(avro): decode nullable logical timestamps by @abir-eon in [#935](https://github.com/apache/arrow-go/pull/935) +* fix(flight/flightsql/example): support dictionary-encoded parameter columns by @fornwall in [#936](https://github.com/apache/arrow-go/pull/936) +* fix(arrow/scalar): reject negative indices in GetScalar by @fornwall in [#940](https://github.com/apache/arrow-go/pull/940) +* fix(flight): reject malformed unary bearer headers by @fallintoplace in [#941](https://github.com/apache/arrow-go/pull/941) +* fix(flight): reject Basic credentials without a separator by @fallintoplace in [#942](https://github.com/apache/arrow-go/pull/942) +* fix(memory): keep allocator ownership across Buffer.Reset by @fallintoplace in [#947](https://github.com/apache/arrow-go/pull/947) +* fix(parquet): limit page allocations by @fallintoplace in [#953](https://github.com/apache/arrow-go/pull/953) +* fix(parquet): return decompression errors by @fallintoplace in [#954](https://github.com/apache/arrow-go/pull/954) +* fix(parquet): return errors for malformed encrypted payloads by @fallintoplace in [#945](https://github.com/apache/arrow-go/pull/945) +* fix: repair failing benchmarks and stop bench.sh masking failures by @zeroshade in [#938](https://github.com/apache/arrow-go/pull/938) +* fix(parquet): handle short input in GetBatchBools by @fallintoplace in [#946](https://github.com/apache/arrow-go/pull/946) +* fix(arrow): validate timestamp timezones by @fallintoplace in [#952](https://github.com/apache/arrow-go/pull/952) +* fix(ipc): validate message framing bounds by @fallintoplace in [#955](https://github.com/apache/arrow-go/pull/955) +* fix(parquet): reject truncated bit-packed batches by @fallintoplace in [#943](https://github.com/apache/arrow-go/pull/943) +* fix(compute): handle comparison output offsets by @fallintoplace in [#956](https://github.com/apache/arrow-go/pull/956) +* fix(arrow/array): avoid allocating for ReserveData(0) by @fallintoplace in [#895](https://github.com/apache/arrow-go/pull/895) +* fix(compute): release temporary arrays in binary view casts by @fallintoplace in [#898](https://github.com/apache/arrow-go/pull/898) +* fix(arrow/array): validate map builder entry lengths by @fallintoplace in [#957](https://github.com/apache/arrow-go/pull/957) +* Add `TimestampWithOffset` canonical extension type by @serramatutu in [#558](https://github.com/apache/arrow-go/pull/558) +* chore: bump version number by @zeroshade in [#959](https://github.com/apache/arrow-go/pull/959) + +### New Contributors +* @varun0630 made their first contribution in [#779](https://github.com/apache/arrow-go/pull/779) +* @twuebi made their first contribution in [#786](https://github.com/apache/arrow-go/pull/786) +* @SAY-5 made their first contribution in [#797](https://github.com/apache/arrow-go/pull/797) +* @oakad made their first contribution in [#805](https://github.com/apache/arrow-go/pull/805) +* @paveon made their first contribution in [#817](https://github.com/apache/arrow-go/pull/817) +* @lesam made their first contribution in [#716](https://github.com/apache/arrow-go/pull/716) +* @happydave1 made their first contribution in [#844](https://github.com/apache/arrow-go/pull/844) +* @qzyu999 made their first contribution in [#841](https://github.com/apache/arrow-go/pull/841) +* @abir-eon made their first contribution in [#832](https://github.com/apache/arrow-go/pull/832) +* @matan129 made their first contribution in [#850](https://github.com/apache/arrow-go/pull/850) +* @nssalian made their first contribution in [#859](https://github.com/apache/arrow-go/pull/859) +* @fallintoplace made their first contribution in [#870](https://github.com/apache/arrow-go/pull/870) +* @mdibaiee made their first contribution in [#885](https://github.com/apache/arrow-go/pull/885) +* @truffle-dev made their first contribution in [#883](https://github.com/apache/arrow-go/pull/883) +* @Patzifist made their first contribution in [#864](https://github.com/apache/arrow-go/pull/864) +* @fornwall made their first contribution in [#920](https://github.com/apache/arrow-go/pull/920) + +**Full Changelog**: https://github.com/apache/arrow-go/compare/v18.6.0...v18.7.0 From 29a6d8f447f50dfdd32bff8b41ad7b33e31ef1aa Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Tue, 21 Jul 2026 13:13:19 -0400 Subject: [PATCH 2/2] add highlights --- _posts/2026-07-21-arrow-go-18.7.0.md | 35 ++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/_posts/2026-07-21-arrow-go-18.7.0.md b/_posts/2026-07-21-arrow-go-18.7.0.md index 3ae2c0b28721..97e4f59529a4 100644 --- a/_posts/2026-07-21-arrow-go-18.7.0.md +++ b/_posts/2026-07-21-arrow-go-18.7.0.md @@ -55,6 +55,41 @@ $ git shortlog -sn v18.6.0..v18.7.0 1 daniel-adam-tfs ``` +## Highlights + +### Arrow + +#### Features + +- Support casts between binary/utf8 and binary_view/utf8_view [#802](https://github.com/apache/arrow-go/pull/802) +- Added a Resize method to RecordBuilder [#805](https://github.com/apache/arrow-go/pull/805) +- Support dictionary arrays for Filter and Take [#716](https://github.com/apache/arrow-go/pull/716) +- Add an UnshredVariant method for collapsing a shredded variant array [#859](https://github.com/apache/arrow-go/pull/859) +- Add implementation of `TimestampWithOffset` canonical extension type [#558](https://github.com/apache/arrow-go/pull/558) + +#### Bug Fixes + +- Made C Data interface stream memory release deterministic [#793](https://github.com/apache/arrow-go/pull/793) +- Preserve large integer precision in JSON decoding [#816](https://github.com/apache/arrow-go/pull/816) + +### Parquet + +#### Features + +- Support writing LARGE_LIST arrays [#838](https://github.com/apache/arrow-go/pull/838) +- Opt-in streaming reads for large data pages [#880](https://github.com/apache/arrow-go/pull/880) + +#### Bug Fixes + +- Corrected a couple variant bugs [#841](https://github.com/apache/arrow-go/pull/841), [#840](https://github.com/apache/arrow-go/pull/840), [#939](https://github.com/apache/arrow-go/pull/939) +- Properly align DataPageV2 pages to row boundaries in spaced writes [#883](https://github.com/apache/arrow-go/pull/883) + +#### Performance Improvements + +- Added SIMD-accelerated byte-stream-split decoding [#654](https://github.com/apache/arrow-go/pull/654) +- Avoid constructing ColunChunkMetaData in page index range determination [#831](https://github.com/apache/arrow-go/pull/831) +- Improve BloomFilter memory recycling and pooling [#864](https://github.com/apache/arrow-go/pull/864) + ## Changelog ### What's Changed