v0.12.6.1
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
VariantandVectorprimitive 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_tokenconstructor argument - Supports passingsts_tokendirectly when constructing theODPSentry object, which automatically creates anStsAccount, simplifying STS scenario initialization.
Bug Fixes
- Fix
RecordHasherIndexError when PK columns are not at the beginning of schema - The Cython version ofRecordHasherwould crash with an index out-of-bounds error when primary key columns were not located at the start of the schema. Replaced with an independentkey_idxcounter to map primary key columns, fixing the issue. (aliyun/aliyun-odps-python-sdk#324) - Fix concurrent race in
CloudAccountv4 signature key cache -CloudAccountcaches the v4 signing key keyed by date; concurrentsign_requestcalls could race the check-then-set on_last_signature_date/_last_signature_key. - Fix IndexError when writing to sparse block IDs -
_open_writerstored sub-writers indexed by block-id value while the rest ofAbstractTableWriterindexes_blocks_writersby position, breakingopen_writer(blocks=[3, 7])...write(3, ...). Threaded the positionalidxthrough_open_writerand asserted theblock_id/idxinvariant at the storage point, restoring the v0.9 positional contract.