Skip to content

v0.12.6.1

Choose a tag to compare

@wjsi wjsi released this 14 Aug 02:20
bc3cea1

This release backports several fixes and features from the master branch to the 0.12.6 branch, introducing the Variant and Vector data types, improving account signing mechanisms and concurrency safety, and fixing a RecordHasher crash in specific scenarios.

Features

  • Variant and Vector data type - Adds the Variant and Vector primitive data type, allowing these two types to be declared. Note that this only supports type definitions. You need to upgrade to later PyODPS versions on Python 3 to truly use these types.
  • sts_token constructor argument - Supports passing sts_token directly when constructing the ODPS entry object, which automatically creates an StsAccount, simplifying STS scenario initialization.

Bug Fixes

  • Fix RecordHasher IndexError when PK columns are not at the beginning of schema - The Cython version of RecordHasher would crash with an index out-of-bounds error when primary key columns were not located at the start of the schema. Replaced with an independent key_idx counter to map primary key columns, fixing the issue. (aliyun/aliyun-odps-python-sdk#324)
  • Fix concurrent race in CloudAccount v4 signature key cache - CloudAccount caches the v4 signing key keyed by date; concurrent sign_request calls could race the check-then-set on _last_signature_date / _last_signature_key.
  • Fix IndexError when writing to sparse block IDs - _open_writer stored sub-writers indexed by block-id value while the rest of AbstractTableWriter indexes _blocks_writers by position, breaking open_writer(blocks=[3, 7]) ... write(3, ...). Threaded the positional idx through _open_writer and asserted the block_id/idx invariant at the storage point, restoring the v0.9 positional contract.