31.0.0 (2023-01-13)
Breaking changes:
- support RFC3339 style timestamps in
arrow-json
#3449 [arrow] (JayjeetAtGithub) - Improve arrow flight batch splitting and naming #3444 [arrow-flight] (alamb)
- Parquet record API: timestamp as signed integer #3437 [parquet] (ByteBaker)
- Support decimal int32/64 for writer #3431 [parquet] (liukun4515)
Implemented enhancements:
- Support casting Date32 to timestamp #3504 [arrow]
- Support casting strings like
'2001-01-01'
to timestamp #3492 [arrow] - CLI to "rewrite" parquet files #3476 [parquet]
- Add more dictionary value type support to
build_compare
#3465 - Allow
concat_batches
to take non owned RecordBatch #3456 [arrow] - Release Arrow
30.0.1
(maintenance release for30.0.0
) #3455 - Add string comparisons (starts_with, ends_with, and contains) to kernel #3442 [arrow]
- make_builder Loses Timezone and Decimal Scale Information #3435 [arrow]
- Use RFC3339 style timestamps in arrow-json #3416 [arrow]
- ArrayData
get_slice_memory_size
or similar #3407 [arrow] [arrow-flight]
Fixed bugs:
- Unable to read CSV with null boolean value #3521 [arrow]
- Make consistent behavior on zeros equality on floating point types #3509
- Sliced batch w/ bool column doesn't roundtrip through IPC #3496 [arrow] [arrow-flight]
- take kernel on List array introduces nulls instead of empty lists #3471 [arrow]
- Infinite Loop If Skipping More CSV Lines than Present #3469 [arrow]
Merged pull requests:
- Fix reading null booleans from CSV #3523 [arrow] (tustvold)
- minor fix: use the unified decimal type builder #3522 [parquet] (liukun4515)
- Update version to
31.0.0
and add changelog #3518 [parquet] [arrow] [arrow-flight] (iajoiner) - Additional nullif re-export #3515 [arrow] (tustvold)
- Make consistent behavior on zeros equality on floating point types #3510 (viirya)
- Enable cast Date32 to Timestamp #3508 [arrow] (comphead)
- Update prost-build requirement from =0.11.5 to =0.11.6 #3507 [arrow-flight] (dependabot[bot])
- minor fix for the comments #3505 [arrow] (liukun4515)
- Fix DataTypeLayout for LargeList #3503 [arrow] (viirya)
- Add string comparisons (starts_with, ends_with, and contains) to kernel #3502 [arrow] (snmvaughan)
- Add a function to get memory size of array slice #3501 [arrow] (askoa)
- Fix IPCWriter for Sliced BooleanArray #3498 [arrow] (crepererum)
- Fix: Added support to cast string without time #3494 [arrow] (gaelwjl)
- Fix negative interval prettyprint #3491 [arrow] (Jefffrey)
- Fixes a broken link in the arrow lib.rs rustdoc #3487 [arrow] (AdamGS)
- Refactoring build_compare for decimal and using downcast_primitive #3484 (viirya)
- Add tests for record batch size splitting logic in FlightClient #3481 [arrow-flight] (alamb)
- change
concat_batches
parameter to non owned reference #3480 [arrow] (askoa) - feat: add
parquet-rewrite
CLI #3477 [parquet] (crepererum) - Preserve empty list array elements in take kernel #3473 [arrow] (jonmmease)
- Add a test for stream writer for writing sliced array #3472 [arrow] (viirya)
- Fix CSV infinite loop and improve error messages #3470 [arrow] (tustvold)
- Add more dictionary value type support to
build_compare
#3466 (viirya) - Add tests for
FlightClient::{list_flights, list_actions, do_action, get_schema}
#3463 [arrow-flight] (alamb) - Minor: add ticket links to failing ipc integration tests #3461 (alamb)
- feat:
column_name
based index access forRecordBatch
andStructArray
#3458 [arrow] (askoa) - Support Decimal256 in FFI #3453 [arrow] (viirya)
- Remove multiversion dependency #3452 [arrow] (tustvold)
- Re-export nullif kernel #3451 [arrow] (tustvold)
- Meaningful error message for map builder with null keys #3450 [arrow] (Jefffrey)
- Parquet writer v2: clear buffer after page flush #3447 [parquet] (askoa)
- Verify ArrayData::data_type compatible in PrimitiveArray::from #3440 [arrow] (tustvold)
- Preserve DataType metadata in make_builder #3438 [arrow] (tustvold)
- Consolidate arrow ipc tests and increase coverage #3427 [arrow] (alamb)
- Generic bytes dictionary builder #3426 [arrow] (viirya)
- Minor: Improve docs for arrow-ipc, remove clippy ignore #3421 [arrow] (alamb)
- refactor: convert
*like_dyn
,*like_utf8_scalar_dyn
and*like_dict
functions to macros #3411 [arrow] (askoa) - Add parquet-index binary #3405 [parquet] (tustvold)
- Complete mid-level
FlightClient
#3402 [arrow-flight] (alamb) - Implement
RecordBatch
<-->FlightData
encode/decode + tests #3391 [arrow] [arrow-flight] (alamb) - Provide
into_builder
for bytearray #3326 [arrow] (viirya)
30.0.1 (2023-01-04)
Implemented enhancements:
- Generic bytes dictionary builder #3425 [arrow]
- Derive Clone for the builders in object-store. #3419
- Mid-level
ArrowFlight
Client #3371 [arrow-flight] - Improve performance of the CSV parser #3338 [arrow]
Fixed bugs:
nullif
kernel no longer exported #3454 [arrow]- PrimitiveArray from ArrayData Unsound For IntervalArray #3439 [arrow]
- LZ4-compressed PQ files unreadable by Pandas and ClickHouse #3433 [parquet]
- Parquet Record API: Cannot convert date before Unix epoch to json #3430 [parquet]
- parquet-fromcsv with writer version v2 does not stop #3408 [parquet]
30.0.0 (2022-12-29)
Breaking changes:
- Infer Parquet JSON Logical and Converted Type as UTF-8 #3376 [parquet] (tustvold)
- Use custom Any instead of prost_types #3360 [arrow-flight] (tustvold)
- Use bytes in arrow-flight #3359 [arrow-flight] (tustvold)
Implemented enhancements:
- Add derived implementations of Clone and Debug for
ParquetObjectReader
#3381 [parquet] - Speed up TrackedWrite #3366 [parquet]
- Is it possible for ArrowWriter to write key_value_metadata after write all records #3356 [parquet]
- Add UnionArray test to arrow-pyarrow integration test #3346
- Document / Deprecate arrow_flight::utils::flight_data_from_arrow_batch #3312 [arrow] [arrow-flight]
- [FlightSQL] Support HTTPs #3309 [arrow-flight]
- Support UnionArray in ffi #3304 [arrow]
- Add support for Azure Data Lake Storage Gen2 (aka: ADLS Gen2) in Object Store library #3283
- Support casting from String to Decimal #3280 [arrow]
- Allow ArrowCSV writer to control the display of NULL values #3268 [arrow]
Fixed bugs:
- FlightSQL example is broken #3386 [arrow-flight]
- CSV Reader Bounds Incorrectly Handles Header #3364 [arrow]
- Incorrect output string from
try_to_type
#3350 - Decimal arithmetic computation fails to run because decimal type equality #3344 [arrow]
- Pretty print not implemented for Map #3322 [arrow]
- ILIKE Kernels Inconsistent Case Folding #3311 [arrow]
Documentation updates:
- minor: Improve arrow-flight docs #3372 [arrow] [arrow-flight] (alamb)
Merged pull requests:
- Version 30.0.0 release notes and changelog #3406 [parquet] [arrow] [arrow-flight] (alamb)
- Ends ParquetRecordBatchStream when polling on StreamState::Error #3404 [parquet] (viirya)
- fix clippy issues #3398 (Jimexist)
- Upgrade multiversion to 0.7.1 #3396 (viirya)
- Make FlightSQL Support HTTPs #3388 [arrow-flight] (viirya)
- Fix broken FlightSQL example #3387 [arrow-flight] (viirya)
- Update prost-build #3385 [arrow-flight] (tustvold)
- Split out arrow-arith (#2594) #3384 [arrow] (tustvold)
- Add derive for Clone and Debug for
ParquetObjectReader
#3382 [parquet] (kszlim) - Initial Mid-level
FlightClient
#3378 [arrow-flight] (alamb) - Document all features on docs.rs #3377 [arrow] [arrow-flight] (tustvold)
- Split out arrow-row (#2594) #3375 [arrow] (tustvold)
- Remove unnecessary flush calls on TrackedWrite #3374 [parquet] (viirya)
- Update proc-macro2 requirement from =1.0.47 to =1.0.49 #3369 [arrow-flight] (dependabot[bot])
- Add CSV build_buffered (#3338) #3368 [arrow] (tustvold)
- feat: add append_key_value_metadata #3367 [parquet] (jiacai2050)
- Add csv-core based reader (#3338) #3365 [arrow] (tustvold)
- Put BufWriter into TrackedWrite #3361 [parquet] (viirya)
- Add CSV reader benchmark (#3338) #3357 [arrow] (tustvold)
- Use ArrayData::ptr_eq in DictionaryTracker #3354 [arrow] (tustvold)
- Deprecate flight_data_from_arrow_batch #3353 [arrow] [arrow-flight] (Dandandan)
- Fix incorrect output string from try_to_type #3351 (viirya)
- Fix unary_dyn for decimal scalar arithmetic computation #3345 [arrow] (viirya)
- Add UnionArray test to arrow-pyarrow integration test #3343 (viirya)
- feat: configure null value in arrow csv writer #3342 [arrow] (askoa)
- Optimize bulk writing of all blocks of bloom filter #3340 [parquet] (viirya)
- Add MapArray to pretty print #3339 [arrow] (askoa)
- Update prost-build 0.11.4 #3334 [arrow-flight] (tustvold)
- Faster Parquet Bloom Writer #3333 (tustvold)
- Add bloom filter benchmark for parquet writer #3323 [parquet] (viirya)
- Add ASCII fast path for ILIKE scalar (90% faster) #3306 [arrow] (tustvold)
- Support UnionArray in ffi #3305 [arrow] (viirya)
- Support casting from String to Decimal #3281 [arrow] (viirya)
- add more integration test for parquet bloom filter round trip tests #3210 [parquet] (Jimexist)
29.0.0 (2022-12-09)
Breaking changes:
- Minor: Allow
Field::new
andField::new_with_dict
to take existingString
as well as&str
#3288 [arrow] (alamb) - update
&Option<T>
toOption<&T>
#3249 [parquet] [arrow] (Jimexist) - Hide
*_dict_scalar
kernels behind*_dyn
kernels #3202 [arrow] (viirya)
Implemented enhancements:
- Support writing BloomFilter in arrow_writer #3275 [parquet]
- Support casting from unsigned numeric to Decimal256 #3272 [arrow]
- Support casting from Decimal256 to float types #3266 [arrow]
- Make arithmetic kernels supports DictionaryArray of DecimalType #3254 [arrow]
- Casting from Decimal256 to unsigned numeric #3239 [arrow]
- precision is not considered when cast value to decimal #3223 [arrow]
- Use RegexSet in arrow_csv::infer_field_schema #3211 [arrow]
- Implement FlightSQL Client #3206 [arrow-flight]
- Add binary_mut and try_binary_mut #3143 [arrow]
- Add try_unary_mut #3133 [arrow]
Fixed bugs:
- Skip null buffer when importing FFI ArrowArray struct if no null buffer in the spec #3290 [arrow]
- using ahash
compile-time-rng
kills reproducible builds #3271 [parquet] - Decimal128 to Decimal256 Overflows #3265 [arrow]
nullif
panics on empty array #3261 [arrow]- Some more inconsistency between can_cast_types and cast_with_options #3250 [arrow]
- Enable casting between Dictionary of DecimalArray and DecimalArray #3237 [arrow]
- new_null_array Panics creating StructArray with non-nullable fields #3226 [arrow]
- bool should cast from/to Float16Type as
can_cast_types
returns true #3221 [arrow] - Utf8 and LargeUtf8 cannot cast from/to Float16 but can_cast_types returns true #3220 [arrow]
- Re-enable some tests in
arrow-cast
crate #3219 [arrow] - Off-by-one buffer size error triggers Panic when constructing RecordBatch from IPC bytes (should return an Error) #3215 [arrow]
- arrow to and from pyarrow conversion results in changes in schema #3136 [arrow]
Documentation updates:
Merged pull requests:
- Use BufWriter when writing bloom filters and limit tests (#3318) #3319 [parquet] (tustvold)
- Use take for dictionary like comparisons #3313 [arrow] (tustvold)
- Update versions to 29.0.0 and update CHANGELOG #3315 [parquet] [arrow] [arrow-flight] (alamb)
- refactor: Merge similar functions
ilike_scalar
andnilike_scalar
#3303 [arrow] (askoa) - Split out arrow-ord (#2594) #3299 [arrow] (tustvold)
- Split out arrow-string (#2594) #3295 [arrow] (tustvold)
- Skip null buffer when importing FFI ArrowArray struct if no null buffer in the spec #3293 [arrow] (viirya)
- Don't use dangling NonNull as sentinel #3289 [arrow] (tustvold)
- Set bloom filter on byte array #3284 [parquet] (viirya)
- Fix ipc schema custom_metadata serialization #3282 [arrow] (Jefffrey)
- Disable const-random ahash feature on non-WASM (#3271) #3277 [parquet] (tustvold)
- fix(ffi): handle null data buffers from empty arrays #3276 [arrow] (wjones127)
- Support casting from unsigned numeric to Decimal256 #3273 [arrow] (viirya)
- Add parquet-layout binary #3269 [parquet] (tustvold)
- Support casting from Decimal256 to float types #3267 [arrow] (viirya)
- Simplify decimal cast logic #3264 [arrow] (tustvold)
- Fix panic on nullif empty array (#3261) #3263 [arrow] (tustvold)
- Add BooleanArray::from_unary and BooleanArray::from_binary #3258 [arrow] (tustvold)
- Minor: Remove parquet build script #3257 [parquet] (tustvold)
- Make arithmetic kernels supports DictionaryArray of DecimalType #3255 [arrow] (viirya)
- Support List and LargeList in Row format (#3159) #3251 [arrow] (tustvold)
- Don't recurse to children in ArrayData::try_new #3248 [arrow] (tustvold)
- Validate dictionaries read over IPC #3247 [arrow] (tustvold)
- Fix MapBuilder example #3246 [arrow] (tustvold)
- Loosen nullability restrictions added in #3205 (#3226) #3244 [arrow] (tustvold)
- Better document implications of offsets (#3228) #3243 [arrow] (tustvold)
- Add new API to validate the precision for decimal array #3242 [arrow] (liukun4515)
- Move nullif to arrow-select (#2594) #3241 [arrow] (tustvold)
- Casting from Decimal256 to unsigned numeric #3240 [arrow] (viirya)
- Enable casting between Dictionary of DecimalArray and DecimalArray #3238 [arrow] (viirya)
- Remove unwraps from 'create_primitive_array' #3232 [arrow] (aarashy)
- Fix CI build by upgrading tonic-build to 0.8.4 #3231 [arrow-flight] (viirya)
- Remove negative scale check #3230 [arrow] (viirya)
- Update prost-build requirement from =0.11.2 to =0.11.3 #3225 [arrow-flight] (dependabot[bot])
- Get the round result for decimal to a decimal with smaller scale #3224 [arrow] (liukun4515)
- Move tests which require chrono-tz feature from
arrow-cast
toarrow
#3222 [arrow] (viirya) - add test cases for extracing week with/without timezone #3218 [arrow] (waitingkuo)
- Use RegexSet for matching DataType #3217 [arrow] (askoa)
- Update tonic-build to 0.8.3 #3214 [arrow-flight] (tustvold)
- Support StructArray in Row Format (#3159) #3212 [arrow] (tustvold)
- Infer timestamps from CSV files #3209 [arrow] (Jefffrey)
- fix bug: cast decimal256 to other decimal with no-safe #3208 [arrow] (liukun4515)
- FlightSQL Client & integration test #3207 [arrow-flight] (avantgardnerio)
- Ensure StructArrays check nullability of fields #3205 [arrow] (Jefffrey)
- Remove special case ArrayData equality for decimals #3204 [arrow] (tustvold)
- Add a cast test case for decimal negative scale #3203 [arrow] (viirya)
- Move zip and shift kernels to arrow-select #3201 [arrow] (tustvold)
- Deprecate limit kernel #3200 [arrow] (tustvold)
- Use SlicesIterator for ArrayData Equality #3198 [arrow] (viirya)
- Add _dyn kernels of like, ilike, nlike, nilike kernels for dictionary support #3197 [arrow] (viirya)
- Adding scalar nlike_dyn, ilike_dyn, nilike_dyn kernels #3195 [arrow] (psvri)
- Use self capture in DataType #3190 [arrow] (tustvold)
- To pyarrow with schema #3188 [arrow] (doki23)
- Support Duration in array_value_to_string #3183 [arrow] (psvri)
- Support
FixedSizeBinary
in Row format #3182 [arrow] (tustvold) - Add binary_mut and try_binary_mut #3144 [arrow] (viirya)
- Add try_unary_mut #3134 [arrow] (viirya)
28.0.0 (2022-11-25)
Breaking changes:
- StructArray::columns return slice #3186 [parquet] [arrow] (tustvold)
- Return slice from GenericByteArray::value_data #3171 [arrow] (tustvold)
- Support decimal negative scale #3152 [arrow] (viirya)
- refactor: convert
Field::metadata
toHashMap
#3148 [parquet] [arrow] (crepererum) - Don't Skip Serializing Empty Metadata (#3082) #3126 [arrow] (askoa)
- Add Decimal128, Decimal256, Float16 to DataType::is_numeric #3121 [arrow] (tustvold)
- Upgrade to thrift 0.17 and fix issues #3104 [parquet] [arrow] (Jimexist)
- Fix prettyprint for Interval second fractions #3093 [arrow] (Jefffrey)
- Remove Option from
Field::metadata
#3091 [parquet] [arrow] (askoa)
Implemented enhancements:
- Add iterator to RowSelection #3172 [parquet]
- create an integration test set for parquet crate against pyspark for working with bloom filters #3167 [parquet]
- Row Format Size Tracking #3160 [arrow]
- Add ArrayBuilder::finish_cloned() #3154 [arrow]
- Optimize memory usage of json reader #3150
- Add
Field::size
andDataType::size
#3147 [parquet] [arrow] - Add like_utf8_scalar_dyn kernel #3145 [arrow]
- support comparison for decimal128 array with scalar in kernel #3140 [arrow]
- audit and create a document for bloom filter configurations #3138 [parquet]
- Should be the rounding vs truncation when cast decimal to smaller scale #3137 [arrow]
- Upgrade chrono to 0.4.23 #3120
- Implements more temporal kernels using time_fraction_dyn #3108 [arrow]
- Upgrade to thrift 0.17 #3105 [parquet] [arrow]
- Be able to parse time formatted strings #3100 [arrow]
- Improve "Fail to merge schema" error messages #3095 [arrow]
- Expose
SortingColumn
when reading and writing parquet metadata #3090 [parquet] - Change Field::metadata to HashMap #3086 [parquet] [arrow]
- Support bloom filter reading and writing for parquet #3023 [parquet]
- API to take back ownership of an ArrayRef #2901 [arrow]
- Specialized Interleave Kernel #2864 [arrow]
Fixed bugs:
- arithmatic overflow leads to segfault in
concat_batches
#3123 [arrow] - Clippy failing on master : error: use of deprecated associated function chrono::NaiveDate::from_ymd: use from_ymd_opt() instead #3097 [parquet] [arrow]
- Pretty print for interval types has wrong formatting #3092 [arrow]
- Field is not serializable with binary formats #3082 [arrow]
- Decimal Casts are Unchecked #2986 [arrow]
Closed issues:
- Release Arrow
27.0.0
(next release after26.0.0
) #3045 [parquet] [arrow] [arrow-flight] - Perf about ParquetRecordBatchStream vs ParquetRecordBatchReader #2916
Merged pull requests:
- Improve regex related kernels by upto 85% #3192 [arrow] (psvri)
- Derive clone for arrays #3184 [arrow] (tustvold)
- Row decode cleanups #3180 [arrow] (tustvold)
- Update zstd requirement from 0.11.1 to 0.12.0 #3178 [parquet] [arrow] (dependabot[bot])
- Move decimal constants from
arrow-data
toarrow-schema
crate #3177 [arrow] (mbrobbel) - bloom filter part V: add an integration with pytest against pyspark #3176 [parquet] (Jimexist)
- Bloom filter config tweaks (#3023) #3175 [parquet] (tustvold)
- Add RowParser #3174 [arrow] (tustvold)
- Add
RowSelection::iter()
,Into<Vec<RowSelector>>
and example #3173 [parquet] (alamb) - Add read parquet examples #3170 [parquet] (xudong963)
- Faster BinaryArray to StringArray conversion (~67%) #3168 [arrow] (tustvold)
- Remove unnecessary downcasts in builders #3166 [arrow] (tustvold)
- bloom filter part IV: adjust writer properties, bloom filter properties, and incorporate into column encoder #3165 [parquet] (Jimexist)
- Fix parquet decimal precision #3164 [parquet] (psvri)
- Add Row size methods (#3160) #3163 [arrow] (tustvold)
- Prevent precision=0 for decimal type #3162 [arrow] (psvri)
- Remove unnecessary Buffer::from_slice_ref reference #3161 [arrow] (tustvold)
- Add finish_cloned to ArrayBuilder #3158 [arrow] (askoa)
- Check overflow in MutableArrayData extend offsets (#3123) #3157 [arrow] (tustvold)
- Extend Decimal256 as Primitive #3156 [arrow] (tustvold)
- Doc improvements #3155 [arrow] (psvri)
- Add collect.rs example #3153 [arrow] (viirya)
- Implement Neg for i256 #3151 [arrow] (tustvold)
- feat:
{Field,DataType}::size
#3149 [arrow] (crepererum) - Add like_utf8_scalar_dyn kernel #3146 [arrow] (viirya)
- comparison op: decimal128 array with scalar #3141 [arrow] (liukun4515)
- Cast: should get the round result for decimal to a decimal with smaller scale #3139 [arrow] (liukun4515)
- Fix Panic on Reading Corrupt Parquet Schema (#2855) #3130 [parquet] (psvri)
- Clippy parquet fixes #3124 [parquet] [arrow] (psvri)
- Add GenericByteBuilder (#2969) #3122 [arrow] (tustvold)
- parquet bloom filter part III: add sbbf writer, remove
bloom
default feature, add reader properties #3119 [parquet] (Jimexist) - Add downcast_array (#2901) #3117 [arrow] (tustvold)
- Add COW conversion for Buffer and PrimitiveArray and unary_mut #3115 [arrow] (viirya)
- Include field name in merge error message #3113 [arrow] (andygrove)
- Add PrimitiveArray::unary_opt #3110 [arrow] (tustvold)
- Implements more temporal kernels using time_fraction_dyn #3107 [arrow] (viirya)
- cast: support unsigned numeric type to decimal128 #3106 [arrow] (liukun4515)
- Expose
SortingColumn
in parquet files #3103 [parquet] (askoa) - parquet bloom filter part II: read sbbf bitset from row group reader, update API, and add cli demo #3102 [parquet] (Jimexist)
- Parse Time32/Time64 from formatted string #3101 [arrow] (Jefffrey)
- Cleanup temporal _internal functions #3099 [arrow] (viirya)
- Improve schema mismatch error message #3098 [arrow] (askoa)
- Fix clippy by avoiding deprecated functions in chrono #3096 [parquet] [arrow] (viirya)
- Minor: Add diagrams and documentation to row format #3094 [arrow] (alamb)
- Minor: Use ArrowNativeTypeOp instead of total_cmp directly #3087 [arrow] (viirya)
- Check overflow while casting between decimal types #3076 [arrow] (viirya)
- add bloom filter implementation based on split block (sbbf) spec #3057 [parquet] (Jimexist)
- Add FixedSizeBinaryArray::try_from_sparse_iter_with_size #3054 [arrow] (maxburke)
27.0.0 (2022-11-11)
Breaking changes:
- Recurse into Dictionary value type in DataType::is_nested #3083 [arrow] (tustvold)
- early type checks in
RowConverter
#3080 [arrow] (crepererum) - Add Decimal128 and Decimal256 to downcast_primitive #3056 [arrow] (viirya)
- Replace remaining _generic temporal kernels with _dyn kernels #3046 [arrow] (viirya)
- Replace year_generic with year_dyn #3041 [arrow] (viirya)
- Validate decimal256 with i256 directly #3025 [arrow] (viirya)
- Hadoop LZ4 Support for LZ4 Codec #3013 [parquet] (marioloko)
- Replace hour_generic with hour_dyn #3006 [arrow] (viirya)
- Accept any &dyn Array in nullif kernel #2940 [arrow] (tustvold)
Implemented enhancements:
- Row Format: Option to detach/own a row #3078 [arrow]
- Row Format: API to check if datatypes are supported #3077 [arrow]
- Deprecate Buffer::count_set_bits #3067 [arrow]
- Add Decimal128 and Decimal256 to downcast_primitive #3055 [arrow]
- Improved UX of creating
TimestampNanosecondArray
with timezones #3042 [arrow] - Cast decimal256 to signed integer #3039 [arrow]
- Support casting Date64 to Timestamp #3037 [arrow]
- Check overflow when casting floating point value to decimal256 #3032 [arrow]
- Compare i256 in validate_decimal256_precision #3024 [arrow]
- Check overflow when casting floating point value to decimal128 #3020 [arrow]
- Add macro downcast_temporal_array #3008 [arrow]
- Replace hour_generic with hour_dyn #3005 [arrow]
- Replace temporal _generic kernels with dyn #3004 [arrow]
- Add
RowSelection::intersection
#3003 [parquet] - I would like to round rather than truncate when casting f64 to decimal #2997 [arrow]
- arrow::compute::kernels::temporal should support nanoseconds #2995 [arrow]
- Release Arrow
26.0.0
(next release after25.0.0
) #2953 [parquet] [arrow] [arrow-flight] - Add timezone offset for debug format of Timestamp with Timezone #2917 [arrow]
- Support merge RowSelectors when creating RowSelection #2858 [parquet]
Fixed bugs:
- Inconsistent Nan Handling Between Scalar and Non-Scalar Comparison Kernels #3074 [arrow]
- Debug format for timestamp ignores timezone #3069 [arrow]
- Row format decode loses timezone #3063 [arrow]
- binary operator produces incorrect result on arrays with resized null buffer #3061 [arrow]
- RLEDecoder Panics on Null Padded Pages #3035 [parquet]
- Nullif with incorrect valid_count #3031 [arrow]
- RLEDecoder::get_batch_with_dict may panic on bit-packed runs longer than 1024 #3029 [parquet]
- Converted type is None according to Parquet Tools then utilizing logical types #3017
- CompressionCodec LZ4 incompatible with C++ implementation #2988 [parquet]
Documentation updates:
Merged pull requests:
- Improved UX of creating
TimestampNanosecondArray
with timezones #3088 [arrow] (src255) - Remove unused range module #3085 [parquet] (tustvold)
- Make intersect_row_selections a member function #3084 [parquet] (tustvold)
- Update hashbrown requirement from 0.12 to 0.13 #3081 [parquet] [arrow] (dependabot[bot])
- feat: add
OwnedRow
#3079 [arrow] (crepererum) - Use ArrowNativeTypeOp on non-scalar comparison kernels #3075 [arrow] (viirya)
- Add missing inline to ArrowNativeTypeOp #3073 [arrow] (tustvold)
- fix debug information for Timestamp with Timezone #3072 [arrow] (waitingkuo)
- Deprecate Buffer::count_set_bits (#3067) #3071 [arrow] (tustvold)
- Add compare to ArrowNativeTypeOp #3070 [arrow] (tustvold)
- Minor: Improve docstrings on WriterPropertiesBuilder #3068 [parquet] (alamb)
- Faster f64 inequality #3065 [arrow] (tustvold)
- Fix row format decode loses timezone (#3063) #3064 [arrow] (tustvold)
- Fix null_count computation in binary #3062 [arrow] (viirya)
- Faster f64 equality #3060 [arrow] (tustvold)
- Update arrow-flight subcrates (#3044) #3052 [arrow-flight] (tustvold)
- Minor: Remove cloning ArrayData in with_precision_and_scale #3050 [arrow] (viirya)
- Split out arrow-json (#3044) #3049 [arrow] (tustvold)
- Move
intersect_row_selections
from datafusion to arrow-rs. #3047 [parquet] (Ted-Jiang) - Split out arrow-csv (#2594) #3044 [arrow] (tustvold)
- Move reader_parser to arrow-cast (#3022) #3043 [arrow] (tustvold)
- Cast decimal256 to signed integer #3040 [arrow] (viirya)
- Enable casting from Date64 to Timestamp #3038 [arrow] (gruuya)
- Fix decoding long and/or padded RLE data (#3029) (#3035) #3036 [parquet] (tustvold)
- Fix nullif when existing array has no nulls #3034 [arrow] (tustvold)
- Check overflow when casting floating point value to decimal256 #3033 [arrow] (viirya)
- Update parquet to depend on arrow subcrates #3028 [parquet] (tustvold)
- Make various i256 methods const #3026 [arrow] (tustvold)
- Split out arrow-ipc #3022 [arrow] (tustvold)
- Check overflow while casting floating point value to decimal128 #3021 [arrow] (viirya)
- Update arrow-flight #3019 [arrow-flight] (tustvold)
- Move ArrowNativeTypeOp to arrow-array (#2594) #3018 [arrow] (tustvold)
- Support cast timestamp to time #3016 [arrow] (naosense)
- Add filter example #3014 [arrow] (tustvold)
- Check overflow when casting integer to decimal #3009 [arrow] (viirya)
- Add macro downcast_temporal_array #3007 [arrow] (viirya)
- Parquet Writer: Make column descriptor public on the writer #3002 [parquet] (pier-oliviert)
- Update chrono-tz requirement from 0.7 to 0.8 #3001 [arrow] (dependabot[bot])
- Round instead of Truncate while casting float to decimal #3000 [arrow] (waitingkuo)
- Support Predicate Pushdown for Parquet Lists (#2108) #2999 [parquet] (tustvold)
- Split out arrow-cast (#2594) #2998 [arrow] (tustvold)
arrow::compute::kernels::temporal
should support nanoseconds #2996 [arrow] (comphead)- Add
RowSelection::from_selectors_and_combine
to merge RowSelectors #2994 [parquet] (Ted-Jiang) - Simplify Single-Column Dictionary Sort #2993 [arrow] (tustvold)
- Minor: Add entry to changelog for 26.0.0 RC2 fix #2992 (alamb)
- Fix ignored limit on
lexsort_to_indices
#2991 [arrow] (alamb) - Add clone and equal functions for CastOptions #2985 [arrow] (askoa)
- minor: remove redundant prefix #2983 [arrow] [arrow-flight] (jackwener)
- Compare dictionary decimal arrays #2982 [arrow] (viirya)
- Compare dictionary and non-dictionary decimal arrays #2980 [arrow] (viirya)
- Add decimal comparison kernel support #2978 [arrow] (viirya)
- Move concat kernel to arrow-select (#2594) #2976 [arrow] (tustvold)
- Specialize interleave for byte arrays (#2864) #2975 [arrow] (tustvold)
- Use unary function for numeric to decimal cast #2973 [arrow] (viirya)
- Specialize filter kernel for binary arrays (#2969) #2971 [arrow] (tustvold)
- Combine take_utf8 and take_binary (#2969) #2970 [arrow] (tustvold)
- Faster Scalar Dictionary Comparison ~10% #2968 [arrow] (tustvold)
- Move
byte_size
from datafusion::physical_expr #2965 [arrow] (avantgardnerio) - Pass decompressed size to parquet Codec::decompress (#2956) #2959 [parquet] (marioloko)
- Add Decimal Arithmetic #2881 [arrow] (tustvold)
26.0.0 (2022-10-28)
Breaking changes:
- Cast Timestamps to RFC3339 strings #2934
- Remove Unused NativeDecimalType #2945 [arrow] (tustvold)
- Format Timestamps as RFC3339 #2939 [arrow] (waitingkuo)
- Update flatbuffers to resolve RUSTSEC-2021-0122 #2895 [arrow] (tustvold)
- replace
from_timestamp
byfrom_timestamp_opt
#2894 [arrow] (waitingkuo)
Implemented enhancements:
- Optimized way to count the numbers of
true
andfalse
values in a BooleanArray #2963 [arrow] - Add pow to i256 #2954 [arrow]
- Write Generic Code over [Large]BinaryArray and [Large]StringArray #2946 [arrow]
- Add Page Row Count Limit #2941 [parquet]
- prettyprint to show timezone offset for timestamp with timezone #2937 [arrow]
- Cast numeric to decimal256 #2922 [arrow]
- Add
freeze_with_dictionary
API toMutableArrayData
#2914 [arrow] - Support decimal256 array in sort kernels #2911 [arrow]
- support
[+/-]hhmm
and[+/-]hh
as fixedoffset timezone format #2910 [arrow] - Cleanup decimal sort function #2907 [arrow]
- replace
from_timestamp
byfrom_timestamp_opt
#2892 [arrow] - Move Primitive arity kernels to arrow-array #2787 [arrow]
- add overflow-checking for negative arithmetic kernel #2662 [arrow]
Fixed bugs:
- Subtle compatibility issue with serve_arrow #2952
- error[E0599]: no method named
total_cmp
found for structf16
in the current scope #2926 [arrow] - Fail at rowSelection
and_then
method #2925 [parquet] - Ordering not implemented for FixedSizeBinary types #2904 [arrow]
- Parquet API: Could not convert timestamp before unix epoch to string/json #2897 [parquet]
- Overly Pessimistic RLE Size Estimation #2889 [parquet]
- Memory alignment error in
RawPtrBox::new
#2882 [arrow] - Compilation error under chrono-tz feature #2878 [arrow]
- AHash Statically Allocates 64 bytes #2875 [parquet]
parquet::arrow::arrow_writer::ArrowWriter
ignores page size properties #2853 [parquet]
Documentation updates:
Closed issues:
- SerializedFileWriter comments about multiple call on consumed self #2935 [parquet]
- Pointer freed error when deallocating ArrayData with shared memory buffer #2874
- Release Arrow
25.0.0
(next release after24.0.0
) #2820 [parquet] [arrow] [arrow-flight] - Replace DecimalArray with PrimitiveArray #2637 [parquet] [arrow]
Merged pull requests:
- Fix ignored limit on lexsort_to_indices (#2991) #2991 [arrow] (alamb)
- Fix GenericListArray::try_new_from_array_data error message (#526) #2961 [arrow] (tustvold)
- Fix take string on sliced indices #2960 [arrow] (tustvold)
- Add BooleanArray::true_count and BooleanArray::false_count #2957 [arrow] (tustvold)
- Add pow to i256 #2955 [arrow] (viirya)
- fix datatype for timestamptz debug fmt #2948 [arrow] (waitingkuo)
- Add GenericByteArray (#2946) #2947 [arrow] (tustvold)
- Specialize interleave string ~2-3x faster #2944 [arrow] (tustvold)
- Added support for LZ4_RAW compression. (#1604) #2943 [parquet] (marioloko)
- Add optional page row count limit for parquet
WriterProperties
(#2941) #2942 [parquet] (tustvold) - Cleanup orphaned doc comments (#2935) #2938 [parquet] (tustvold)
- support more fixedoffset tz format #2936 [arrow] (waitingkuo)
- Benchmark with prepared row converter #2930 [arrow] (tustvold)
- Add lexsort benchmark (#2871) #2929 [arrow] (tustvold)
- Improve panic messages for RowSelection::and_then (#2925) #2928 [parquet] (tustvold)
- Update required half from 2.0 --> 2.1 #2927 [arrow] (alamb)
- Cast numeric to decimal256 #2923 [arrow] (viirya)
- Cleanup generated proto code #2921 [arrow-flight] (tustvold)
- Deprecate TimestampArray from_vec and from_opt_vec #2919 [parquet] [arrow] (tustvold)
- Support decimal256 array in sort kernels #2912 [arrow] (viirya)
- Add timezone abstraction #2909 [arrow] (tustvold)
- Cleanup decimal sort function #2908 [arrow] (viirya)
- Simplify TimestampArray from_vec with timezone #2906 [arrow] (tustvold)
- Implement ord for FixedSizeBinary types #2905 [arrow] (maxburke)
- Update chrono-tz requirement from 0.6 to 0.7 #2903 [arrow] (dependabot[bot])
- Parquet record api support timestamp before epoch #2899 [parquet] (AnthonyPoncet)
- Specialize interleave integer #2898 [arrow] (tustvold)
- Support overflow-checking variant of negate kernel #2893 [arrow] (viirya)
- Respect Page Size Limits in ArrowWriter (#2853) #2890 [parquet] (tustvold)
- Improve row format docs #2888 [arrow] (tustvold)
- Add FixedSizeList::from_iter_primitive #2887 [arrow] (tustvold)
- Simplify ListArray::from_iter_primitive #2886 [arrow] (tustvold)
- Split out value selection kernels into arrow-select (#2594) #2885 [arrow] (tustvold)
- Increase default IPC alignment to 64 (#2883) #2884 [arrow] (tustvold)
- Copying inappropriately aligned buffer in ipc reader #2883 [arrow] (viirya)
- Validate decimal IPC read (#2387) #2880 [arrow] (tustvold)
- Fix compilation error under
chrono-tz
feature #2879 [arrow] (viirya) - Don't validate decimal precision in ArrayData (#2637) #2873 [arrow] (tustvold)
- Add downcast_integer and downcast_primitive #2872 [arrow] (tustvold)
- Filter DecimalArray as PrimitiveArray ~5x Faster (#2637) #2870 [arrow] (tustvold)
- Treat DecimalArray as PrimitiveArray in row format #2866 [arrow] (tustvold)
25.0.0 (2022-10-14)
Breaking changes:
- Make DecimalArray as PrimitiveArray #2857 [parquet] [arrow] (viirya)
- fix timestamp parsing while no explicit timezone given #2814 [arrow] (waitingkuo)
- Support Arbitrary Number of Arrays in downcast_primitive_array #2809 (tustvold)
Implemented enhancements:
- Restore Integration test JSON schema serialization #2876 [arrow]
- Fix various invalid_html_tags clippy error #2861 [parquet] [arrow] [arrow-flight]
- Replace complicated temporal macro with generic functions #2851 [arrow]
- Add NaN handling in dyn scalar comparison kernels #2829 [arrow]
- Add overflow-checking variant of sum kernel #2821 [arrow]
- Update to Clap 4 #2817 [parquet]
- Safe API to Operate on Dictionary Values #2797 [arrow]
- Add modulus op into
ArrowNativeTypeOp
#2753 [arrow] - Allow creating of TimeUnit instances without direct dependency on parquet-format #2708 [parquet]
- Arrow Row Format #2677 [arrow]
Fixed bugs:
- Don't try to infer nulls in CSV schema inference #2859 [arrow]
parquet::arrow::arrow_writer::ArrowWriter
ignores page size properties #2853 [parquet]- Introducing ArrowNativeTypeOp made it impossible to call kernels from generics #2839 [arrow]
- Unsound ArrayData to Array Conversions #2834 [parquet] [arrow]
- Regression:
the trait bound for<'de> arrow::datatypes::Schema: serde::de::Deserialize<'de> is not satisfied
#2825 [arrow] - convert string to timestamp shouldn't apply local timezone offset if there's no explicit timezone info in the string #2813 [arrow]
Closed issues:
Merged pull requests:
- Take decimal as primitive (#2637) #2869 [arrow] (tustvold)
- Split out arrow-integration-test crate #2868 [arrow] (tustvold)
- Decimal cleanup (#2637) #2865 [parquet] [arrow] (tustvold)
- Fix various invalid_html_tags clippy errors #2862 [parquet] [arrow] [arrow-flight] (viirya)
- Don't try to infer nullability in CSV reader #2860 [arrow] (Dandandan)
- Fix page size on dictionary fallback #2854 [parquet] (thinkharderdev)
- Replace complicated temporal macro with generic functions #2850 [arrow] (viirya)
- [feat] Add pub api for checking column index is sorted. #2849 [parquet] (Ted-Jiang)
- parquet: Add
snap
option to README #2847 [parquet] (exyi) - Cleanup cast kernel #2846 [arrow] (tustvold)
- Simplify ArrowNativeType #2841 [arrow] (tustvold)
- Expose ArrowNativeTypeOp trait to make it useful for type bound #2840 [arrow] (viirya)
- Add
interleave
kernel (#1523) #2838 [arrow] (tustvold) - Handle empty offsets buffer (#1824) #2836 [arrow] (tustvold)
- Validate ArrayData type when converting to Array (#2834) #2835 [parquet] [arrow] (tustvold)
- Derive ArrowPrimitiveType for Decimal128Type and Decimal256Type (#2637) #2833 [arrow] (tustvold)
- Add NaN handling in dyn scalar comparison kernels #2830 [arrow] (viirya)
- Simplify OrderPreservingInterner allocation strategy ~97% faster (#2677) #2827 [arrow] (tustvold)
- Convert rows to arrays (#2677) #2826 [arrow] (tustvold)
- Add overflow-checking variant of sum kernel #2822 [arrow] (viirya)
- Update Clap dependency to version 4 #2819 [parquet] (jgoday)
- Fix i256 checked multiplication #2818 [arrow] (tustvold)
- Add string_dictionary benches for row format (#2677) #2816 [arrow] (tustvold)
- Add OrderPreservingInterner::lookup (#2677) #2815 [arrow] (tustvold)
- Simplify FixedLengthEncoding #2812 [arrow] (tustvold)
- Implement ArrowNumericType for Float16Type #2810 [arrow] (tustvold)
- Add DictionaryArray::with_values to make it easier to operate on dictionary values #2798 [arrow] (tustvold)
- Add i256 (#2637) #2781 [arrow] (tustvold)
- Add modulus ops into
ArrowNativeTypeOp
#2756 [arrow] (HaoYang670) - feat: cast List / LargeList to Utf8 / LargeUtf8 #2588 [arrow] (gandronchik)
24.0.0 (2022-09-30)
Breaking changes:
- Cleanup
ArrowNativeType
(#1918) #2793 [parquet] [arrow] (tustvold) - Remove
ArrowNativeType::FromStr
#2775 [arrow] (tustvold) - Split out
arrow-array
crate (#2594) #2769 [arrow] (tustvold) - Add
dyn_arith_dict
feature flag #2760 [arrow] (tustvold) - Split out
arrow-data
into a separate crate #2746 [arrow] (tustvold) - Split out arrow-schema (#2594) #2711 [arrow] (tustvold)
Implemented enhancements:
- Include field name in Parquet PrimitiveTypeBuilder error messages #2804 [parquet]
- Add PrimitiveArray::reinterpret_cast #2785
- BinaryBuilder and StringBuilder initialization parameters in struct_builder may be wrong #2783 [arrow]
- Add divide scalar dyn kernel which produces null for division by zero #2767 [arrow]
- Add divide dyn kernel which produces null for division by zero #2763 [arrow]
- Improve performance of checked kernels on non-null data #2747 [arrow]
- Add overflow-checking variants of arithmetic dyn kernels #2739 [arrow]
- The
binary
function should not panic on unequaled array length. #2721 [arrow]
Fixed bugs:
- min compute kernel is incorrect with sliced buffers in arrow 23 #2779 [arrow]
try_unary_dict
should check value type of dictionary array #2754 [arrow]
Closed issues:
- Add back JSON import/export for schema #2762
- null casting and coercion for Decimal128 #2761
- Json decoder behavior changed from versions 21 to 21 and returns non-sensical num_rows for RecordBatch #2722 [arrow]
- Release Arrow
23.0.0
(next release after22.0.0
) #2665 [parquet] [arrow] [arrow-flight]
Merged pull requests:
- add field name to parquet PrimitiveTypeBuilder error messages #2805 [parquet] (andygrove)
- Add struct equality test case (#514) #2791 [arrow] (tustvold)
- Move unary kernels to arrow-array (#2787) #2789 [arrow] (tustvold)
- Disable test harness for string_dictionary_builder benchmark #2788 [arrow] (tustvold)
- Add PrimitiveArray::reinterpret_cast (#2785) #2786 (tustvold)
- Fix BinaryBuilder and StringBuilder Capacity Allocation in StructBuilder #2784 (chunshao90)
- Fix min/max computation for sliced arrays (#2779) #2780 [arrow] (tustvold)
- Fix Backwards Compatible Parquet List Encodings (#1915) #2774 [parquet] (tustvold)
- MINOR: Fix clippy for rust 1.64.0 #2772 [parquet] [arrow] (viirya)
- MINOR: Fix clippy for rust 1.64.0 #2771 (viirya)
- Add divide scalar dyn kernel which produces null for division by zero #2768 [arrow] (viirya)
- Add divide dyn kernel which produces null for division by zero #2764 [arrow] (viirya)
- Add value type check in try_unary_dict #2755 [arrow] (viirya)
- Fix
verify_release_candidate.sh
for new arrow subcrates #2752 (alamb) - Fix: Issue 2721 : binary function should not panic but return error w… #2750 [arrow] (aksharau)
- Speed up checked kernels for non-null data (~1.4-5x faster) #2749 [arrow] (Dandandan)
- Add overflow-checking variants of arithmetic dyn kernels #2740 [arrow] (viirya)
- Trim parquet row selection #2705 [parquet] (tustvold)
23.0.0 (2022-09-16)
Breaking changes:
- Move JSON Test Format To integration-testing #2724 [arrow] (tustvold)
- Split out arrow-buffer crate (#2594) #2693 [arrow] (tustvold)
- Simplify DictionaryBuilder constructors (#2684) (#2054) #2685 [parquet] [arrow] (tustvold)
- Deprecate RecordBatch::concat replace with concat_batches (#2594) #2683 [arrow] (tustvold)
- Add overflow-checking variant for primitive arithmetic kernels and explicitly define overflow behavior #2643 [arrow] (viirya)
- Update thrift v0.16 and vendor parquet-format (#2502) #2626 [parquet] (tustvold)
- Update flight definitions including backwards-incompatible change to GetSchema #2586 [arrow] [arrow-flight] (liukun4515)
Implemented enhancements:
- Cleanup like and nlike utf8 kernels #2744 [arrow]
- Speedup eq and neq kernels for utf8 arrays #2742 [arrow]
- API for more ergonomic construction of
RecordBatchOptions
#2728 [arrow] - Automate updates to
CHANGELOG-old.md
#2726 - Don't check the
DivideByZero
error for float modulus #2720 [arrow] try_binary
should not panic on unequaled array length. #2715 [arrow]- Add benchmark for bitwise operation #2714 [arrow]
- Add overflow-checking variants of arithmetic scalar dyn kernels #2712 [arrow]
- Add divide_opt kernel which produce null values on division by zero error #2709 [arrow]
- Add
DataType
function to detect nested types #2704 [arrow] - Add support of sorting dictionary of other primitive types #2700 [arrow]
- Sort indices of dictionary string values #2697 [arrow]
- Support empty projection in
RecordBatch::project
#2690 [arrow] - Support sorting dictionary encoded primitive integer arrays #2679 [arrow]
- Use BitIndexIterator in min_max_helper #2674 [arrow]
- Support building comparator for dictionaries of primitive integer values #2672 [arrow]
- Change max/min string macro to generic helper function
min_max_helper
#2657 [arrow] - Add overflow-checking variant of arithmetic scalar kernels #2651 [arrow]
- Compare dictionary with binary array #2644 [arrow]
- Add overflow-checking variant for primitive arithmetic kernels #2642 [arrow]
- Use
downcast_primitive_array
in arithmetic kernels #2639 [arrow] - Support DictionaryArray in temporal kernels #2622 [arrow]
- Inline Generated Thift Code Into Parquet Crate #2502 [parquet]
Fixed bugs:
- Escape contains patterns for utf8 like kernels #2745 [arrow]
- Float Array should not panic on
DivideByZero
in theDivide
kernel #2719 [arrow] - DictionaryBuilders can Create Invalid DictionaryArrays #2684 [parquet] [arrow]
arrow
crate does not build withfeatures = ["ffi"]
anddefault_features = false
. #2670 [arrow]- Invalid results with
RowSelector
havingrow_count
of 0 #2669 [parquet] - clippy error: unresolved import
crate::array::layout
#2659 [arrow] - Cast the numeric without the
CastOptions
#2648 [arrow] - Explicitly define overflow behavior for primitive arithmetic kernels #2641 [arrow]
- update the
flight.proto
and fix schema to SchemaResult #2571 [arrow] [arrow-flight] - Panic when first data page is skipped using ColumnChunkData::Sparse #2543 [parquet]
SchemaResult
in IPC deviates from other implementations #2445 [arrow] [arrow-flight]
Closed issues:
Merged pull requests:
- Speedup string equal/not equal to empty string, cleanup like/ilike kernels, fix escape bug #2743 [arrow] (Dandandan)
- Partially flatten arrow-buffer #2737 [arrow] (tustvold)
- Automate updates to
CHANGELOG-old.md
#2732 (iajoiner) - Update read parquet example in parquet/arrow home #2730 [parquet] (datapythonista)
- Better construction of RecordBatchOptions #2729 [arrow] (askoa)
- benchmark: bitwise operation #2718 [arrow] (liukun4515)
- Update
try_binary
andchecked_ops
, and removemath_checked_op
#2717 [arrow] (HaoYang670) - Support bitwise op in kernel: or,xor,not #2716 [arrow] (liukun4515)
- Add overflow-checking variants of arithmetic scalar dyn kernels #2713 [arrow] (viirya)
- Add divide_opt kernel which produce null values on division by zero error #2710 [arrow] (viirya)
- Add DataType::is_nested() #2707 [arrow] (kfastov)
- Update criterion requirement from 0.3 to 0.4 #2706 [parquet] [arrow] (dependabot[bot])
- Support bitwise and operation in the kernel #2703 [arrow] (liukun4515)
- Add support of sorting dictionary of other primitive arrays #2701 [arrow] (viirya)
- Clarify docs of binary and string builders #2699 [arrow] (datapythonista)
- Sort indices of dictionary string values #2698 [arrow] (viirya)
- Add support for empty projection in RecordBatch::project #2691 [arrow] (Dandandan)
- Temporarily disable Golang integration tests re-enable JS #2689 (tustvold)
- Verify valid UTF-8 when converting byte array (#2205) #2686 [arrow] (tustvold)
- Support sorting dictionary encoded primitive integer arrays #2680 [arrow] (viirya)
- Skip RowSelectors with zero rows #2678 [parquet] (askoa)
- Faster Null Path Selection in ArrayData Equality #2676 [arrow] (dhruv9vats)
- Use BitIndexIterator in min_max_helper #2675 [arrow] (viirya)
- Support building comparator for dictionaries of primitive integer values #2673 [arrow] (viirya)
- json feature always requires base64 feature #2668 [parquet] (eagletmt)
- Add try_unary, binary, try_binary kernels ~90% faster #2666 [arrow] (tustvold)
- Use downcast_dictionary_array in unary_dyn #2663 [arrow] (tustvold)
- optimize the
numeric_cast_with_error
#2661 [arrow] (liukun4515) - ffi feature also requires layout #2660 [arrow] (viirya)
- Change max/min string macro to generic helper function min_max_helper #2658 [arrow] (viirya)
- Fix flaky test
test_fuzz_async_reader_selection
#2656 [parquet] (thinkharderdev) - MINOR: Ignore flaky test test_fuzz_async_reader_selection #2655 [parquet] (viirya)
- MutableBuffer::typed_data - shared ref access to the typed slice #2652 [arrow] (medwards)
- Overflow-checking variant of arithmetic scalar kernels #2650 [arrow] (viirya)
- support
CastOption
for casting numeric #2649 [arrow] (liukun4515) - Help LLVM vectorize comparison kernel ~50-80% faster #2646 [arrow] (tustvold)
- Support comparison between dictionary array and binary array #2645 [arrow] (viirya)
- Use
downcast_primitive_array
in arithmetic kernels #2640 [arrow] (viirya) - Fully qualifying parquet items #2638 (dingxiangfei2009)
- Support DictionaryArray in temporal kernels #2623 [arrow] (viirya)
- Comparable Row Format #2593 [arrow] (tustvold)
- Fix bug in page skipping #2552 [parquet] (thinkharderdev)
22.0.0 (2022-09-02)
Breaking changes:
- Use
total_cmp
for floating value ordering and removenan_ordering
feature flag #2614 [arrow] (viirya) - Gate dyn comparison of dictionary arrays behind
dyn_cmp_dict
#2597 [arrow] (tustvold) - Move JsonSerializable to json module (#2300) #2595 [arrow] (tustvold)
- Decimal precision scale datatype change #2532 [parquet] [arrow] (psvri)
- Refactor PrimitiveBuilder Constructors #2518 [parquet] [arrow] (psvri)
- Refactoring DecimalBuilder constructors #2517 [arrow] (psvri)
- Refactor FixedSizeBinaryBuilder Constructors #2516 [parquet] [arrow] (psvri)
- Refactor BooleanBuilder Constructors #2515 [arrow] (psvri)
- Refactor UnionBuilder Constructors #2488 [arrow] (psvri)
Implemented enhancements:
- Add Macros to assist with static dispatch #2635 [arrow]
- Support comparison between DictionaryArray and BooleanArray #2617 [arrow]
- Use
total_cmp
for floating value ordering and removenan_ordering
feature flag #2613 [arrow] - Support empty projection in CSV, JSON readers #2603 [arrow]
- Support SQL-compliant NaN ordering between for DictionaryArray and non-DictionaryArray #2599 [arrow]
- Add
dyn_cmp_dict
feature flag to gate dyn comparison of dictionary arrays #2596 [arrow] - Add max_dyn and min_dyn for max/min for dictionary array #2584 [arrow]
- Allow FlightSQL implementers to extend
do_get()
#2581 [arrow-flight] - Support SQL-compliant behavior on
eq_dyn
,neq_dyn
,lt_dyn
,lt_eq_dyn
,gt_dyn
,gt_eq_dyn
#2569 [arrow] - Add sql-compliant feature for enabling sql-compliant kernel behavior #2568
- Calculate
sum
for dictionary array #2565 [arrow] - Add test for float nan comparison #2556 [arrow]
- Compare dictionary with string array #2548 [arrow]
- Compare dictionary with primitive array in
lt_dyn
,lt_eq_dyn
,gt_dyn
,gt_eq_dyn
#2538 [arrow] - Compare dictionary with primitive array in
eq_dyn
andneq_dyn
#2535 [arrow] - UnionBuilder Create Children With Capacity #2523 [arrow]
- Speed up
like_utf8_scalar
for%pat%
#2519 [arrow] - Replace macro with TypedDictionaryArray in comparison kernels #2513 [arrow]
- Use same codebase for boolean kernels #2507 [arrow]
- Use u8 for Decimal Precision and Scale #2496 [arrow]
- Integrate skip row without pageIndex in SerializedPageReader in Fuzz Test #2475 [parquet]
- Avoid unecessary copies in Arrow IPC reader #2437 [arrow]
- Add GenericColumnReader::skip_records Missing OffsetIndex Fallback #2433 [parquet]
- Support Reading PageIndex with ParquetRecordBatchStream #2430 [parquet]
- Specialize FixedLenByteArrayReader for Parquet #2318 [parquet]
- Make JSON support Optional via Feature Flag #2300 [arrow]
Fixed bugs:
- Casting timestamp array to string should not ignore timezone #2607 [arrow]
- Ilike_ut8_scalar kernals have incorrect logic #2544 [arrow]
- Always validate the array data when creating array in IPC reader #2541 [arrow]
- Int96Converter Truncates Timestamps #2480 [parquet]
- Error Reading Page Index When Not Available #2434 [parquet]
ParquetFileArrowReader::get_record_reader[_by_colum]
batch_size
overallocates #2321 [parquet]
Documentation updates:
Closed issues:
- Add support for CAST from
Interval(DayTime)
toTimestamp(Nanosecond, None)
#2606 [arrow] - Why do we check for null in TypedDictionaryArray value function #2564 [arrow]
- Add the
length
field forBuffer
#2524 [arrow] - Avoid large over allocate buffer in async reader #2512 [parquet]
- Rewriting Decimal Builders using
const_generic
. #2390 [arrow] - Rewrite Decimal Array using
const_generic
#2384 [arrow]
Merged pull requests:
- Add downcast macros (#2635) #2636 [arrow] (tustvold)
- Document all arrow features in docs.rs (#2633) #2634 [arrow] (tustvold)
- Document dyn_cmp_dict #2624 [arrow] (tustvold)
- Support comparison between DictionaryArray and BooleanArray #2618 [arrow] (viirya)
- Cast timestamp array to string array with timezone #2608 [arrow] (viirya)
- Support empty projection in CSV and JSON readers #2604 [arrow] (Dandandan)
- Make JSON support optional via a feature flag (#2300) #2601 [parquet] [arrow] (tustvold)
- Support SQL-compliant NaN ordering for DictionaryArray and non-DictionaryArray #2600 [arrow] (viirya)
- Split out integration test plumbing (#2594) (#2300) #2598 [arrow] (tustvold)
- Refactor Binary Builder and String Builder Constructors #2592 [parquet] [arrow] (psvri)
- Dictionary like scalar kernels #2591 [arrow] (psvri)
- Validate dictionary key in TypedDictionaryArray (#2578) #2589 [arrow] (tustvold)
- Add max_dyn and min_dyn for max/min for dictionary array #2585 [arrow] (viirya)
- Code cleanup of array value functions #2583 [arrow] (psvri)
- Allow overriding of do_get & export useful macro #2582 [arrow-flight] (avantgardnerio)
- MINOR: Upgrade to pyo3 0.17 #2576 [arrow] (andygrove)
- Support SQL-compliant NaN behavior on eq_dyn, neq_dyn, lt_dyn, lt_eq_dyn, gt_dyn, gt_eq_dyn #2570 [arrow] (viirya)
- Add sum_dyn to calculate sum for dictionary array #2566 [arrow] (viirya)
- struct UnionBuilder will create child buffers with capacity #2560 [arrow] (kastolars)
- Don't panic on RleValueEncoder::flush_buffer if empty (#2558) #2559 [parquet] (tustvold)
- Add the
length
field for Buffer and use moreBuffer
in IPC reader to avoid memory copy. #2557 [arrow] [arrow-flight] (HaoYang670) - Add test for float nan comparison #2555 [arrow] (viirya)
- Compare dictionary array with string array #2549 [arrow] (viirya)
- Always validate the array data (except the
Decimal
) when creating array in IPC reader #2547 [arrow] (HaoYang670) - MINOR: Fix test_row_type_validation test #2546 [arrow] (viirya)
- Fix ilike_utf8_scalar kernals #2545 [arrow] (psvri)
- fix typo #2540 (00Masato)
- Compare dictionary array and primitive array in lt_dyn, lt_eq_dyn, gt_dyn, gt_eq_dyn kernels #2539 [arrow] (viirya)
- [MINOR]Avoid large over allocate buffer in async reader #2537 [parquet] (Ted-Jiang)
- Compare dictionary with primitive array in
eq_dyn
andneq_dyn
#2533 [arrow] (viirya) - Add iterator for FixedSizeBinaryArray #2531 [arrow] (tustvold)
- add bench: decimal with byte array and fixed length byte array #2529 [parquet] (liukun4515)
- Add FixedLengthByteArrayReader Remove ComplexObjectArrayReader #2528 [parquet] (tustvold)
- Split out byte array decoders (#2318) #2527 [parquet] (tustvold)
- Use offset index in ParquetRecordBatchStream #2526 [parquet] (thinkharderdev)
- Clean the
create_array
in IPC reader. #2525 [arrow] (HaoYang670) - Remove DecimalByteArrayConvert (#2480) #2522 [parquet] (tustvold)
- Improve performance of
%pat%
(>3x speedup) #2521 [arrow] (Dandandan) - remove len field from MapBuilder #2520 [arrow] (psvri)
- Replace macro with TypedDictionaryArray in comparison kernels #2514 [arrow] (viirya)
- Avoid large over allocate buffer in sync reader #2511 [parquet] (Ted-Jiang)
- Avoid useless memory copies in IPC reader. #2510 [arrow] (HaoYang670)
- Refactor boolean kernels to use same codebase #2508 [arrow] (viirya)
- Remove Int96Converter (#2480) #2481 [parquet] (tustvold)
21.0.0 (2022-08-18)
Breaking changes:
- Return structured
ColumnCloseResult
(#2465) #2466 [parquet] (tustvold) - Push
ChunkReader
intoSerializedPageReader
(#2463) #2464 [parquet] (tustvold) - Revise FromIterator for Decimal128Array to use Into instead of Borrow #2442 [parquet] [arrow] (viirya)
- Use Fixed-Length Array in BasicDecimal new and raw_value #2405 [arrow] (HaoYang670)
- Remove deprecated ParquetWriter #2380 [parquet] (tustvold)
- Remove deprecated SliceableCursor and InMemoryWriteableCursor #2378 [parquet] (tustvold)
Implemented enhancements:
- add into_inner method to ArrowWriter #2491 [parquet]
- Remove byteorder dependency #2472 [parquet]
- Return Structured ColumnCloseResult from GenericColumnWriter::close #2465 [parquet]
- Push
ChunkReader
intoSerializedPageReader
#2463 [parquet] - Support SerializedPageReader::skip_page without OffsetIndex #2459 [parquet]
- Support Time64/Time32 comparison #2457 [arrow]
- Revise FromIterator for Decimal128Array to use Into instead of Borrow #2441 [parquet]
- Support
RowFilter
withinParquetRecordBatchReader
#2431 [parquet] - Remove the field
StructBuilder::len
#2429 [arrow] - Standardize creation and configuration of parquet --> Arrow readers (
ParquetRecordBatchReaderBuilder
) #2427 [parquet] - Use
OffsetIndex
to Prune IO inParquetRecordBatchStream
#2426 [parquet] - Support
peek_next_page
andskip_next_page
inInMemoryPageReader
#2406 [parquet] - Support casting from
Utf8
/LargeUtf8
toBinary
/LargeBinary
#2402 [arrow] - Support casting between
Decimal128
andDecimal256
arrays #2375 [arrow] - Combine multiple selections into the same batch size in
skip_records
#2358 [parquet] - Add API to change timezone for timestamp array #2346 [arrow]
- Change the output of
read_buffer
Arrow IPC API to returnResult<_>
#2342 [arrow] - Allow
skip_records
inGenericColumnReader
to skip across row groups #2331 [parquet] - Optimize the validation of
Decimal256
#2320 [arrow] - Implement Skip for
DeltaBitPackDecoder
#2281 [parquet] - Changes to
ParquetRecordBatchStream
to support row filtering in DataFusion #2270 [parquet] - Add
ArrayReader::skip_records
API #2197 [parquet]
Fixed bugs:
- Panic in SerializedPageReader without offset index #2503 [parquet]
- MapArray columns don't handle null values correctly #2484 [arrow]
- There is no compiler error when using an invalid Decimal type. #2440 [arrow]
- Flight SQL Server sends incorrect response for
DoPutUpdateResult
#2403 [arrow-flight] AsyncFileReader
No Longer Object-Safe #2372 [parquet]- StructBuilder Does not Verify Child Lengths #2252 [arrow]
Closed issues:
Merged pull requests:
- Fix bug in page skipping #2504 [parquet] (thinkharderdev)
- Fix
MapArrayReader
(#2484) (#1699) (#1561) #2500 [parquet] (tustvold) - Add API to Retrieve Finished Writer from Parquet Writer #2498 [parquet] (jiacai2050)
- Derive Copy,Clone for BasicDecimal #2495 [arrow] (tustvold)
- remove byteorder dependency from parquet #2486 [parquet] (psvri)
- parquet-read: add support to read parquet data from stdin #2482 [parquet] (nvartolomei)
- Remove Position trait (#1163) #2479 [parquet] (tustvold)
- Add ChunkReader::get_bytes #2478 [parquet] (tustvold)
- RFC: Simplify decimal (#2440) #2477 [arrow] (tustvold)
- Use Parquet OffsetIndex to prune IO with RowSelection #2473 [parquet] (thinkharderdev)
- Remove unnecessary Option from Int96 #2471 [parquet] (tustvold)
- remove len field from StructBuilder #2468 [arrow] (psvri)
- Make Parquet reader filter APIs public (#1792) #2467 [parquet] (tustvold)
- enable ipc compression feature for integration test #2462 (liukun4515)
- Simplify implementation of Schema #2461 [arrow] (HaoYang670)
- Support skip_page missing OffsetIndex Fallback in SerializedPageReader #2460 [parquet] (Ted-Jiang)
- support time32/time64 comparison #2458 [arrow] (waitingkuo)
- Utf8array casting #2456 [arrow] (psvri)
- Remove outdated license text #2455 (alamb)
- Support RowFilter within ParquetRecordBatchReader (#2431) #2452 [parquet] (tustvold)
- benchmark: decimal builder and vec to decimal array #2450 [arrow] (liukun4515)
- Collocate Decimal Array Validation Logic #2446 [arrow] (liukun4515)
- Minor: Move From trait for Decimal256 impl to decimal.rs #2443 [arrow] (liukun4515)
- decimal benchmark: arrow reader decimal from parquet int32 and int64 #2438 [parquet] (liukun4515)
- MINOR: Simplify
split_second
function #2436 [arrow] (viirya) - Add ParquetRecordBatchReaderBuilder (#2427) #2435 [parquet] (tustvold)
- refactor: refine validation for decimal128 array #2428 [arrow] (liukun4515)
- Benchmark of casting decimal arrays #2424 [arrow] (viirya)
- Test non-annotated repeated fields (#2394) #2422 [parquet] (tustvold)
- Fix #2416 Automatic version updates for github actions with dependabot #2417 (iemejia)
- Add validation logic for StructBuilder::finish #2413 [arrow] (psvri)
- test: add test for reading decimal value from primitive array reader #2411 [parquet] (liukun4515)
- Upgrade ahash to 0.8 #2410 [parquet] [arrow] (Dandandan)
- Support peek_next_page and skip_next_page in InMemoryPageReader #2407 [parquet] (Ted-Jiang)
- Fix DoPutUpdateResult #2404 [arrow-flight] (avantgardnerio)
- Implement Skip for DeltaBitPackDecoder #2393 [parquet] (Ted-Jiang)
- fix: Don't instantiate the scalar composition code quadratically for dictionaries #2391 [arrow] (Marwes)
- MINOR: Remove unused trait and some cleanup #2389 [arrow] (viirya)
- Decouple parquet fuzz tests from converter (#1661) #2386 [parquet] (tustvold)
- Rewrite
Decimal
andDecimalArray
usingconst_generic
#2383 [parquet] [arrow] (HaoYang670) - Simplify BitReader (~5-10% faster) #2381 [parquet] (tustvold)
- Fix parquet clippy lints (#1254) #2377 [parquet] (tustvold)
- Cast between
Decimal128
andDecimal256
arrays #2376 [arrow] (viirya) - support compression for IPC with revamped feature flags #2369 [arrow] (alamb)
- Implement AsyncFileReader for
Box<dyn AsyncFileReader>
#2368 [parquet] (tustvold) - Remove get_byte_ranges where bound #2366 [parquet] (tustvold)
- refactor: Make read_num_bytes a function instead of a macro #2364 [parquet] (Marwes)
- refactor: Group metrics into page and column metrics structs #2363 [parquet] (Marwes)
- Speed up
Decimal256
validation based on bytes comparison and add benchmark test #2360 [parquet] [arrow] (liukun4515) - Combine multiple selections into the same batch size in skip_records #2359 [parquet] (Ted-Jiang)
- Add API to change timezone for timestamp array #2347 [arrow] (viirya)
- Clean the code in
field.rs
and add more tests #2345 [arrow] (HaoYang670) - Add Parquet RowFilter API #2335 [parquet] (tustvold)
- Make skip_records in complex_object_array can skip cross row groups #2332 [parquet] (Ted-Jiang)
- Integrate Record Skipping into Column Reader Fuzz Test #2315 [parquet] (Ted-Jiang)
20.0.0 (2022-08-05)
Breaking changes:
- Add more const evaluation for
GenericBinaryArray
andGenericListArray
: addPREFIX
and data type constructor #2327 [parquet] [arrow] (HaoYang670) - Make FFI support optional, change APIs to be
safe
(#2302) #2303 [arrow] (tustvold) - Remove
test_utils
from default features (#2298) #2299 [arrow] (tustvold) - Rename
DataType::Decimal
toDataType::Decimal128
#2229 [parquet] [arrow] (viirya) - Add
Decimal128Iter
andDecimal256Iter
and do maximum precision/scale check #2140 [arrow] (viirya)
Implemented enhancements:
- Add the constant data type constructors for
ListArray
#2311 [arrow] - Update
FlightSqlService
trait to pass session info along #2308 [arrow-flight] - Optimize
take_bits
for non-null indices #2306 [arrow] - Make FFI support optional via Feature Flag
ffi
#2302 [arrow] - Mark
ffi::ArrowArray::try_new
is safe #2301 [arrow] - Remove test_utils from default arrow-rs features #2298 [arrow]
- Remove
JsonEqual
trait #2296 [arrow] - Move
with_precision_and_scale
toDecimal
array traits #2291 [arrow] - Improve readability and maybe performance of string --> numeric/time/date/timetamp cast kernels #2285 [arrow]
- Add vectorized unpacking for 8, 16, and 64 bit integers #2276 [parquet]
- Use initial capacity for interner hashmap #2273 [arrow]
- Impl FromIterator for Decimal256Array #2248 [arrow]
- Separate
ArrayReader::next_batch
withArrayReader::read_records
andArrayReader::consume_batch
#2236 [parquet] - Rename
DataType::Decimal
toDataType::Decimal128
#2228 [arrow] - Automatically Grow Parquet BitWriter Buffer #2226 [parquet]
- Add
append_option
support toDecimal128Builder
andDecimal256Builder
#2224 [arrow] - Split the
FixedSizeBinaryArray
andFixedSizeListArray
fromarray_binary.rs
andarray_list.rs
#2217 [arrow] - Don't
Box
Values inPrimitiveDictionaryBuilder
#2215 [arrow] - Use BitChunks in equal_bits #2186 [arrow]
- Implement
Hash
forSchema
#2182 [arrow] - read decimal data type from parquet file with binary physical type #2159 [parquet]
- The
GenericStringBuilder
should useGenericBinaryBuilder
#2156 [arrow] - Update Rust version to 1.62 #2143 [parquet] [arrow] [arrow-flight]
- Check precision and scale against maximum value when constructing
Decimal128
andDecimal256
#2139 [arrow] - Use
ArrayAccessor
inDecimal128Iter
andDecimal256Iter
#2138 [arrow] - Use
ArrayAccessor
andFromIterator
in Cast Kernels #2137 [arrow] - Add
TypedDictionaryArray
for more ergonomic interaction withDictionaryArray
#2136 [arrow] - Use
ArrayAccessor
in Comparison Kernels #2135 [arrow] - Support
peek_next_page()
and skip_next_page
inInMemoryColumnChunkReader
#2129 [parquet] - Lazily materialize the null buffer builder for all array builders. #2125 [arrow]
- Do value validation for
Decimal256
#2112 [arrow] - Support
skip_def_levels
forColumnLevelDecoder
#2107 [parquet] - Add integration test for scan rows with selection #2106 [parquet]
- Support for casting from Utf8/String to
Time32
/Time64
#2053 [arrow] - Update prost and tonic related crates #2268 [arrow-flight] (carols10cents)
Fixed bugs:
- temporal conversion functions cannot work on negative input properly #2325 [arrow]
- IPC writer should truncate string array with all empty string #2312 [arrow]
- Error order for comparing
Decimal128
orDecimal256
#2256 [arrow] - Fix maximum and minimum for decimal values for precision greater than 38 #2246 [arrow]
IntervalMonthDayNanoType::make_value()
does not match C implementation #2234 [arrow]FlightSqlService
trait does not allowimpl
s to do handshake #2210 [arrow-flight]EnabledStatistics::None
not working #2185 [parquet]- Boolean ArrayData Equality Incorrect Slice Handling #2184 [arrow]
- Publicly export MapFieldNames #2118 [arrow]
Documentation updates:
- Update instructions on How to join the slack #arrow-rust channel -- or maybe try to switch to discord?? #2192
- [Minor] Improve arrow and parquet READMEs, document parquet feature flags #2324 [parquet] [arrow] (alamb)
Performance improvements:
- Improve speed of writing string dictionaries to parquet by skipping a copy(#1764) #2322 [parquet] [arrow] (tustvold)
Closed issues:
- Fix wrong logic in calculate_row_count when skipping values #2328 [parquet]
- Support filter for parquet data type #2126 [parquet]
- Make skip value in ByteArrayDecoderDictionary avoid decoding #2088 [parquet]
Merged pull requests:
- fix: Fix skip error in calculate_row_count. #2329 [parquet] (Ted-Jiang)
- temporal conversion functions should work on negative input properly #2326 [arrow] (viirya)
- Increase DeltaBitPackEncoder miniblock size to 64 for 64-bit integers (#2282) #2319 [parquet] (tustvold)
- Remove JsonEqual #2317 [parquet] [arrow] (viirya)
- fix: IPC writer should truncate string array with all empty string #2314 [arrow] (JasonLi-cn)
- Pass pull
Request<FlightDescriptor>
toFlightSqlService
impl
s #2309 [parquet] [arrow-flight] (avantgardnerio) - Speedup take_boolean / take_bits for non-null indices (~4 - 5x speedup) #2307 [arrow] (Dandandan)
- Add typed dictionary (#2136) #2297 [arrow] (tustvold)
- [Minor] Improve types shown in cast error messages #2295 [arrow] (alamb)
- Move
with_precision_and_scale
toBasicDecimalArray
trait #2292 [parquet] [arrow] (viirya) - Replace the
fn get_data_type
byconst DATA_TYPE
in BinaryArray and StringArray #2289 [arrow] (HaoYang670) - Clean up string casts and improve performance #2284 [arrow] (alamb)
- [Minor] Add tests for temporal cast error paths #2283 [arrow] (alamb)
- Add unpack8, unpack16, unpack64 (#2276) ~10-50% faster #2278 [parquet] (tustvold)
- Fix bugs in the
from_list
function. #2277 [arrow] (HaoYang670) - fix: use signed comparator to compare decimal128 and decimal256 #2275 [arrow] (liukun4515)
- Use initial capacity for interner hashmap #2272 [parquet] (Dandandan)
- Remove fallibility from paruqet RleEncoder (#2226) #2259 [parquet] (tustvold)
- Fix escaped like wildcards in
like_utf8
/nlike_utf8
kernels #2258 [arrow] (daniel-martinez-maqueda-sap) - Add tests for reading nested decimal arrays from parquet #2254 [parquet] (tustvold)
- feat: Implement string cast operations for Time32 and Time64 #2251 [arrow] (stuartcarnie)
- move
FixedSizeList
toarray_fixed_size_list.rs
#2250 [arrow] (HaoYang670) - Impl FromIterator for Decimal256Array #2247 [arrow] (viirya)
- Fix max and min value for decimal precision greater than 38 #2245 [arrow] (viirya)
- Make
Schema::fields
andSchema::metadata
pub
(public) #2239 [arrow] (alamb) - [Minor] Improve Schema metadata mismatch error #2238 [arrow] (alamb)
- Separate ArrayReader::next_batch with read_records and consume_batch #2237 [parquet] (Ted-Jiang)
- Update
IntervalMonthDayNanoType::make_value()
to conform to specifications #2235 [arrow] (avantgardnerio) - Disable value validation for Decimal256 case #2232 [arrow] (viirya)
- Automatically grow parquet BitWriter (#2226) (~10% faster) #2231 [parquet] (tustvold)
- Only trigger
arrow
CI on changes to arrow #2227 (alamb) - Add append_option support to decimal builders #2225 [arrow] (bphillips-exos)
- Optimized writing of byte array to parquet (#1764) (2x faster) #2221 [parquet] (tustvold)
- Increase test coverage of ArrowWriter #2220 [parquet] (tustvold)
- Update instructions on how to join the Slack channel #2219 (HaoYang670)
- Move
FixedSizeBinaryArray
toarray_fixed_size_binary.rs
#2218 [arrow] (HaoYang670) - Avoid boxing in PrimitiveDictionaryBuilder #2216 [arrow] (tustvold)
- remove redundant CI benchmark check, cleanups #2212 [parquet] (alamb)
- Update
FlightSqlService
trait to proxy handshake #2211 [arrow-flight] (avantgardnerio) - parquet: export json api with
serde_json
feature name #2209 [parquet] (flisky) - Cleanup record skipping logic and tests (#2158) #2199 [parquet] (tustvold)
- Use BitChunks in equal_bits #2194 [arrow] (tustvold)
- Fix disabling parquet statistics (#2185) #2191 [parquet] (tustvold)
- Change CI names to match crate names #2189 (alamb)
- Fix offset handling in boolean_equal (#2184) #2187 [arrow] (tustvold)
- Implement
Hash
forSchema
#2183 [arrow] (crepererum) - Let the
StringBuilder
useBinaryBuilder
#2181 [arrow] (HaoYang670) - Use ArrayAccessor and FromIterator in Cast Kernels #2169 [arrow] (viirya)
- Split most arrow specific CI checks into their own workflows (reduce common CI time to 21 minutes) #2168 (alamb)
- Remove another attempt to cache target directory in action.yaml #2167 (alamb)
- Run actions on push to master, pull requests #2166 (alamb)
- Break parquet_derive and arrow_flight tests into their own workflows #2165 (alamb)
- [minor] use type aliases refine code. #2161 [parquet] (Ted-Jiang)
- parquet reader: Support reading decimals from parquet
BYTE_ARRAY
type #2160 [parquet] (liukun4515) - Add integration test for scan rows with selection #2158 [parquet] (Ted-Jiang)
- Use ArrayAccessor in Comparison Kernels #2157 [arrow] (viirya)
- Implement
peek\_next\_page
andskip\_next\_page
for `InMemoryColumnCh… #2155 [parquet] (thinkharderdev) - Avoid decoding unneeded values in ByteArrayDecoderDictionary #2154 [parquet] (thinkharderdev)
- Only run integration tests when
arrow
changes #2152 (alamb) - Break out docs CI job to its own github action #2151 (alamb)
- Do not pretend to cache rust build artifacts, speed up CI by ~20% #2150 (alamb)
- Update rust version to 1.62 #2144 [parquet] [arrow] [arrow-flight] (Ted-Jiang)
- Make MapFieldNames public (#2118) #2134 [arrow] (tustvold)
- Add ArrayAccessor trait, remove duplication in array iterators (#1948) #2133 [arrow] (tustvold)
- Lazily materialize the null buffer builder for all array builders. #2127 [arrow] (HaoYang670)
- Faster parquet DictEncoder (~20%) #2123 [parquet] (tustvold)
- Add validation for Decimal256 #2113 [arrow] (viirya)
- Support skip_def_levels for ColumnLevelDecoder #2111 [parquet] (Ted-Jiang)
- Donate
object_store
code from object_store_rs to arrow-rs #2081 (alamb) - Improve
validate_utf8
performance #2048 [arrow] (tfeda)
19.0.0 (2022-07-22)
Breaking changes:
- Rename
DecimalArray``/DecimalBuilder
toDecimal128Array
/Decimal128Builder
#2101 [arrow] - Change builder
append
methods to be infallible where possible #2103 [parquet] [arrow] (jhorstmann) - Return reference from
UnionArray::child
(#2035) #2099 [arrow] (tustvold) - Remove
preserve_order
feature fromserde_json
dependency (#2095) #2098 [parquet] [arrow] (tustvold) - Rename
weekday
andweekday0
kernels to tonum_days_from_monday
andnum_days_since_sunday
#2066 [arrow] (alamb) - Remove
null_count
fromwrite_batch_with_statistics
#2047 [parquet] (tustvold)
Implemented enhancements:
- Use
total_cmp
from std #2130 [arrow] - Permit parallel fetching of column chunks in
ParquetRecordBatchStream
#2110 [parquet] - The
GenericBinaryBuilder
should use buffer builders directly. #2104 [arrow] - Pass
generate_decimal256_case
arrow integration test #2093 [arrow] - Rename
weekday
andweekday0
kernels to tonum_days_from_monday
anddays_since_sunday
#2065 [arrow] - Improve performance of
filter_dict
#2062 [arrow] - Improve performance of
set_bits
#2060 [arrow] - Lazily materialize the null buffer builder of
BooleanBuilder
#2058 [arrow] BooleanArray::from_iter
should omit validity buffer if all values are valid #2055 [arrow]- FFI_ArrowSchema should set
DICTIONARY_ORDERED
flag if a field's dictionary is ordered #2049 [arrow] - Support
peek_next_page()
andskip_next_page
inSerializedPageReader
#2043 [parquet] - Support FFI / C Data Interface for
MapType
#2037 [arrow] - The
DecimalArrayBuilder
should useFixedSizedBinaryBuilder
#2026 [arrow] - Enable
serialized_reader
read specific Page by passing row ranges. #1976 [parquet]
Fixed bugs:
type_id
andvalue_offset
are incorrect for slicedUnionArray
#2086 [arrow]- Boolean
take
kernel does not handle null indices correctly #2057 [arrow] - Don't double-count nulls in
write_batch_with_statistics
#2046 [parquet] - Parquet Writer Ignores Statistics specification in
WriterProperties
#2014 [parquet]
Documentation updates:
Closed issues:
- Why does
serde_json
specify thepreserve_order
feature inarrow
package #2095 [arrow] - Support
skip_values
in DictionaryDecoder #2079 [parquet] - Support skip_values in ColumnValueDecoderImpl #2078 [parquet]
- Support
skip_values
inByteArrayColumnValueDecoder
#2072 [parquet] - Several
Builder::append
methods returning results even though they are infallible #2071 - Improve formatting of logical plans containing subqueries #2059
- Return reference from
UnionArray::child
#2035 - support write page index #1777 [parquet]
Merged pull requests:
- Use
total_cmp
from std #2131 [arrow] (Dandandan) - fix clippy #2124 (alamb)
- Fix logical merge conflict:
match
arms have incompatible types #2121 (alamb) - Update
GenericBinaryBuilder
to use buffer builders directly. #2117 [arrow] (HaoYang670) - Simplify null mask preservation in parquet reader #2116 [parquet] (tustvold)
- Add get_byte_ranges method to AsyncFileReader trait #2115 [parquet] (thinkharderdev)
- add test for skip_values in DictionaryDecoder and fix it #2105 [parquet] (Ted-Jiang)
- Define Decimal128Builder and Decimal128Array #2102 [parquet] [arrow] (viirya)
- Support skip_values in DictionaryDecoder #2100 [parquet] (thinkharderdev)
- Pass generate_decimal256_case integration test, add
DataType::Decimal256
#2094 [parquet] [arrow] (viirya) DecimalBuilder
should useFixedSizeBinaryBuilder
#2092 [arrow] (HaoYang670)- Array writer indirection #2091 [parquet] (tustvold)
- Remove doc hidden from GenericColumnReader #2090 [parquet] (tustvold)
- Support skip_values in ColumnValueDecoderImpl #2089 [parquet] (thinkharderdev)
- type_id and value_offset are incorrect for sliced UnionArray #2087 [arrow] (viirya)
- Add IPC truncation test case for StructArray #2083 [arrow] (viirya)
- Improve performance of set_bits by using copy_from_slice instead of setting individual bytes #2077 [arrow] (jhorstmann)
- Support skip_values in ByteArrayColumnValueDecoder #2076 [parquet] (Ted-Jiang)
- Lazily materialize the null buffer builder of boolean builder #2073 [arrow] (HaoYang670)
- Fix windows CI (#2069) #2070 (tustvold)
- Test utf8_validation checks char boundaries #2068 [arrow] (tustvold)
- feat(compute): Support doy (day of year) for temporal #2067 [arrow] (ovr)
- Support nullable indices in boolean take kernel and some optimizations #2064 [arrow] (jhorstmann)
- Improve performance of filter_dict #2063 [arrow] (viirya)
- Ignore null buffer when creating ArrayData if null count is zero #2056 [arrow] (jhorstmann)
- feat(compute): Support week0 (PostgreSQL behaviour) for temporal #2052 [arrow] (ovr)
- Set DICTIONARY_ORDERED flag for FFI_ArrowSchema #2050 [arrow] (viirya)
- Generify parquet write path (#1764) #2045 [parquet] (tustvold)
- Support peek_next_page() and skip_next_page in serialized_reader. #2044 [parquet] (Ted-Jiang)
- Support MapType in FFI #2042 [arrow] (viirya)
- Add support of converting
FixedSizeBinaryArray
toDecimalArray
#2041 [arrow] (HaoYang670) - Truncate IPC record batch #2040 [arrow] (viirya)
- Refine the List builder #2034 [arrow] (HaoYang670)
- Add more tests of RecordReader Batch Size Edge Cases (#2025) #2032 [parquet] (tustvold)
- Add support for adding intervals to dates #2031 [arrow] (avantgardnerio)
18.0.0 (2022-07-08)
Breaking changes:
- Fix several bugs in parquet writer statistics generation, add
EnabledStatistics
to control level of statistics generated #2022 [parquet] (tustvold) - Add page index reader test for all types and support empty index. #2012 [parquet] (Ted-Jiang)
- Add
Decimal256Builder
andDecimal256Array
; Decimal arrays now implementBasicDecimalArray
trait #2000 [parquet] [arrow] (viirya) - Simplify
ColumnReader::read_batch
#1995 [parquet] [arrow] (tustvold) - Remove
PrimitiveBuilder::finish_dict
(#1978) #1980 [arrow] (tustvold) - Disallow cast from other datatypes to
NullType
#1942 [arrow] (liukun4515) - Add column index writer for parquet #1935 [parquet] (liukun4515)
Implemented enhancements:
- Add
DataType::Dictionary
support tosubtract_scalar
,multiply_scalar
,divide_scalar
#2019 [arrow] - Support DictionaryArray in
add_scalar
kernel #2017 [arrow] - Enable column page index read test for all types #2010 [parquet]
- Simplify
FixedSizeBinaryBuilder
#2007 [arrow] - Support
Decimal256Builder
andDecimal256Array
#1999 [arrow] - Support
DictionaryArray
inunary
kernel #1989 [arrow] - Add kernel to quickly compute comparisons on
Array
s #1987 [arrow] - Support
DictionaryArray
individe
kernel #1982 [arrow] - Implement
Into<ArrayData>
forT: Array
#1979 [arrow] - Support
DictionaryArray
inmultiply
kernel #1972 [arrow] - Support
DictionaryArray
insubtract
kernel #1970 [arrow] - Declare
DecimalArray::length
as a constant #1967 [arrow] - Support
DictionaryArray
inadd
kernel #1950 [arrow] - Add builder style methods to
Field
#1934 [arrow] - Make
StringDictionaryBuilder
faster #1851 [arrow] concat_elements_utf8
should accept arbitrary number of input arrays #1748 [arrow]
Fixed bugs:
- Array reader for list columns fails to decode if batches fall on row group boundaries #2025 [parquet]
ColumnWriterImpl::write_batch_with_statistics
incorrect distinct count in statistics #2016 [parquet]ColumnWriterImpl::write_batch_with_statistics
can write incorrect page statistics #2015 [parquet]RowFormatter
is not part of the public api #2008 [parquet]- Infinite Loop possible in
ColumnReader::read_batch
For Corrupted Files #1997 [parquet] PrimitiveBuilder::finish_dict
does not validate dictionary offsets #1978 [arrow]- Incorrect
n_buffers
inFFI_ArrowArray
#1959 [arrow] DecimalArray::from_fixed_size_list_array
fails whenoffset > 0
#1958 [arrow]- Incorrect (but ignored) metadata written after ColumnChunk #1946 [parquet]
Send
+Sync
impl forAllocation
may not be sound unlessAllocation
isSend
+Sync
as well #1944 [arrow]- Disallow cast from other datatypes to
NullType
#1923 [arrow]
Documentation updates:
Closed issues:
- Column chunk statistics of
min_bytes
andmax_bytes
return wrong size #2021 [parquet] - [Discussion] Refactor the
Decimal
s by using constant generic. #2001 - Move
DecimalArray
to a new file #1985 [arrow] - Support
DictionaryArray
inmultiply
kernel #1974 - close function instead of mutable reference #1969 [parquet]
- Incorrect
null_count
of DictionaryArray #1962 [arrow] - Support multi diskRanges for ChunkReader #1955 [parquet]
- Persisting Arrow timestamps with Parquet produces missing
TIMESTAMP
in schema #1920 [parquet] - Sperate get_next_page_header from get_next_page in PageReader #1834 [parquet]
Merged pull requests:
- Consistent case in Index enumeration #2029 [parquet] (tustvold)
- Fix record delimiting on row group boundaries (#2025) #2027 [parquet] (tustvold)
- Add builder style APIs For
Field
:with_name
,with_data_type
andwith_nullable
#2024 [arrow] (alamb) - Add dictionary support to subtract_scalar, multiply_scalar, divide_scalar #2020 [arrow] (viirya)
- Support DictionaryArray in add_scalar kernel #2018 [arrow] (viirya)
- Refine the
FixedSizeBinaryBuilder
#2013 [arrow] (HaoYang670) - Add RowFormatter to record public API #2009 [parquet] (FabioBatSilva)
- Fix parquet test_common feature flags #2003 [parquet] (tustvold)
- Stub out Skip Records API (#1792) #1998 [parquet] [arrow-flight] (tustvold)
- Implement
Into<ArrayData>
forT: Array
#1992 [parquet] [arrow] (heyrutvik) - Add unary_cmp #1991 [arrow] (viirya)
- Support DictionaryArray in unary kernel #1990 [arrow] (viirya)
- Refine
FixedSizeListBuilder
#1988 [arrow] (HaoYang670) - Move
DecimalArray
to array_decimal.rs #1986 [arrow] (HaoYang670) - MINOR: Fix clippy error after updating rust toolchain #1984 [parquet] [arrow] [arrow-flight] (viirya)
- Support dictionary array for divide kernel #1983 [arrow] (viirya)
- Support dictionary array for subtract and multiply kernel #1971 [arrow] (viirya)
- Declare the value_length of decimal array as a
const
#1968 [arrow] (HaoYang670) - Fix the behavior of
from_fixed_size_list
when offset > 0 #1964 [arrow] (HaoYang670) - Calculate n_buffers in FFI_ArrowArray by data layout #1960 [arrow] (viirya)
- Fix the doc of
FixedSizeListArray::value_length
#1957 [arrow] (HaoYang670) - Use InMemoryColumnChunkReader (~20% faster) #1956 [parquet] (tustvold)
- Unpin clap (#1867) #1954 [parquet] (tustvold)
- Set is_adjusted_to_utc if any timezone set (#1932) #1953 [parquet] [arrow] (tustvold)
- Add add_dyn for DictionaryArray support #1951 [arrow] (viirya)
- write
ColumnMetadata
after the column chunk data, not theColumnChunk
#1947 [parquet] (liukun4515) - Require Send+Sync bounds for Allocation trait #1945 [arrow] (jhorstmann)
- Faster StringDictionaryBuilder (~60% faster) (#1851) #1861 [arrow] (tustvold)
- Arbitrary size concat elements utf8 #1787 [arrow] (Ismail-Maj)
17.0.0 (2022-06-24)
Breaking changes:
- Add validation to
RecordBatch
for non-nullable fields containing null values #1890 [arrow] (andygrove) - Rename
ArrayData::validate_dict_offsets
toArrayData::validate_values
#1889 [arrow] (frolovdev) - Add
Decimal128
API and use it in DecimalArray and DecimalBuilder #1871 [parquet] [arrow] (viirya) - Mark typed buffer APIs
safe
(#996) (#1027) #1866 [parquet] [arrow] (tustvold)
Implemented enhancements:
- add a small doc example showing
ArrowWriter
being used with a cursor #1927 [parquet] - Support
cast
to/fromNULL
andDataType::Decimal
#1921 [arrow] - Add
Decimal256
API #1913 [arrow] - Add
DictionaryArray::key
function #1911 [arrow] - Support specifying capacities for
ListArrays
inMutableArrayData
#1884 [arrow] - Explicitly declare the features used for each dependency #1876 [parquet] [arrow] [arrow-flight]
- Add Decimal128 API and use it in DecimalArray and DecimalBuilder #1870 [arrow]
PrimitiveArray::from_iter
should omit validity buffer if all values are valid #1856 [arrow]- Add
from(v: Vec<Option<&[u8]>>)
andfrom(v: Vec<&[u8]>)
forFixedSizedBInaryArray
#1852 [arrow] - Add
Vec
-inspired APIs toBufferBuilder
#1850 [arrow] - PyArrow intergation test for C Stream Interface #1847 [arrow]
- Add
nilike
support incomparison
#1845 [arrow] - Split up
arrow::array::builder
module #1843 [arrow] - Add
quarter
support intemporal
kernels #1835 [arrow] - Rename
ArrayData::validate_dictionary_offset
toArrayData::validate_values
#1812 [arrow] - Clean up the testing code for
substring
kernel #1801 [arrow] - Speed up
substring_by_char
kernel #1800 [arrow]
Fixed bugs:
- unable to write parquet file with UTC timestamp #1932 [parquet]
- Incorrect max and min decimals #1916 [arrow]
dynamic_types
example does not print the projection #1902 [arrow]log2(0)
panicked at'attempt to subtract with overflow', parquet/src/util/bit_util.rs:148:5
#1901 [parquet]- Final slicing in
combine_option_bitmap
needs to use bit slices #1899 [arrow] - Dictionary IPC writer writes incorrect schema #1892 [arrow]
- Creating a
RecordBatch
with null values in non-nullable fields does not cause an error #1888 [arrow] - Upgrade
regex
dependency #1874 [arrow] - Miri reports leaks in ffi tests #1872 [arrow]
- AVX512 + simd binary and/or kernels slower than autovectorized version #1829 [arrow]
Documentation updates:
- Blog post about arrow 10.0.0 - 16.0.0 #1808
- Add README for the compute module. #1940 [arrow] (HaoYang670)
- minor: clarify docstring on
DictionaryArray::lookup_key
#1910 [arrow] (alamb) - minor: add a diagram to docstring for DictionaryArray #1909 [arrow] (alamb)
- Closes #1902: Print the original and projected RecordBatch in dynamic_types example #1903 [arrow] (martin-g)
Closed issues:
Merged pull requests:
- Set adjusted to UTC if UTC timezone (#1932) #1937 [parquet] (tustvold)
- Split up parquet::arrow::array_reader (#1483) #1933 [parquet] (tustvold)
- Add ArrowWriter doctest (#1927) #1930 [parquet] (tustvold)
- Update indexmap dependency #1929 [arrow] (tustvold)
- Complete and fixup split of
arrow::array::builder
module (#1843) #1928 [arrow] (tustvold) - MINOR: Replace
checked_add/sub().unwrap()
with+/-
#1924 [arrow] (HaoYang670) - Support casting
NULL
to/fromDecimal
#1922 [arrow] (liukun4515) - Update half requirement from 1.8 to 2.0 #1919 [arrow] (dependabot[bot])
- Fix max and min decimal for max precision #1917 [arrow] (viirya)
- Add
Decimal256
API #1914 [arrow] (viirya) - Add
DictionaryArray::key
function #1912 [arrow] (alamb) - Fix misaligned reference and logic error in crc32 #1906 [parquet] (saethlin)
- Refine the
bit_util
of Parquet. #1905 [parquet] (HaoYang670) - Use bit_slice in combine_option_bitmap #1900 [arrow] (jhorstmann)
- Issue #1876: Explicitly declare the used features for each dependency in integration_testing #1898 (martin-g)
- Issue #1876: Explicitly declare the used features for each dependency in parquet_derive_test #1897 [parquet] (martin-g)
- Issue #1876: Explicitly declare the used features for each dependency in parquet_derive #1896 (martin-g)
- Issue #1876: Explicitly declare the used features for each dependency in parquet #1895 [parquet] (martin-g)
- Minor: Add examples to docstring for
weekday
#1894 [arrow] (alamb) - Correct nullable in read_dictionary #1893 [arrow] (viirya)
- Feature add weekday temporal kernel #1891 [arrow] (nl5887)
- Support specifying list capacities for
MutableArrayData
#1885 [arrow] (jhorstmann) - Issue #1876: Explicitly declare the used features for each dependency in parquet #1881 [parquet] (martin-g)
- Issue #1876: Explicitly declare the used features for each dependency in arrow-flight #1880 [arrow-flight] (martin-g)
- Split up arrow::array::builder module (#1843) #1879 [arrow] (DaltonModlin)
- Fix memory leak in ffi test #1878 [arrow] (viirya)
- Issue #1876 - Explicitly declare the used features for each dependency #1877 [arrow] (martin-g)
- Fixes #1874 - Upgrade
regex
dependency to 1.5.6 #1875 [arrow] (martin-g) - Do not print exit code from miri, instead it should be the return value of the script #1873 (jhorstmann)
- Update vendored gRPC #1869 [arrow-flight] (tustvold)
- Expose
BitSliceIterator
andBitIndexIterator
(#1864) #1865 [arrow] (tustvold) - Exclude some long-running tests when running under miri #1863 [arrow] (jhorstmann)
- Add vec-inspired APIs to BufferBuilder (#1850) #1860 [arrow] (tustvold)
- Omit validity buffer in PrimitiveArray::from_iter when all values are valid #1859 [arrow] (jhorstmann)
- Add two
from
methods forFixedSizeBinaryArray
#1854 [arrow] (HaoYang670) - Clean up the test code of
substring
kernel. #1853 [arrow] (HaoYang670) - Add PyArrow integration test for C Stream Interface #1848 [arrow] (viirya)
- Add
nilike
support incomparison
#1846 [arrow] (MazterQyou) - MINOR: Remove version check from
test_command_help
#1844 [parquet] (viirya) - Implement UnionArray FieldData using Type Erasure #1842 [arrow] (tustvold)
- Add
quarter
support intemporal
#1836 [arrow] (MazterQyou) - speed up
substring_by_char
by about 2.5x #1832 [arrow] (HaoYang670) - Remove simd and avx512 bitwise kernels in favor of autovectorization #1830 [arrow] (jhorstmann)
- Refactor parquet::arrow module #1827 [parquet] (tustvold)
- docs: remove experimental marker on C Stream Interface #1821 [arrow] (wjones127)
- Separate Page IO from Page Decode #1810 [parquet] (tustvold)
16.0.0 (2022-06-10)
Breaking changes:
- Seal
ArrowNativeType
andOffsetSizeTrait
for safety (#1028) #1819 [arrow] (tustvold) - Improve API for
csv::infer_file_schema
by removing redundant ref #1776 [arrow] (tustvold)
Implemented enhancements:
- List equality method should work on empty offset
ListArray
#1817 [arrow] - Command line tool for convert CSV to Parquet #1797 [parquet]
- IPC writer should write validity buffer for
UnionArray
in V4 IPC message #1793 [arrow] - Add function for row alignment with page mask #1790 [parquet]
- Rust IPC Read should be able to read V4 UnionType Array #1788 [arrow]
combine_option_bitmap
should accept arbitrary number of input arrays. #1780 [arrow]- Add
substring_by_char
kernels for slicing on character boundaries #1768 [arrow] - Support reading
PageIndex
from column metadata #1761 [parquet] - Support casting from
DataType::Utf8
toDataType::Boolean
#1740 [arrow] - Make current position available in
FileWriter
. #1691 [parquet] - Support writing parquet to
stdout
#1687 [parquet]
Fixed bugs:
- Incorrect Offset Validation for Sliced List Array Children #1814 [arrow]
- Parquet Snappy Codec overwrites Existing Data in Decompression Buffer #1806 [parquet]
flight_data_to_arrow_batch
does not supportRecordBatch
es with no columns #1783 [arrow-flight]- parquet does not compile with
features=["zstd"]
#1630 [parquet]
Documentation updates:
- Update arrow module docs #1840 [arrow] (tustvold)
- Update safety disclaimer #1837 [arrow] (tustvold)
- Update ballista readme link #1765 (tustvold)
- Move changelog archive to
CHANGELOG-old.md
#1759 (alamb)
Closed issues:
DataType::Decimal
Non-Compliant? #1779 [arrow]- Further simplify the offset validation #1770 [arrow]
- Best way to convert arrow to Rust native type #1760 [arrow]
- Why
Parquet
is a part ofArrow
? #1715 [parquet] [arrow]
Merged pull requests:
- Make equals_datatype method public, enabling other modules #1838 [arrow] (nl5887)
- [Minor] Clarify
PageIterator
Documentation #1831 [parquet] (Ted-Jiang) - Update MIRI pin #1828 (tustvold)
- Change to use
resolver v2
, test more feature flag combinations in CI, fix errors (#1630) #1822 [parquet] [arrow] (tustvold) - Add ScalarBuffer abstraction (#1811) #1820 [arrow] (tustvold)
- Fix list equal for empty offset list array #1818 [arrow] (viirya)
- Fix Decimal and List ArrayData Validation (#1813) (#1814) #1816 [arrow] (tustvold)
- Don't overwrite existing data on snappy decompress (#1806) #1807 [parquet] (tustvold)
- Rename
arrow/benches/string_kernels.rs
toarrow/benches/substring_kernels.rs
#1805 [arrow] (HaoYang670) - Add public API for decoding parquet footer #1804 [parquet] (tustvold)
- Add AsyncFileReader trait #1803 [parquet] (tustvold)
- add parquet-fromcsv (#1) #1798 [parquet] (kazuk)
- Use IPC row count info in IPC reader #1796 [arrow] (viirya)
- Fix typos in the Memory and Buffers section of the docs home #1795 [arrow] (datapythonista)
- Write validity buffer for UnionArray in V4 IPC message #1794 [arrow] (viirya)
- feat:Add function for row alignment with page mask #1791 [parquet] (Ted-Jiang)
- Read and skip validity buffer of UnionType Array for V4 ipc message #1789 [arrow] [arrow-flight] (viirya)
- Add
Substring_by_char
#1784 [arrow] (HaoYang670) - Add
ParquetFileArrowReader::try_new
#1782 [parquet] (tustvold) - Arbitrary size combine option bitmap #1781 [arrow] (Ismail-Maj)
- Implement
ChunkReader
forBytes
, deprecateSliceableCursor
#1775 [parquet] (tustvold) - Access metadata of flushed row groups on write (#1691) #1774 [parquet] (tustvold)
- Simplify ParquetFileArrowReader Metadata API #1773 [parquet] (tustvold)
- MINOR: Unpin nightly version as packed_simd releases new version #1771 (viirya)
- Update comfy-table requirement from 5.0 to 6.0 #1769 [arrow] (dependabot[bot])
- Optionally disable
validate_decimal_precision
check inDecimalBuilder.append_value
for interop test #1767 [arrow] (viirya) - Minor: Clean up the code of MutableArrayData #1763 [arrow] (HaoYang670)
- Support reading PageIndex from parquet metadata, prepare for skipping pages at reading #1762 [parquet] (Ted-Jiang)
- Support casting
Utf8
toBoolean
#1738 [arrow] (MazterQyou)
15.0.0 (2022-05-27)
Breaking changes:
- Change
ArrayDataBuilder::null_bit_buffer
to acceptOption<Buffer>
rather thanBuffer
#1739 [arrow] (HaoYang670) - Remove
null_count
fromArrayData::try_new()
#1721 [arrow] (HaoYang670) - Change parquet writers to use standard
std:io::Write
rather customParquetWriter
trait (#1717) (#1163) #1719 [parquet] (tustvold) - Add explicit column mask for selection in parquet:
ProjectionMask
(#1701) #1716 [parquet] (tustvold) - Add type_ids in Union datatype #1703 [parquet] [arrow] (viirya)
- Fix Parquet Reader's Arrow Schema Inference #1682 [parquet] [arrow] (tustvold)
Implemented enhancements:
- Rename the
string
kernel toconcatenate_elements
#1747 [arrow] ArrayDataBuilder::null_bit_buffer
should acceptOption<Buffer>
as input type #1737 [arrow]- Fix schema comparison for non_canonical_map when running flight test #1730 [arrow]
- Add support in aggregate kernel for
BinaryArray
#1724 [arrow] - Fix incorrect null_count in
generate_unions_case
integration test #1712 [arrow] - Keep type ids in Union datatype to follow Arrow spec and integrate with other implementations #1690 [arrow]
- Support Reading Alternative List Representations to Arrow From Parquet #1680 [parquet]
- Speed up the offsets checking #1675 [arrow]
- Separate Parquet -> Arrow Schema Conversion From ArrayBuilder #1655 [parquet]
- Add
leaf_columns
argument toArrowReader::get_record_reader_by_columns
#1653 [parquet] - Implement
string_concat
kernel #1540 [arrow] - Improve Unit Test Coverage of ArrayReaderBuilder #1484 [parquet]
Fixed bugs:
- Parquet write failure (from record batches) when data is nested two levels deep #1744 [parquet]
- IPC reader may break on projection #1735 [arrow]
- Latest nightly fails to build with feature simd #1734 [arrow]
- Trying to write parquet file in parallel results in corrupt file #1717 [parquet]
- Roundtrip failure when using DELTA_BINARY_PACKED #1708 [parquet]
ArrayData::try_new
cannot always return expected error. #1707 [arrow]- "out of order projection is not supported" after Fix Parquet Arrow Schema Inference #1701 [parquet]
- Rust is not interoperability with C++ for IPC schemas with dictionaries #1694 [arrow]
- Incorrect Repeated Field Schema Inference #1681 [parquet]
- Parquet Treats Embedded Arrow Schema as Authoritative #1663 [parquet]
- parquet_to_arrow_schema_by_columns Incorrectly Handles Nested Types #1654 [parquet]
- Inconsistent Arrow Schema When Projecting Nested Parquet File #1652 [parquet]
- StructArrayReader Cannot Handle Nested Lists #1651 [parquet]
- Bug (
substring
kernel): The null buffer is not aligned whenoffset != 0
#1639 [arrow]
Documentation updates:
- Parquet command line tool does not install "globally" #1710 [parquet]
- Improve integration test document to follow Arrow C++ repo CI #1742 [arrow] (viirya)
Merged pull requests:
- Test for list array equality with different offsets #1756 [arrow] (alamb)
- Rename
string_concat
toconcat_elements_utf8
#1754 [arrow] (alamb) - Rename the
string
kernel toconcat_elements
. #1752 [arrow] (HaoYang670) - Support writing nested lists to parquet #1746 [parquet] (tustvold)
- Pin nightly version to bypass packed_simd build error #1743 (viirya)
- Fix projection in IPC reader #1736 [arrow] (iyupeng)
cargo install
installs not globally #1732 [parquet] (kazuk)- Fix schema comparison for non_canonical_map when running flight test #1731 (viirya)
- Add
min_binary
andmax_binary
aggregate kernels #1725 [arrow] (HaoYang670) - Fix parquet benchmarks #1723 [parquet] (tustvold)
- Fix BitReader::get_batch zero extension (#1708) #1722 [parquet] (tustvold)
- Implementation string concat #1720 [arrow] (Ismail-Maj)
- Check the length of
null_bit_buffer
inArrayData::try_new()
#1714 [arrow] (HaoYang670) - Fix incorrect null_count in
generate_unions_case
integration test #1713 [arrow] (viirya) - Fix: Null buffer accounts for
offset
insubstring
kernel. #1704 [arrow] (HaoYang670) - Minor: Refine
OffsetSizeTrait
to extendnum::Integer
#1702 [arrow] (HaoYang670) - Fix StructArrayReader handling nested lists (#1651) #1700 [parquet] (tustvold)
- Speed up the offsets checking #1684 [arrow] (HaoYang670)
14.0.0 (2022-05-13)
Breaking changes:
- Use
bytes
in parquet rather than custom Buffer implementation (#1474) #1683 [parquet] (tustvold) - Rename
OffsetSize::fn is_large
toconst OffsetSize::IS_LARGE
#1664 [parquet] [arrow] (HaoYang670) - Remove
StringOffsetTrait
andBinaryOffsetTrait
#1645 [arrow] (HaoYang670) - Fix
generate_nested_dictionary_case
integration test failure #1636 [arrow] [arrow-flight] (viirya)
Implemented enhancements:
- Add support for
DataType::Duration
in ffi interface #1688 [arrow] - Fix
generate_unions_case
integration test #1676 [arrow] - Add
DictionaryArray
support forbit_length
kernel #1673 [arrow] - Add
DictionaryArray
support forlength
kernel #1672 [arrow] - flight_client_scenarios integration test should receive schema from flight data #1669 [arrow]
- Unpin Flatbuffer version dependency #1667 [arrow]
- Add dictionary array support for substring function #1656 [arrow]
- Exclude dict_id and dict_is_ordered from equality comparison of
Field
#1646 [arrow] - Remove
StringOffsetTrait
andBinaryOffsetTrait
#1644 [arrow] - Add tests and examples for
UnionArray::from(data: ArrayData)
#1643 [arrow] - Add methods
pub fn offsets_buffer
,pub fn types_ids_buffer
andpub fn data_buffer
forArrayDataBuilder
#1640 [arrow] - Fix
generate_nested_dictionary_case
integration test failure for Rust cases #1635 [arrow] - Expose
ArrowWriter
row group flush in public API #1626 [parquet] - Add
substring
support forFixedSizeBinaryArray
#1618 [arrow] - Add PrettyPrint for
UnionArray
s #1594 [arrow] - Add SIMD support for the
length
kernel #1489 [arrow] - Support dictionary arrays in length and bit_length #1674 [arrow] (viirya)
- Add dictionary array support for substring function #1665 [arrow] (sunchao)
- Add
DecimalType
support innew_null_array
#1659 [arrow] (yjshen)
Fixed bugs:
- Docs.rs build is broken #1695
- Interoperability with C++ for IPC schemas with dictionaries #1694
UnionArray::is_null
incorrect #1625 [arrow]- Published Parquet documentation missing
arrow::async_reader
#1617 [parquet] - Files written with Julia's Arrow.jl in IPC format cannot be read by arrow-rs #1335 [arrow]
Documentation updates:
- Correct arrow-flight readme version #1641 [arrow-flight] (alamb)
Closed issues:
- Make
OffsetSizeTrait::IS_LARGE
as a const value #1658 - Question: Why are there 3 types of
OffsetSizeTrait
s? #1638 - Written Parquet file way bigger than input files #1627
- Ensure there is a single zero in the offsets buffer for an empty ListArray. #1620
- Filtering
UnionArray
Changes DataType #1595
Merged pull requests:
- Fix docs.rs build #1696 [parquet] (alamb)
- support duration in ffi #1689 [arrow] (ryan-jacobs1)
- fix bench command line options #1685 [parquet] [arrow] (kazuk)
- Enable branch protection #1679 (tustvold)
- Fix logical merge conflict in #1588 #1678 [parquet] (tustvold)
- Fix generate_unions_case for Rust case #1677 [arrow] (viirya)
- Receive schema from flight data #1670 (viirya)
- unpin flatbuffers dependency version #1668 [arrow] (Cheappie)
- Remove parquet dictionary converters (#1661) #1662 [parquet] (tustvold)
- Minor: simplify the function
GenericListArray::get_type
#1650 [arrow] (HaoYang670) - Pretty Print
UnionArray
s #1648 [arrow] (tfeda) - Exclude
dict_id
anddict_is_ordered
from equality comparison ofField
#1647 [arrow] (viirya) - expose row-group flush in public api #1634 [parquet] (Cheappie)
- Add
substring
support forFixedSizeBinaryArray
#1633 [arrow] (HaoYang670) - Fix UnionArray is_null #1632 [arrow] (viirya)
- Do not assume dictionaries exists in footer #1631 [arrow] (pcjentsch)
- Add support for nested list arrays from parquet to arrow arrays (#993) #1588 [parquet] (tustvold)
- Add
async
into doc features #1349 [parquet] (HaoYang670)
13.0.0 (2022-04-29)
Breaking changes:
- Update
parquet::basic::LogicalType
to be more idomatic #1612 [parquet] (tfeda) - Fix Null Mask Handling in
ArrayData
,UnionArray
, andMapArray
#1589 [arrow] (tustvold) - Replace
&Option<T>
withOption<&T>
in severalarrow
andparquet
APIs #1571 [parquet] [arrow] (tfeda)
Implemented enhancements:
- Read/write nested dictionary under fixed size list in ipc stream reader/write #1609 [arrow]
- Add support for
BinaryArray
insubstring
kernel #1593 [arrow] - Read/write nested dictionary under large list in ipc stream reader/write #1584 [arrow]
- Read/write nested dictionary under map in ipc stream reader/write #1582 [arrow]
- Implement
Clone
for JSONDecoderOptions
#1580 [arrow] - Add utf-8 validation checking to
substring
kernel #1575 [arrow] - Support casting to/from
DataType::Null
incast
kernel #1572 [arrow] (WinkerDu)
Fixed bugs:
- Parquet schema should allow scale == precision for decimal type #1606 [parquet]
- ListArray::from(ArrayData) dereferences invalid pointer when offsets are empty #1601 [arrow]
- ArrayData Equality Incorrect Null Mask Offset Handling #1599
- Filtering UnionArray Incorrect Handles Runs #1598
- [Safety] Filtering Dense UnionArray Produces Invalid Offsets #1596
- [Safety] UnionBuilder Doesn't Check Types #1591
- Union Layout Should Not Support Separate Validity Mask #1590
- Incorrect nullable flag when reading maps ( test_read_maps fails when
force_validate
is active) #1587 [parquet] - Output of
ipc::reader::tests::projection_should_work
fails validation #1548 [arrow] - Incorrect min/max statistics for decimals with byte-array notation #1532
Documentation updates:
Closed issues:
- Dense UnionArray Offsets Are i32 not i8 #1597 [arrow]
- Replace
&Option<T>
withOption<&T>
in some APIs #1556 [parquet] [arrow] - Improve ergonomics of
parquet::basic::LogicalType
#1554 [parquet] - Mark the current
substring
function asunsafe
and rename it. #1541 [arrow] - Requirements for Async Parquet API #1473 [parquet]
Merged pull requests:
- Nit: use the standard function
div_ceil
#1629 [arrow] (HaoYang670) - Update flatbuffers requirement from =2.1.1 to =2.1.2 #1622 [arrow] (dependabot[bot])
- Fix decimals min max statistics #1621 [parquet] (atefsawaed)
- Add example readme #1615 [arrow] (alamb)
- Improve docs and examples links on main readme #1614 [arrow] (alamb)
- Read/Write nested dictionaries under FixedSizeList in IPC #1610 [arrow] (viirya)
- Add
substring
support for binary #1608 [arrow] (HaoYang670) - Parquet: schema validation should allow scale == precision for decimal type #1607 [parquet] (sunchao)
- Don't access and validate offset buffer in ListArray::from(ArrayData) #1602 [arrow] (jhorstmann)
- Fix map nullable flag in
ParquetTypeConverter
#1592 [parquet] (viirya) - Read/write nested dictionary under large list in ipc stream reader/writer #1585 [arrow] (viirya)
- Read/write nested dictionary under map in ipc stream reader/writer #1583 [arrow] (viirya)
- Derive
Clone
andPartialEq
for jsonDecoderOptions
#1581 [arrow] (alamb) - Add utf-8 validation checking for
substring
#1577 [arrow] (HaoYang670) - Use
Option<T>
rather thanOption<&T>
for copy types in substring kernel #1576 [arrow] (tustvold) - Use littleendian arrow files for
projection_should_work
#1573 [arrow] (viirya)
12.0.0 (2022-04-15)
Breaking changes:
- Add
ArrowReaderOptions
toParquetFileArrowReader
, add option to skip decoding arrow metadata from parquet (#1459) #1558 [parquet] (tustvold) - Support
RecordBatch
with zero columns but non zero row count, add field toRecordBatchOptions
(#1536) #1552 [arrow] (tustvold) - Consolidate JSON Reader options and
DecoderOptions
#1539 [arrow] (alamb) - Update
prost
,prost-derive
andprost-types
to 0.10,tonic
, andtonic-build
to0.7
#1510 [arrow-flight] (alamb) - Add Json
DecoderOptions
and support customformat_string
for each field #1451 [arrow] (sum12)
Implemented enhancements:
- Read/write nested dictionary in ipc stream reader/writer #1565 [arrow]
- Support
FixedSizeBinary
in the Arrow C data interface #1553 [arrow] - Support Empty Column Projection in
ParquetRecordBatchReader
#1537 [parquet] - Support
RecordBatch
with zero columns but non zero row count #1536 [arrow] - Add support for
Date32
/Date64
<-->String
/LargeString
incast
kernel #1535 [arrow] - Support creating arrays from externally owned memory like
Vec
orString
#1516 [arrow] - Speed up the
substring
kernel #1511 [arrow] - Handle Parquet Files With Inconsistent Timestamp Units #1459 [parquet]
Fixed bugs:
- Error Infering Schema for LogicalType::UNKNOWN #1557 [parquet]
- Read dictionary from nested struct in ipc stream reader panics #1549 [arrow]
filter
produces invalid sparseUnionArray
s #1547 [arrow]- Documentation for
GenericListBuilder
is not exposed. #1518 [arrow] - cannot read parquet file #1515 [parquet]
- The
substring
kernel panics when chars > U+0x007F #1478 [arrow] - Hang due to infinite loop when reading some parquet files with RLE encoding and bit packing #1458 [parquet]
Documentation updates:
- Improve JSON reader documentation #1559 [arrow] (alamb)
- Improve doc string for
substring
kernel #1529 [arrow] (HaoYang670) - Expose documentation of
GenericListBuilder
#1525 [arrow] (comath) - Add a diagram to
take
kernel documentation #1524 [arrow] (alamb)
Closed issues:
- Interesting benchmark results of
min_max_helper
#1400
Merged pull requests:
- Fix incorrect
into_buffers
for UnionArray #1567 [arrow] (viirya) - Read/write nested dictionary in ipc stream reader/writer #1566 [arrow] (viirya)
- Support FixedSizeBinary and FixedSizeList for the C data interface #1564 [arrow] (sunchao)
- Split out ListArrayReader into separate module (#1483) #1563 [parquet] (tustvold)
- Split out
MapArray
into separate module (#1483) #1562 [parquet] (tustvold) - Support empty projection in
ParquetRecordBatchReader
#1560 [parquet] (tustvold) - fix infinite loop in not fully packed bit-packed runs #1555 [parquet] (tustvold)
- Add test for creating FixedSizeBinaryArray::try_from_sparse_iter failed when given all Nones #1551 [arrow] (alamb)
- Fix reading dictionaries from nested structs in ipc
StreamReader
#1550 [arrow] (dispanser) - Add support for Date32/64 <--> String/LargeString in
cast
kernel #1534 [arrow] (yjshen) - fix clippy errors in 1.60 #1527 [parquet] [arrow] (alamb)
- Mark
remove-old-releases.sh
executable #1522 (alamb) - Delete duplicate code in the
sort
kernel #1519 [arrow] (HaoYang670) - Fix reading nested lists from parquet files #1517 [parquet] (viirya)
- Speed up the
substring
kernel by about 2x #1512 [arrow] (HaoYang670) - Add
new_from_strings
to createMapArrays
#1507 [arrow] (viirya) - Decouple buffer deallocation from ffi and allow creating buffers from rust vec #1494 [arrow] (jhorstmann)
11.1.0 (2022-03-31)
Implemented enhancements:
- Implement
size_hint
andExactSizedIterator
for DecimalArray #1505 [arrow] - Support calculate length by chars for
StringArray
#1493 [arrow] - Add
length
kernel support forListArray
#1470 [arrow] - The length kernel should work with
BinaryArray
s #1464 [arrow] - FFI for Arrow C Stream Interface #1348 [arrow]
- Improve performance of
DictionaryArray::try_new()
#1313 [arrow]
Fixed bugs:
- MIRI error in math_checked_divide_op/try_from_trusted_len_iter #1496 [arrow]
- Parquet Writer Incorrect Definition Levels for Nested NullArray #1480 [parquet]
- FFI: ArrowArray::try_from_raw shouldn't clone #1425 [arrow]
- Parquet reader fails to read null list. #1399 [parquet]
Documentation updates:
- A small mistake in the doc of
BinaryArray
andLargeBinaryArray
#1455 [arrow] - A small mistake in the doc of
GenericBinaryArray::take_iter_unchecked
#1454 [arrow] - Add links in the doc of
BinaryOffsetSizeTrait
#1453 [arrow] - The doc of
FixedSizeBinaryArray
is confusing. #1452 [arrow] - Clarify docs that SlicesIterator ignores null values #1504 [arrow] (alamb)
- Update the doc of
BinaryArray
andLargeBinaryArray
#1471 [arrow] (HaoYang670)
Closed issues:
packed_simd
v.s.portable_simd
, which should be used? #1492- Cleanup: Use Arrow take kernel Within parquet ListArrayReader #1482 [parquet]
Merged pull requests:
- Implement
size_hint
andExactSizedIterator
forDecimalArray
#1506 [arrow] (alamb) - Add
StringArray::num_chars
for calculating number of characters #1503 [arrow] (HaoYang670) - Workaround nightly miri error in
try_from_trusted_len_iter
#1497 [arrow] (jhorstmann) - update doc of array_binary and array_string #1491 [arrow] (HaoYang670)
- Use Arrow take kernel within ListArrayReader #1490 [parquet] (viirya)
- Add
length
kernel support for List Array #1488 [arrow] (HaoYang670) - Support sort for
Decimal
data type #1487 [arrow] (yjshen) - Fix reading/writing nested null arrays (#1480) (#1036) (#1399) #1481 [parquet] (tustvold)
- Implement ArrayEqual for UnionArray #1469 [arrow] (viirya)
- Support the
length
kernel on Binary Array #1465 [arrow] (HaoYang670) - Remove Clone and copy source structs internally #1449 [arrow] (viirya)
- Fix Parquet reader for null lists #1448 [parquet] (viirya)
- Improve performance of DictionaryArray::try_new() #1435 [arrow] (jackwener)
- Add FFI for Arrow C Stream Interface #1384 [arrow] (viirya)
11.0.0 (2022-03-17)
Breaking changes:
- Replace
filter_row_groups
withReadOptions
in parquet SerializedFileReader #1389 [parquet] (yjshen) - Implement projection for arrow
IPC Reader
file / streams #1339 [arrow] [arrow-flight] (Dandandan)
Implemented enhancements:
- Fix generate_interval_case integration test failure #1445
- Make the doc examples of
ListArray
andLargeListArray
more readable #1433 - Redundant
if
andabs
inshift()
#1427 - Improve substring kernel performance #1422 [arrow]
- Add missing value_unchecked() of
FixedSizeBinaryArray
#1419 - Remove duplicate bound check in function
shift
#1408 - Support dictionary array in C data interface #1397
- filter kernel should work with
UnionArray
s #1394 [arrow] - filter kernel should work with
FixedSizeListArrays
s #1393 [arrow] - Add doc examples for creating FixedSizeListArray #1392 [arrow]
- Update
rust-version
to 1.59 #1377 - Arrow IPC projection support #1338
- Implement basic FlightSQL Server #1386 [arrow-flight] (wangfenjin)
Fixed bugs:
- DictionaryArray::try_new ignores validity bitmap of the keys #1429 [arrow]
- The doc of
GenericListArray
is confusing #1424 - DeltaBitPackDecoder Incorrectly Handles Non-Zero MiniBlock Bit Width Padding #1417 [parquet]
- DeltaBitPackEncoder Pads Miniblock BitWidths With Arbitrary Values #1416 [parquet]
- Possible unaligned write with MutableBuffer::push #1410 [arrow]
- Integration Test is failing on master branch #1398 [arrow]
Documentation updates:
- Rewrite doc of
GenericListArray
#1450 [arrow] (HaoYang670) - Fix integration doc about build.ninja location #1438 (viirya)
Merged pull requests:
- Rewrite doc example of
ListArray
andLargeListArray
#1447 [arrow] (HaoYang670) - Fix generate_interval_case in integration test #1446 [arrow] (viirya)
- Fix generate_decimal128_case in integration test #1440 (viirya)
filter
kernel should work with FixedSizeListArrays #1434 [arrow] (viirya)- Support nullable keys in DictionaryArray::try_new #1430 [arrow] (jhorstmann)
- remove redundant if/clamp_min/abs #1428 [arrow] (jackwener)
- Add doc example for creating
FixedSizeListArray
#1426 [arrow] (HaoYang670) - Directly write to MutableBuffer in substring #1423 [arrow] (viirya)
- Fix possibly unaligned writes in MutableBuffer #1421 [arrow] (jhorstmann)
- Add value_unchecked() and unit test #1420 [arrow] (jackwener)
- Fix DeltaBitPack MiniBlock Bit Width Padding #1418 [parquet] (tustvold)
- Update zstd requirement from 0.10 to 0.11 #1415 [parquet] (dependabot[bot])
- Set
default-features = false
forzstd
in the parquet crate to supportwasm32-unknown-unknown
#1414 [parquet] (kylebarron) - Add support for
UnionArray
infilter
kernel #1412 [arrow] (viirya) - Remove duplicate bound check in the function
shift
#1409 [arrow] (HaoYang670) - Add dictionary support for C data interface #1407 [arrow] (sunchao)
- Fix a small spelling mistake in docs. #1406 [arrow] (HaoYang670)
- Add unit test to check
FixedSizeBinaryArray
input all none #1405 [arrow] (jackwener) - Move csv Parser trait and its implementations to utils module #1385 [arrow] (sum12)
10.0.0 (2022-03-04)
Breaking changes:
- Remove existing has_ methods for optional fields in
ColumnChunkMetaData
#1346 [parquet] (shanisolomon) - Remove redundant
has_
methods inColumnChunkMetaData
#1345 [parquet] (shanisolomon)
Implemented enhancements:
- Add extract month and day in temporal.rs #1387
- Add clone to
IpcWriteOptions
#1381 [arrow] - Support
MapArray
infilter
kernel #1378 [arrow] - Add
week
temporal kernel #1375 [arrow] - Improve performance of
compare_dict_op
#1371 [arrow] - Add support for LargeUtf8 in json writer #1357 [parquet]
- Make
arrow::array::builder::MapBuilder
public #1354 [arrow] - Refactor
StructArray::from
#1351 [arrow] - Refactor
RecordBatch::validate_new_batch
#1350 [arrow] - Remove redundant has_ methods for optional column metadata fields #1344 [parquet]
- Add
write
method to JsonWriter #1340 [arrow] - Refactor the code of
Bitmap::new
#1337 [arrow] - Use DictionaryArray's iterator in
compare_dict_op
#1329 [arrow] - Add
as_decimal_array(arr: &dyn Array) -> &DecimalArray
#1312 [arrow] - More ergonomic / idiomatic primitive array creation from iterators #1298 [arrow]
- Implement DictionaryArray support in
eq_dyn
,neq_dyn
,lt_dyn
,lt_eq_dyn
,gt_dyn
,gt_eq_dyn
#1201 [arrow]
Fixed bugs:
cargo clippy
fails on themaster
branch #1362 [arrow]ArrowArray::try_from_raw
should not assume the pointers are from Arc #1333 [arrow]- Fix CSV Writer::new to accept delimiter and make WriterBuilder::build use it #1328 [arrow]
- Make bounds configurable via builder when reading CSV #1327 [arrow]
- Add
with_datetime_format()
to CSV WriterBuilder #1272 [arrow]
Performance improvements:
Closed issues:
- Consider removing redundant has_XXX metadata functions in
ColumnChunkMetadata
#1332
Merged pull requests:
- Support extract
day
andmonth
in temporal.rs #1388 [arrow] (Ted-Jiang) - Add write method to Json Writer #1383 [arrow] (matthewmturner)
- Derive
Clone
forIpcWriteOptions
#1382 [arrow] (matthewmturner) - feat: support maps in MutableArrayData #1379 [arrow] (helgikrs)
- Support extract
week
in temporal.rs #1376 [arrow] (Ted-Jiang) - Speed up the function
min_max_string
#1374 [arrow] (HaoYang670) - Improve performance if dictionary kernels, add benchmark and add
take_iter_unchecked
#1372 [arrow] (viirya) - Update pyo3 requirement from 0.15 to 0.16 #1369 [arrow] (dependabot[bot])
- Update contributing guide #1368 (HaoYang670)
- Allow primitive array creation from iterators of PrimitiveTypes (as well as
Option
) #1367 [arrow] (viirya) - Update flatbuffers requirement from =2.1.0 to =2.1.1 #1364 [arrow] (dependabot[bot])
- Fix clippy lints #1363 [parquet] [arrow] (HaoYang670)
- Refactor
RecordBatch::validate_new_batch
#1361 [arrow] (HaoYang670) - Refactor
StructArray::from
#1360 [arrow] (HaoYang670) - Update flatbuffers requirement from =2.0.0 to =2.1.0 #1359 [arrow] (dependabot[bot])
- fix: add LargeUtf8 support in json writer #1358 [arrow] (tiphaineruy)
- Add
as_decimal_array
function #1356 [arrow] (liukun4515) - Publicly export arrow::array::MapBuilder #1355 [arrow] (tjwilson90)
- Add with_datetime_format to csv WriterBuilder #1347 [arrow] (gsserge)
- Refactor
Bitmap::new
#1343 [arrow] (HaoYang670) - Remove delimiter from csv Writer #1342 [arrow] (gsserge)
- Make bounds configurable in csv ReaderBuilder #1341 [arrow] (gsserge)
ArrowArray::try_from_raw
should not assume the pointers are from Arc #1334 [arrow] (viirya)- Use DictionaryArray's iterator in
compare_dict_op
#1330 [arrow] (viirya) - Implement DictionaryArray support in neq_dyn, lt_dyn, lt_eq_dyn, gt_dyn, gt_eq_dyn #1326 [arrow] (viirya)
- Arrow Rust + Conbench Integration #1289 (dianaclarke)
9.1.0 (2022-02-19)
Implemented enhancements:
- Exposing page encoding stats #1321
- Improve filter performance by special casing high and low selectivity predicates #1288 [arrow]
- Speed up
DeltaBitPackDecoder
#1281 [parquet] - Fix all clippy lints in arrow crate #1255 [arrow]
- Expose page encoding
ColumnChunkMetadata
#1322 [parquet] (shanisolomon) - Expose column index and offset index in
ColumnChunkMetadata
#1318 [parquet] (shanisolomon) - Expose bloom filter offset in
ColumnChunkMetadata
#1309 [parquet] (shanisolomon) - Add
DictionaryArray::try_new()
to create dictionaries from pre existing arrays #1300 [arrow] (alamb) - Add
DictionaryArray::keys_iter
, andtake_iter
for other array types #1296 [arrow] (viirya) - Make
rle
decoder public underexperimental
feature #1271 [parquet] (zeevm) - Add
DictionaryArray
support ineq_dyn
kernel #1263 [arrow] (viirya)
Fixed bugs:
len
is not a parameter ofMutableArrayData::extend
#1316- module
data_type
is private in Rust Parquet 8.0.0 #1302 [parquet] - Test failure: bit_chunk_iterator #1294
- csv_writer benchmark fails with "no such file or directory" #1292
Documentation updates:
Performance improvements:
- Vectorize DeltaBitPackDecoder, up to 5x faster decoding #1284 [parquet] (tustvold)
- Skip zero-ing primitive nulls #1280 [parquet] (tustvold)
- Add specialized filter kernels in
compute
module (up to 10x faster) #1248 [parquet] [arrow] (tustvold)
Closed issues:
- Expose column and offset index metadata offset #1317
- Expose bloom filter metadata offset #1308
- Improve ergonomics to construct
DictionaryArrays
fromKey
andValue
arrays #1299 - Make it easier to iterate over
DictionaryArray
#1295 [arrow] - (WON'T FIX) Don't Interwine Bit and Byte Aligned Operations in
BitReader
#1282 - how to create arrow::array from streamReader #1278
- Remove scientific notation when converting floats to strings. #983
Merged pull requests:
- Update the document of function
MutableArrayData::extend
#1336 [arrow] (HaoYang670) - Fix clippy lint
dead_code
#1324 [arrow] (gsserge) - fix test bug and ensure that bloom filter metadata is serialized in
to_thrift
#1320 [parquet] (shanisolomon) - Enable more clippy lints in arrow #1315 [arrow] (gsserge)
- Fix clippy lint
clippy::type_complexity
#1310 [arrow] (gsserge) - Fix clippy lint
clippy::float_equality_without_abs
#1305 [arrow] (gsserge) - Fix clippy
clippy::vec_init_then_push
lint #1303 [arrow] (gsserge) - Fix failing csv_writer bench #1293 [arrow] (andygrove)
- Changes for 9.0.2 #1291 [parquet] [arrow] [arrow-flight] (alamb)
- Fix bitmask creation also for simd comparisons with scalar #1290 [arrow] (jhorstmann)
- Fix simd comparison kernels #1286 [arrow] (jhorstmann)
- Restrict Decoder to compatible types (#1276) #1277 [parquet] (tustvold)
- Fix some clippy lints in parquet crate, rename
LevelEncoder
variants to conform to Rust standards #1273 [parquet] (HaoYang670) - Use new DecimalArray creation API in arrow crate #1249 [arrow] (alamb)
- Improve
DecimalArray
API ergonomics: additer()
,FromIterator
,with_precision_and_scale
#1223 [arrow] (alamb)
9.0.2 (2022-02-09)
Breaking changes:
- Add
Send
+Sync
toDataType
,RowGroupReader
,FileReader
,ChunkReader
. #1264 - Rename the function
Bitmap::len
toBitmap::bit_len
to clarify its meaning #1242 [parquet] [arrow] (HaoYang670) - Remove unused / broken
memory-check
feature #1222 [arrow] (jhorstmann) - Potentially buffer multiple
RecordBatches
before writing a parquet row group inArrowWriter
#1214 [parquet] [arrow] (tustvold)
Implemented enhancements:
- Add
async
arrow parquet reader #1154 [parquet] [arrow] (tustvold) - Rename
Bitmap::len
toBitmap::bit_len
#1233 - Extend CSV schema inference to allow scientific notation for floating point types #1215 [arrow]
- Write Multiple RecordBatch to Parquet Row Group #1211
- Add doc examples for
eq_dyn
etc. #1202 [arrow] - Add comparison kernels for
BinaryArray
#1108 impl ArrowNativeType for i128
#1098- Remove
Copy
trait bound from dyn scalar kernels #1243 [arrow] (matthewmturner) - Add
into_inner
for IPCFileWriter
#1236 [arrow] (yjshen) - [Minor]Re-export
array::builder::make_builder
to make it available for downstream #1235 [arrow] (yjshen)
Fixed bugs:
- Parquet v8.0.0 panics when reading all null column to NullArray #1245 [parquet]
- Get
Unknown configuration option rust-version
when running the rust format command #1240 Bitmap
Length Validation is Incorrect #1231 [arrow]- Writing sliced
ListArray
orMapArray
ignore offsets #1226 [parquet] - Remove broken
memory-tracking
crate feature #1171 - Revert making
parquet::data_type
andparquet::arrow::schema
experimental #1244 [parquet] (tustvold)
Documentation updates:
- Update parquet crate documentation and examples #1253 [parquet] [arrow] (alamb)
- Refresh parquet readme / contributing guide #1252 [parquet] (alamb)
- Add docs examples for dynamically compare functions #1250 [arrow] (HaoYang670)
- Add Rust Docs examples for UnionArray #1241 [arrow] (HaoYang670)
- Improve documentation for Bitmap #1237 [arrow] (alamb)
Performance improvements:
- Improve performance for arithmetic kernels with
simd
feature enabled (except for division/modulo) #1221 [arrow] (jhorstmann) - Do not concatenate identical dictionaries #1219 [arrow] (tustvold)
- Preserve dictionary encoding when decoding parquet into Arrow arrays, 60x perf improvement (#171) #1180 [parquet] (tustvold)
Closed issues:
UnalignedBitChunkIterator
to that iterates through already alignedu64
blocks #1227- Remove unused
ArrowArrayReader
in parquet #1197 [parquet]
Merged pull requests:
- Upgrade clap to 3.0.0 #1261 [parquet] (Jimexist)
- Update chrono-tz requirement from 0.4 to 0.6 #1259 [arrow] (dependabot[bot])
- Update zstd requirement from 0.9 to 0.10 #1257 [parquet] (dependabot[bot])
- Fix NullArrayReader (#1245) #1246 [parquet] (tustvold)
- dyn compare for binary array #1238 [arrow] (HaoYang670)
- Remove arrow array reader (#1197) #1234 [parquet] (tustvold)
- Fix null bitmap length validation (#1231) #1232 [arrow] (tustvold)
- Faster bitmask iteration #1228 [parquet] [arrow] (tustvold)
- Add non utf8 values into the test cases of BinaryArray comparison #1220 [arrow] (HaoYang670)
- Update DECIMAL_RE to allow scientific notation in auto inferred schemas #1216 [arrow] (pjmore)
- Fix simd comparison kernels #1286 [arrow] (jhorstmann)
- Fix bitmask creation also for simd comparisons with scalar #1290 [arrow] (jhorstmann)
8.0.0 (2022-01-20)
Breaking changes:
- Return error from JSON writer rather than panic #1205 [arrow] (Ted-Jiang)
- Remove
ArrowSignedNumericType
to Simplify and reduce code duplication in arithmetic kernels #1161 [arrow] (jhorstmann) - Restrict RecordReader and friends to scalar types (#1132) #1155 [parquet] (tustvold)
- Move more parquet functionality behind experimental feature flag (#1032) #1134 [parquet] (tustvold)
Implemented enhancements:
- Parquet reader should be able to read structs within list #1186 [parquet]
- Disable serde_json
arbitrary_precision
feature flag #1174 [arrow] - Simplify and reduce code duplication in arithmetic.rs #1160 [arrow]
- Return
Err
from JSON writer rather thanpanic!
for unsupported types #1157 [arrow] - Support
scalar
mathematics kernels forArray
and scalar value #1153 [arrow] - Support
DecimalArray
in sort kernel #1137 - Parquet Fuzz Tests #1053
- BooleanBufferBuilder Append Packed #1038 [arrow]
- parquet Performance Optimization: StructArrayReader Redundant Level & Bitmap Computation #1034 [parquet]
- Reduce Public Parquet API #1032 [parquet]
- Add
from_iter_values
for binary array #1188 [arrow] (Jimexist) - Add support for
MapArray
in json writer #1149 [arrow] (helgikrs)
Fixed bugs:
- Empty string arrays with no nulls are not equal #1208 [arrow]
- Pretty print a
RecordBatch
containingFloat16
triggers a panic #1193 [arrow] - Writing structs nested in lists produces an incorrect output #1184 [parquet]
- Undefined behavior for
GenericStringArray::from_iter_values
if reported iterator upper bound is incorrect #1144 [arrow] - Interval comparisons with
simd
feature asserts #1136 [arrow] - RecordReader Permits Illegal Types #1132 [parquet]
Security fixes:
- Fix undefined behavor in GenericStringArray::from_iter_values #1145 [arrow] (alamb)
- parquet: Optimized ByteArrayReader, Add UTF-8 Validation (#1040) #1082 [parquet] [arrow] (tustvold)
Documentation updates:
- Update parquet crate readme #1192 [parquet] (alamb)
- Document safety justification of some uses of
from_trusted_len_iter
#1148 [arrow] (alamb)
Performance improvements:
- Improve parquet reading performance for columns with nulls by preserving bitmask when possible (#1037) #1054 [parquet] [arrow] (tustvold)
- Improve parquet performance: Skip levels computation for required struct arrays in parquet #1035 [parquet] (tustvold)
Closed issues:
Merged pull requests:
- fix a bug in variable sized equality #1209 [arrow] (helgikrs)
- Pin WASM / packed SIMD tests to nightly-2022-01-17 #1204 (alamb)
- feat: add support for casting Duration/Interval to Int64Array #1196 [arrow] (e-dard)
- Add comparison support for fully qualified BinaryArray #1195 [arrow] (HaoYang670)
- Fix in display of
Float16Array
#1194 [arrow] (helgikrs) - update nightly version for miri #1189 (Jimexist)
- feat(parquet): support for reading structs nested within lists #1187 [parquet] (helgikrs)
- fix: Fix a bug in how definition levels are calculated for nested structs in a list #1185 [parquet] (helgikrs)
- Truncate bitmask on BooleanBufferBuilder::resize: #1183 [parquet] [arrow] (tustvold)
- Add ticket reference for false positive in clippy #1181 [arrow] (alamb)
- Fix record formatting in 1.58 #1178 [parquet] (tustvold)
- Serialize i128 as JSON string #1175 [arrow] (tustvold)
- Support DecimalType in
sort
andtake
kernels #1172 [arrow] (liukun4515) - Fix new clippy lints introduced in Rust 1.58 #1170 [parquet] [arrow] (alamb)
- Fix compilation error with simd feature #1169 [arrow] (jhorstmann)
- Fix bug while writing parquet with empty lists of structs #1166 [parquet] (helgikrs)
- Use tempfile for parquet tests #1165 [parquet] (tustvold)
- Remove left over dev/README.md file from arrow/arrow-rs split #1162 (alamb)
- Add multiply_scalar kernel #1159 [arrow] (viirya)
- Fuzz test different parquet encodings #1156 [parquet] (tustvold)
- Add subtract_scalar kernel #1152 [arrow] (viirya)
- Add add_scalar kernel #1151 [arrow] (viirya)
- Move simd right out of for_each loop #1150 [arrow] (viirya)
- Internal Remove
GenericStringArray::from_vec
andGenericStringArray::from_opt_vec
#1147 [arrow] (alamb) - Implement SIMD comparison operations for types with less than 4 lanes (i128) #1146 [arrow] (jhorstmann)
- Extends parquet fuzz tests to also tests nulls, dictionaries and row groups with multiple pages (#1053) #1110 [parquet] (tustvold)
- Generify ColumnReaderImpl and RecordReader (#1040) #1041 [parquet] (tustvold)
- BooleanBufferBuilder::append_packed (#1038) #1039 [arrow] (tustvold)
7.0.0 (2022-1-07)
Breaking changes:
pretty_format_batches
now returnsResult<impl Display>
rather thanString
: #975MutableBuffer::typed_data_mut
is markedunsafe
: #1029- UnionArray updated match latest Arrow spec, added
UnionMode
,UnionArray::new()
markedunsafe
: #885
New Features:
- Support for
Float16Array
types #888 - IPC support for
UnionArray
#654 - Dynamic comparison kernels for scalars (e.g.
eq_dyn_scalar
), includingDictionaryArray
: #1113
Enhancements:
- Added
Schema::with_metadata
andField::with_metadata
#1092 - Support for custom datetime format for inference and parsing csv files #1112
- Implement
Array
forArrayRef
for easier use #1129 - Pretty printing display support for
FixedSizeBinaryArray
#1097 - Dependency Upgrades:
pyo3
,parquet-format
,prost
,tonic
- Avoid allocating vector of indices in
lexicographical_partition_ranges
#998
Fixed bugs:
- (parquet) Fix reading of dictionary encoded pages with null values: #1130
6.5.0 (2021-12-23)
- 092fc64bbb019244887ebd0d9c9a2d3e3a9aebc0 support cast decimal to decimal (#1084) (#1093)
- 01459762ed18b504e00e7b2818fce91f19188b1e Fix like regex escaping (#1085) (#1090)
- 7c748bfccbc2eac0c1138378736b70dcb7e26a5b support cast decimal to signed numeric (#1073) (#1089)
- bd3600b6483c253ae57a38928a636d39a6b7cb02 parquet: Use constant for RLE decoder buffer size (#1070) (#1088)
- 2b5c53ecd92468fd95328637a15de7f35b6fcf28 Box RleDecoder index buffer (#1061) (#1062) (#1081)
- 78721bc1a467177679ad6196b994759cf4d73377 BooleanBufferBuilder correct buffer length (#1051) (#1052) (#1080)
- 3a5e3541d3a4db61a828011ed95c8539adf1d57c support cast signed numeric to decimal (#1044) (#1079)
- 000bdb3053098255d43288aa3e8665e8b1892a6c fix(compute): LIKE escape parenthesis (#1042) (#1078)
- e0abdb9e62772a2f853974e68e744246e7f47569 Add Schema::project and RecordBatch::project functions (#1033) (#1077)
- 31911a4d6328d889d98796b896412b3997f73e13 Remove outdated safety example from doc (#1050) (#1058)
- 71ac8620993a65a7f1f57278c3495556625356b3 Use existing array type in
take
kernel (#1046) (#1057) - 1c5902376b7f7d56cb5249db4f98a6a370ead919 Extract method to drive PageIterator -> RecordReader (#1031) (#1056)
- 7ca39361f8733b86bc0cef5ed5d74093e2c6b14d Clarify governance of arrow crate (#1030) (#1055)
6.4.0 (2021-12-10)
- 049f48559f578243935b6e512d06c4c2df360bf1 Force new cargo and target caching to fix CI (#1023) (#1024)
- ef37da3b60f71a52d5ad67e9ca810dca38b29f00 Fix a broken link and some missing styling in the main arrow crate docs (#1013) (#1019)
- f2c746a9b968714cfe05d35fcee8658371acd899 Remove out of date comment (#1008) (#1018)
- 557fc11e3b2a09a680c0cfbf38d27b13101b63fe Remove unneeded
rc
feature of serde (#990) (#1016) - b28385e096b1cf8f5fb2773d49b160f93d94fbac Docstrings for Timestamp*Array. (#988) (#1015)
- a92672e40217670d2566a85d70b0b59fffac594c Add full data validation for ArrayData::try_new() (#1007)
- 6c8b2936d7b07e1e2f5d1d48eea425a385382dfb Add boolean comparison to scalar kernels for less then, greater than (#977) (#1005)
- 14d140aeca608a23a8a6b2c251c8f53ffd377e61 Fix some typos in code and comments (#985) (#1006)
- b4507f562fb0eddfb79840871cd2733dc0e337cd Fix warnings introduced by Rust/Clippy 1.57.0 (#1004)
6.3.0 (2021-11-26)
Changes:
- 7e51df015ce851a5de444ca08b57b38e7ee959a3 add more error test case and change the code style (#952) (#976)
- 6c570cfe98d6a7a4ec74b139b733c5c72ed10015 Support read decimal data from csv reader if user provide the schema with decimal data type (#941) (#974)
- 4fa0d4d7f7d9ca0a3da2a6dfe3eae6dc2d51a79a Adding Pretty Print Support For Fixed Size List (#958) (#968)
- 9d453a3128013c03e8ed854ded76b15cc6f28be4 Fix bug in temporal utilities due to DST being ignored. (#955) (#967)
- 1b9fd9e3fb2653236513bb7dda5aa2fa14d1d831 Inferring 2. as Float64 for issue #929 (#950) (#966)
- e6c5e1c877bd94b3d6e545567f901d9962257cf8 Fix CI for latest nightly (#970) (#973)
- c96e8de457442806e18944f0b26dd06ba4cb1aee Fix primitive sort when input contains more nulls than the given sort limit (#954) (#965)
- 094037d418381584178db1d886cad3b5024b414a Update comfy-table to 5.0 (#957) (#964)
- 9f635021eee6786c5377c891218c5f88ebce07c3 Fix csv writing of timestamps to show timezone. (#849) (#963)
- f7deba4c3a050a52608462ee8a827bb8f6364140 Adding ability to parse float from number with leading decimal (#831) (#962)
- 59f96e842d05b63882f7ba285c66a9739761cf84 add ilike comparitor (#874) (#961)
- 54023c8a5543c9f9fa4955afa01189029f3e96f5 Remove unpassable cargo publish check from verify-release-candidate.sh (#882) (#949)
6.2.0 (2021-11-12)
Features / Fixes:
- 4037933e43cad9e4de027039ce14caa65f78300a Fix validation for offsets of StructArrays (#942) (#946)
- 1af9ca5d363d870550026a7b1abcb749befbb371 implement take kernel for null arrays (#939) (#944)
- 320de1c20aefbf204f6888e2ad3663863afeba9f add checker for appending i128 to decimal builder (#928) (#943)
- dff14113884ad4246a8cafb9be579ebdb4e1481f Validate arguments to ArrayData::new and null bit buffer and buffers (#810) (#936)
- c3eae1ec56303b97c9e15263063a6a13122ef194 fix some warning about unused variables in panic tests (#894) (#933)
- e80bb018450f13a30811ffd244c42917d8bf8a62 fix some clippy warnings (#896) (#930)
- bde89463b627be3f60b5569d038ca36c434da71d feat(ipc): add support for deserializing messages with nested dictionary fields (#923) (#931)
- 792544b5fb7b84224ef9745ecb9f330663c14fb4 refactor regexp_is_match_utf8_scalar to try to mitigate miri failures (#895) (#932)
- 3f0e252811cbb6e3f7c774959787dcfec985d03e Automatically retry failed MIRI runs to work around intermittent failures (#934)
- c9a9515c46d560ced00e23ff57cb10a1c97573cb Update mod.rs (#909) (#919)
- 64ed79ece67141b92dc45b8a1d43cb9d909aa6a9 Mark boolean kernels public (#913) (#920)
- 8b95fe0bbf03588c5cc00f67365c5b0dac4d7a34 doc example mistype (#904) (#918)
- 34c5eab4862cab16fdfd5f5ed6c68dce6298dfa4 allow null array to be cast to all other types (#884) (#917)
- 3c69752e55ed0c58f5a8faed918a22b45cd93766 Fix instances of UB that cause tests to not pass under miri (#878) (#916)
- 85402148c3af03d0855e81f855715ea98a7491c5 feat(ipc): Support writing dictionaries nested in structs and unions (#870) (#915)
- 03d95e626cb0e654775fefa77786674ea41be4a2 Fix references to changelog (#905)
6.1.0 (2021-10-29)
Features / Fixes:
- b42649b0088fe7762c713a41a23c1abdf8d0496d implement eq_dyn and neq_dyn (#858) (#867)
- 01743f3f10a377c1ca857cd554acbf84155766d8 fix: fix a bug in offset calculation for unions (#863) (#871)
- 8bfff793a23f0e71008c7a9eea7a54d6b913ecff add lt_bool, lt_eq_bool, gt_bool, gt_eq_bool (#860) (#868)
- 8845e91d4ab584c822e9ee903db7069551b124af fix(ipc): Support serializing structs containing dictionaries (#848) (#865)
- 620282a0d9fdd2a8ed7e8313d17ba3dec64c80e5 Implement boolean equality kernels (#844) (#857)
- 94cddcacf785be982e69689291ce034ef00220b4 Cherry pick fix parquet_derive with default features (and fix cargo publish) (#856)
- 733fd583ddb3dbe6b4d58a809c444ee16ac0eae8 Use kernel utility for parsing timestamps in csv reader. (#832) (#853)
- 2cc64937a153f632796915d2d9869d5c2a501d28 [Minor] Fix clippy errors with new rust version (1.56) and float formatting with nightly (#845) (#850)
Other:
- bfac9e5a027e3bd78b7a1ec90c75a3e385bd66bb Test out new tarpaulin version (#852) (#866)
- 809350ced392cfc78d8a1a46228d4ffc25dea9ff Update README.md (#834) (#854)
- 70582f40dd21f5c710c4946266d0563a92b92337 [MINOR] Delete temp file from docs (#836) (#855)
- a721e00014015a7e598946b6efb9b1da8080ec85 Force fresh cargo cache key in CI (#839) (#851)
6.0.0 (2021-10-13)
Breaking changes:
- Replace
ArrayData::new()
withArrayData::try_new()
andunsafe ArrayData::new_unchecked
#822 [parquet] [arrow] (alamb) - Update Bitmap::len to return bits rather than bytes #749 [arrow] (matthewmturner)
- use sort_unstable_by in primitive sorting #552 [arrow] (Jimexist)
- New MapArray support #491 [parquet] [arrow] (nevi-me)
Implemented enhancements:
- Improve parquet binary writer speed by reducing allocations #819
- Expose buffer operations #808
- Add doc examples of writing parquet files using
ArrowWriter
#788
Fixed bugs:
- JSON reader can create null struct children on empty lists #825
- Incorrect null count for cast kernel for list arrays #815
minute
andsecond
temporal kernels do not respect timezone #500- Fix data corruption in json decoder f64-to-i64 cast #652 [arrow] (xianwill)
Documentation updates:
- Doctest for PrimitiveArray using from_iter_values. #694 [arrow] (novemberkilo)
- Doctests for BinaryArray and LargeBinaryArray. #625 [arrow] (novemberkilo)
- Add links in docstrings #605 [arrow] (alamb)
5.5.0 (2021-09-24)
Implemented enhancements:
Fixed bugs:
- Converting from string to timestamp uses microseconds instead of milliseconds #780
- Document has no link to
RowColumIter
#762 - length on slices with null doesn't work #744
5.4.0 (2021-09-10)
Implemented enhancements:
- Upgrade lexical-core to 0.8 #747
append_nulls
andappend_trusted_len_iter
for PrimitiveBuilder #725- Optimize MutableArrayData::extend for null buffers #397
Fixed bugs:
- Arithmetic with scalars doesn't work on slices #742
- Comparisons with scalar don't work on slices #740
unary
kernel doesn't respect offset #738new_null_array
creates invalid struct arrays #734- --no-default-features is broken for parquet #733 [parquet]
Bitmap::len
returns the number of bytes, not bits. #730- Decimal logical type is formatted incorrectly by print_schema #713
- parquet_derive does not support chrono time values #711
- Numeric overflow when formatting Decimal type #710
- The integration tests are not running #690
Closed issues:
- Question: Is there no way to create a DictionaryArray with a pre-arranged mapping? #729
5.3.0 (2021-08-26)
Implemented enhancements:
- Add optimized filter kernel for regular expression matching #697
- Can't cast from timestamp array to string array #587
Fixed bugs:
- 'Encoding DELTA_BYTE_ARRAY is not supported' with parquet arrow readers #708
- Support reading json string into binary data type. #701
Closed issues:
5.2.0 (2021-08-12)
Implemented enhancements:
- Make rand an optional dependency #671
- Remove undefined behavior in
value
method of boolean and primitive arrays #645 - Avoid materialization of indices in filter_record_batch for single arrays #636
- Add a note about arrow crate security / safety #627
- Allow the creation of String arrays from an interator of &Option<&str> #598
- Support arrow map datatype #395
Fixed bugs:
- Parquet fixed length byte array columns write byte array statistics #660 [parquet]
- Parquet boolean columns write Int32 statistics #659 [parquet]
- Writing Parquet with a boolean column fails #657
- JSON decoder data corruption for large i64/u64 #653
- Incorrect min/max statistics for strings in parquet files #641 [parquet]
Closed issues:
5.1.0 (2021-07-29)
Implemented enhancements:
- Make FFI_ArrowArray empty() public #602
- exponential sort can be used to speed up lexico partition kernel #586
- Implement sort() for binary array #568
- primitive sorting can be improved and more consistent with and without
limit
if sorted unstably #553
Fixed bugs:
- Confusing memory usage with CSV reader #623
- FFI implementation deviates from specification for array release #595
- Parquet file content is different if
~/.cargo
is in a git checkout #589 - Ensure output of MIRI is checked for success #581
- MIRI failure in
array::ffi::tests::test_struct
and other ffi tests #580 - ListArray equality check may return wrong result #570
- cargo audit failed #561
- ArrayData::slice() does not work for nested types such as StructArray #554
Documentation updates:
- More examples of how to construct Arrays #301
Closed issues:
5.0.0 (2021-07-14)
Breaking changes:
- Remove lifetime from DynComparator #543 [arrow]
- Simplify interactions with arrow flight APIs #376 [arrow-flight]
- refactor: remove lifetime from DynComparator #542 [arrow] (e-dard)
- use iterator for partition kernel instead of generating vec #438 [arrow] (Jimexist)
- Remove DictionaryArray::keys_array method #419 [arrow] (jhorstmann)
- simplify interactions with arrow flight APIs #377 [arrow-flight] (garyanaplan)
- return reference from DictionaryArray::values() (#313) #314 [arrow] (tustvold)
Implemented enhancements:
- Allow creation of StringArrays from Vec<String> #519 [arrow]
- Implement RecordBatch::concat #461 [arrow]
- Implement RecordBatch::slice() to slice RecordBatches #460 [arrow]
- Add a RecordBatch::split to split large batches into a set of smaller batches #343
- generate parquet schema from rust struct #539 [parquet] (nevi-me)
- Implement
RecordBatch::concat
#537 [arrow] (silathdiir) - Implement function slice for RecordBatch #490 [arrow] (b41sh)
- add lexicographically partition points and ranges #424 [arrow] (Jimexist)
- allow to read non-standard CSV #326 [arrow] (kazuk)
- parquet: Speed up
BitReader
/DeltaBitPackDecoder
#325 [parquet] (kornholi) - ARROW-12343: [Rust] Support auto-vectorization for min/max #9 [arrow] (Dandandan)
- ARROW-12411: [Rust] Create RecordBatches from Iterators #7 [arrow] (alamb)
Fixed bugs:
- Error building on master - error: cyclic package dependency: package
ahash v0.7.4
depends on itself. Cycle #544 - IPC reader panics with out of bounds error #541
- Take kernel doesn't handle nulls and structs correctly #530 [arrow]
- master fails to compile with
default-features=false
#529 - README developer instructions out of date #523
- Update rustc and packed_simd in CI before 5.0 release #517
- Incorrect memory usage calculation for dictionary arrays #503 [arrow]
- sliced null buffers lead to incorrect result in take kernel (and probably on other places) #502
- Cast of utf8 types and list container types don't respect offset #334 [arrow]
- fix take kernel null handling on structs #531 [arrow] (bjchambers)
- Correct array memory usage calculation for dictionary arrays #505 [arrow] (jhorstmann)
- parquet: improve BOOLEAN writing logic and report error on encoding fail #443 [parquet] (garyanaplan)
- Fix bug with null buffer offset in boolean not kernel #418 [arrow] (jhorstmann)
- respect offset in utf8 and list casts #335 [arrow] (ritchie46)
- Fix comparison of dictionaries with different values arrays (#332) #333 [arrow] (tustvold)
- ensure null-counts are written for all-null columns #307 [parquet] (crepererum)
- fix invalid null handling in filter #296 [arrow] (ritchie46)
- fix NaN handling in parquet statistics #256 (crepererum)
Documentation updates:
- Improve arrow's crate's readme on crates.io #463
- Clean up README.md in advance of the 5.0 release #536 [arrow] [arrow-flight] [parquet] (alamb)
- fix readme instructions to reflect new structure #524 (marcvanheerden)
- Improve docs for NullArray, new_null_array and new_empty_array #240 [arrow] (alamb)
Merged pull requests:
- Fix default arrow build #533 [arrow] (alamb)
- Add tests for building applications using arrow with different feature flags #532 [arrow] (alamb)
- Remove unused futures dependency from arrow-flight #528 [arrow-flight] (alamb)
- CI: update rust nightly and packed_simd #525 [arrow] (ritchie46)
- Support
StringArray
creation from String Vec #522 [arrow] (silathdiir) - Fix parquet benchmark schema #513 [parquet] (nevi-me)
- Fix parquet definition levels #511 [parquet] (nevi-me)
- Fix for primitive and boolean take kernel for nullable indices with an offset #509 [arrow] (jhorstmann)
- Bump flatbuffers #499 [arrow] (PsiACE)
- implement second/minute helpers for temporal #493 [arrow] (ovr)
- special case concatenating single element array shortcut #492 [arrow] (Jimexist)
- update docs to reflect recent changes (joins and window functions) #489 (Jimexist)
- Update rand, proc-macro and zstd dependencies #488 [arrow] [arrow-flight] [parquet] (alamb)
- Doctest for GenericListArray. #474 [arrow] (novemberkilo)
- remove stale comment on
ArrayData
equality and update unit tests #472 (Jimexist) - remove unused patch file #471 (Jimexist)
- fix clippy warnings for rust 1.53 #470 (Jimexist)
- Fix PR labeler #468 (Dandandan)
- Tweak dev backporting docs #466 (alamb)
- Unvendor Archery #459 (kszucs)
- Add sort boolean benchmark #457 (alamb)
- Add C data interface for decimal128 and timestamp #453 [arrow] (alippai)
- Implement the Iterator trait for the json Reader. #451 [arrow] (LaurentMazare)
- Update release docs + release email template #450 (alamb)
- remove clippy unnecessary wraps suppresions in cast kernel #449 (Jimexist)
- Use partition for bool sort #448 (Jimexist)
- remove unnecessary wraps in sort #445 (Jimexist)
- Python FFI bridge for Schema, Field and DataType #439 [arrow] (kszucs)
- Update release Readme.md #436 (alamb)
- Derive Eq and PartialEq for SortOptions #425 (tustvold)
- refactor lexico sort for future code reuse #423 (Jimexist)
- Reenable MIRI check on PRs #421 (alamb)
- Sort by float lists #420 (medwards)
- Fix out of bounds read in bit chunk iterator #416 (jhorstmann)
- Doctests for DecimalArray. #414 (novemberkilo)
- Add Decimal to CsvWriter and improve debug display #406 (alippai)
- MINOR: update install instruction #400 (alippai)
- use prettier to auto format md files #398 (Jimexist)
- window::shift to work for all array types #388 (Jimexist)
- add more tests for window::shift and handle boundary cases #386 (Jimexist)
- Implement faster arrow array reader #384 (yordan-pavlov)
- Add set_bit to BooleanBufferBuilder to allow mutating bit in index #383 (boazberman)
- make sure that only concat preallocates buffers #382 (ritchie46)
- Respect max rowgroup size in Arrow writer #381 [parquet] (nevi-me)
- Fix typo in release script, update release location #380 (alamb)
- Doctests for FixedSizeBinaryArray #378 (novemberkilo)
- Simplify shift kernel using new_null_array #370 (Dandandan)
- allow
SliceableCursor
to be constructed from anArc
directly #369 (crepererum) - Add doctest for ArrayBuilder #367 (alippai)
- Fix version in readme #365 (domoritz)
- Remove superfluous space #363 (domoritz)
- Add crate badges #362 (domoritz)
- Disable MIRI check until it runs cleanly on CI #360 (alamb)
- Only register Flight.proto with cargo if it exists #351 (tustvold)
- Reduce memory usage of concat (large)utf8 #348 (ritchie46)
- Fix filter UB and add fast path #341 (ritchie46)
- Automatic cherry-pick script #339 (alamb)
- Doctests for BooleanArray. #338 (novemberkilo)
- feature gate ipc reader/writer #336 (ritchie46)
- Add ported Rust release verification script #331 (wesm)
- Doctests for StringArray and LargeStringArray. #330 (novemberkilo)
- inline PrimitiveArray::value #329 (ritchie46)
- Enable wasm32 as a target architecture for the SIMD feature #324 (roee88)
- Fix undefined behavior in FFI and enable MIRI checks on CI #323 (roee88)
- Mutablebuffer::shrink_to_fit #318 [arrow] (ritchie46)
- Add (simd) modulus op #317 (gangliao)
- feature gate csv functionality #312 [arrow] (ritchie46)
- [Minor] Version upgrades #304 (Dandandan)
- Remove old release scripts #293 (alamb)
- Add Send to the ArrayBuilder trait #291 (Max-Meldrum)
- Added changelog generator script and configuration. #289 (jorgecarleitao)
- manually bump development version #288 (nevi-me)
- Fix FFI and add support for Struct type #287 (roee88)
- Fix subtraction underflow when sorting string arrays with many nulls #285 (medwards)
- Speed up bound checking in
take
#281 (Dandandan) - Update PR template by commenting out instructions #278 (nevi-me)
- Added Decimal support to pretty-print display utility (#230) #273 (mgill25)
- Fix null struct and list roundtrip #270 (nevi-me)
- 1.52 clippy fixes #267 (nevi-me)
- Fix typo in csv/reader.rs #265 (domoritz)
- Fix empty Schema::metadata deserialization error #260 (hulunbier)
- update datafusion and ballista doc links #259 (Jimexist)
- support full u32 and u64 roundtrip through parquet #258 [parquet] (crepererum)
- [MINOR] Added env to run rust in integration. #253 (jorgecarleitao)
- [Minor] Made integration tests always run. #248 (jorgecarleitao)
- fix parquet max_definition for non-null structs #246 (nevi-me)
- Disabled rebase needed until demonstrate working. #243 (jorgecarleitao)
- pin flatbuffers to 0.8.4 #239 (ritchie46)
- sort_primitive result is capped to the min of limit or values.len #236 (medwards)
- Read list field correctly #234 [parquet] (nevi-me)
- Fix code examples for RecordBatch::try_from_iter #231 (alamb)
- Support string dictionaries in csv reader (#228) #229 (tustvold)
- support LargeUtf8 in sort kernel #26 (ritchie46)
- Removed unused files #22 (jorgecarleitao)
- ARROW-12504: Buffer::from_slice_ref set correct capacity #18 [arrow] (tustvold)
- Add GitHub templates #17 (andygrove)
- ARROW-12493: Add support for writing dictionary arrays to CSV and JSON #16 [arrow] (tustvold)
- ARROW-12426: [Rust] Fix concatentation of arrow dictionaries #15 [arrow] (tustvold)
- Update repository and homepage urls #14 [arrow] [arrow-flight] [parquet] (Dandandan)
- Added rebase-needed bot #13 (jorgecarleitao)
- Added Integration tests against arrow #10 (jorgecarleitao)
4.4.0 (2021-06-24)
Breaking changes:
- migrate partition kernel to use Iterator trait #437 [arrow]
- Remove DictionaryArray::keys_array #391 [arrow]
Implemented enhancements:
- sort kernel boolean sort can be O(n) #447 [arrow]
- C data interface for decimal128, timestamp, date32 and date64 #413
- Add Decimal to CsvWriter #405
- Use iterators to increase performance of creating Arrow arrays #200 [parquet]
Fixed bugs:
- Release Audit Tool (RAT) is not being triggered #481
- Security Vulnerabilities: flatbuffers:
read_scalar
andread_scalar_at
allow transmuting values withoutunsafe
blocks #476 - Clippy broken after upgrade to rust 1.53 #467
- Pull Request Labeler is not working #462
- Arrow 4.3 release: error[E0658]: use of unstable library feature 'partition_point': new API #456
- parquet reading hangs when row_group contains more than 2048 rows of data #349
- Fail to build arrow #247
- JSON reader does not implement iterator #193 [arrow]
Security fixes:
- Ensure a successful MIRI Run on CI #227
Closed issues:
- sort kernel has a lot of unnecessary wrapping #446
- [Parquet] Plain encoded boolean column chunks limited to 2048 values #48 [parquet]
4.3.0 (2021-06-10)
Implemented enhancements:
- Add partitioning kernel for sorted arrays #428 [arrow]
- Implement sort by float lists #427 [arrow]
- Derive Eq and PartialEq for SortOptions #426 [arrow]
- use prettier and github action to normalize markdown document syntax #399
- window::shift can work for more than just primitive array type #392
- Doctest for ArrayBuilder #366
Fixed bugs:
- Boolean
not
kernel does not take offset of null buffer into account #417 - my contribution not marged in 4.2 release #394
- window::shift shall properly handle boundary cases #387
- Parquet
WriterProperties.max_row_group_size
not wired up #257 - Out of bound reads in chunk iterator #198 [arrow]
4.2.0 (2021-05-29)
Breaking changes:
Implemented enhancements:
- Simplify shift kernel using null array #371
- Provide
Arc
-based constructor forparquet::util::cursor::SliceableCursor
#368 - Add badges to crates #361
- Consider inlining PrimitiveArray::value #328
- Implement automated release verification script #327
- Add wasm32 to the list of target architectures of the simd feature #316
- add with_escape for csv::ReaderBuilder #315 [arrow]
- IPC feature gate #310
- csv feature gate #309 [arrow]
- Add
shrink_to
/shrink_to_fit
toMutableBuffer
#297
Fixed bugs:
- Incorrect crate setup instructions #364
- Arrow-flight only register rerun-if-changed if file exists #350
- Dictionary Comparison Uses Wrong Values Array #332
- Undefined behavior in FFI implementation #322
- All-null column get wrong parquet null-counts #306 [parquet]
- Filter has inconsistent null handling #295
4.1.0 (2021-05-17)
Implemented enhancements:
- Add Send to ArrayBuilder #290 [arrow]
- Improve performance of bound checking option #280 [arrow]
- extend compute kernel arity to include nullary functions #276
- Implement FFI / CDataInterface for Struct Arrays #251 [arrow]
- Add support for pretty-printing Decimal numbers #230 [arrow]
- CSV Reader String Dictionary Support #228 [arrow]
- Add Builder interface for adding Arrays to record batches #210 [arrow]
- Support auto-vectorization for min/max #209 [arrow]
- Support LargeUtf8 in sort kernel #25 [arrow]
Fixed bugs:
- no method named
select_nth_unstable_by
found for mutable reference&mut [T]
#283 - Rust 1.52 Clippy error #266
- NaNs can break parquet statistics #255 [parquet]
- u64::MAX does not roundtrip through parquet #254 [parquet]
- Integration tests failing to compile (flatbuffer) #249 [arrow]
- Fix compatibility quirks between arrow and parquet structs #245 [parquet]
- Unable to write non-null Arrow structs to Parquet #244 [parquet]
- schema: missing field
metadata
when deserialize #241 [arrow] - Arrow does not compile due to flatbuffers upgrade #238 [arrow]
- Sort with limit panics for the limit includes some but not all nulls, for large arrays #235 [arrow]
- arrow-rs contains a copy of the "format" directory #233 [arrow]
- Fix SEGFAULT/ SIGILL in child-data ffi #206 [arrow]
- Read list field correctly in <struct<list>> #167 [parquet]
- FFI listarray lead to undefined behavior. #20
Security fixes:
Documentation updates:
- Comment out the instructions in the PR template #277
- Update links to datafusion and ballista in README.md #19
- Update "repository" in Cargo.toml #12
Closed issues:
- Arrow Aligned Vec #268
- [Rust]: Tracking issue for AVX-512 #220 [arrow]
- Umbrella issue for clippy integration #217 [arrow]
- Support sort #215 [arrow]
- Support stable Rust #214 [arrow]
- Remove Rust and point integration tests to arrow-rs repo #211 [arrow]
- ArrayData buffers are inconsistent accross implementations #207
- 3.0.1 patch release #204
- Document patch release process #202
- Simplify Offset #186 [arrow]
- Typed Bytes #185 [arrow]
- [CI]docker-compose setup should enable caching #175
- Improve take primitive performance #174
- [CI] Try out buildkite #165 [arrow]
- Update assignees in JIRA where missing #160
- [Rust]: From<ArrayDataRef> implementations should validate data type #103 [arrow]
- [DataFusion] Verify that projection push down does not remove aliases columns #99 [arrow]
- [Rust][DataFusion] Implement modulus expression #98 [arrow]
- [DataFusion] Add constant folding to expressions during logically planning #96 [arrow]
- [DataFusion] DataFrame.collect should return RecordBatchReader #95 [arrow]
- [Rust][DataFusion] Add FORMAT to explain plan and an easy to visualize format #94 [arrow]
- [DataFusion] Implement metrics framework #90 [arrow]
- [DataFusion] Implement micro benchmarks for each operator #89 [arrow]
- [DataFusion] Implement pretty print for physical query plan #88 [arrow]
- [Archery] Support rust clippy in the lint command #83
- [rust][datafusion] optimize count(*) queries on parquet sources #75 [arrow]
- [Rust][DataFusion] Improve like/nlike performance #71 [arrow]
- [DataFusion] Implement optimizer rule to remove redundant projections #56 [arrow]
- [DataFusion] Parquet data source does not support complex types #39 [arrow]
- Merge utils from Parquet and Arrow #32 [arrow] [parquet]
- Add benchmarks for Parquet #30 [parquet]
- Mark methods that do not perform bounds checking as unsafe #28 [arrow]
- Test issue #24 [arrow]
- This is a test issue #11