Skip to content

Releases: aliyun/aliyun-odps-java-sdk

v0.52.2-public

03 Jun 09:52
Compare
Choose a tag to compare
BUMP 0.52.2-public

v0.52.1-public

08 May 10:40
Compare
Choose a tag to compare
BUMP 0.52.1-public

v0.52.0-public

17 Apr 12:31
Compare
Choose a tag to compare

Changelog

[0.52.0-public] - 2025-04-17

🎉 New Features

  • TableAPI

    • Added enhanceWriteCheck parameter to TableWriteSessionBuilder to strengthen write validation capabilities
    • Added Append2 Table preview feature in TableCreator (🚧 Preview)
  • DownloadSession

    • Introduced enableMaxStorage configuration to support downloading Delta Tables via StorageAPI (🚧 Preview)
  • MaxQA

    • Implemented CSV data parsing to strongly-typed records (Parse CSV To Record)
    • After server readiness, getResult (non-Tunnel mode) will return typed data (previously all String types) (🚧 Preview)
  • SQL

    • Added SQLTaskOption and CreateInstanceOption configuration classes to simplify overloads of SQLTask.run()
    • Added support for submitting Merge Tasks using regular expressions
    • Implemented Unique ID mechanism to ensure idempotent submission of jobs with the same ID
  • ObjectConverter

    • Added support for BINARY_FORMAT_QUOTED_PRINTABLE format parsing

🛠️ Functionality Improvements

  • ArrowStreamRecordReader
    Refactored class implementation to support converting any source ArrowReader to RecordReader

  • ArrayRecord

    • Optimized type validation logic:
      ✅ Changed potential ClassCastException in set method to IllegalArgumentException
      ✅ Improved error message readability
      ✅ Prevented JVM implicit optimizations (e.g., truncated error messages to null)

更新日志

[0.52.0-public] - 2025-04-17

🎉 新增功能

  • TableAPI

    • TableWriteSessionBuilder 新增 enhanceWriteCheck 参数,增强写入校验能力
    • TableCreator 新增 Append2 Table 预览功能(🚧 Preview)
  • DownloadSession

    • 新增 enableMaxStorage 配置,支持通过 StorageAPI 下载 Delta Table(🚧 Preview)
  • MaxQA

    • 实现 CSV 数据解析到强类型记录功能(Parse CSV To Record
    • 服务端 Ready 后,getResult(非 Tunnel 模式)将返回类型化数据(原全量 String 类型)(🚧 Preview)
  • SQL

    • 新增 SQLTaskOptionCreateInstanceOption 配置类,简化 SQLTask.run() 方法重载
    • 支持通过正则表达式提交 Merge Task 作业
    • 新增 UniqueId 机制,确保同 ID 作业幂等提交
  • ObjectConverter

    • 新增 BINARY_FORMAT_QUOTED_PRINTABLE 格式解析支持

🛠️ 功能优化

  • ArrowStreamRecordReader
    重构类实现,支持将任意来源的 ArrowReader 转换为 RecordReader

  • ArrayRecord

    • 优化类型校验逻辑:
      ✅ 将 set 方法可能抛出的 ClassCastException 改为 IllegalArgumentException
      ✅ 增强错误信息可读性
      ✅ 避免 JVM 对异常的隐式优化(如错误信息被截断为 null)

v0.51.11-public

18 Mar 06:01
Compare
Choose a tag to compare

Changelog

[0.51.11-public] - 2025-03-18

Key Changes

  • MCQA 2.0 Structural Improvement: The ResultDescriptor subclass in Instance class has been upgraded from Map<String, String> to a dedicated POJO object, specifically optimized for MCQA 2.0 scenarios
  • Backward Compatibility: Fully compatible with legacy logic - existing code will continue to function without modification

更新日志

[0.51.11-public] - 2025-03-18

主要改动

  • 结构优化Instance 类中 ResultDescriptor 子类由 Map<String, String> 升级为独立的 POJO 对象,专门适配 MCQA 2.0 场景
  • 兼容保障:完全兼容旧版逻辑,现有代码无需修改即可正常运行

v0.51.10-public

11 Mar 11:27
Compare
Choose a tag to compare

Changelog

[0.51.10-public] - 2025-03-11

Features

  • TableTunnel Metrics Support
    Upload/Download methods now support metrics collection.
    Documentation Reference

  • TunnelBufferedReader Implementation(Alpha)
    Added TunnelBufferedReader for downloading table/instance data via short-lived connections.

  • Reorderable Data Structures
    Introduced ReorderableRecord and ReorderableStruct entities.
    Design Details


更新日志

[0.51.10-public] - 2025-03-11

功能增强

  • TableTunnel 指标支持
    Upload/Download 方法新增指标收集能力
    文档参考

  • TunnelBufferedReader 实现 (Alpha版本)
    新增 TunnelBufferedReader 类,支持通过短连接下载表/实例数据

  • 可排序数据结构
    新增 ReorderableRecordReorderableStruct 实体类
    设计说明

v0.51.10-SNAPSHOT

06 Mar 08:29
Compare
Choose a tag to compare
v0.51.10-SNAPSHOT Pre-release
Pre-release

Release Note: Data Consistency Enhancement for Struct Handling (v0.51.10-SNAPSHOT)


Background

The Tunnel SDK transmits data to the server based on column indices (not column names). This requires users to construct Record objects strictly following the column order defined in the TableSchema bound to the current session. However, this approach introduces complexity when building nested Struct types, as field order mismatches can lead to data inconsistency.


Solutions

1. ReorderableStruct for Flexible Struct Construction

Problem: Directly constructing Struct via field names may result in order mismatches with the target schema.

Solution:
Introducing ReorderableStruct (implements Struct interface) with the following features:

  • Constructor:
    public ReorderableStruct(StructTypeInfo type)
  • Field Setting Methods:
    public void setFieldValue(String fieldName, Object value) // Set by field name (case-insensitive)
    public void setFieldValue(int index, Object value)        // Set by index
  • Example:
    ReorderableStruct person = new ReorderableStruct(personStructType);
    person.setFieldValue("money", 1234L); // Field order irrelevant
    person.setFieldValue("age", 25);
    person.setFieldValue("name", "Jason");
  • Behavior:
    Ensures internal field order aligns with the schema, even if fields are set out-of-order.

2. ReorderableRecord for Automatic Schema Alignment

Problem: Structs constructed outside the SDK may have field orders incompatible with the target schema.

Solution:
Introducing ReorderableRecord (extends ArrayRecord), which automatically reorders Struct fields (including nested types like Array<Struct> or Map<Struct>) to match the schema:

  • Usage:
    TableTunnel.StreamUploadSession uploadSession;
    Struct upstreamData;
    Record record = new ReorderableRecord(uploadSession.getSchema()); // Bind to schema
    record.set("struct", upstreamData); // Automatic reordering
  • Performance Note:
    Reordering incurs additional computational overhead. Use this approach only when schema alignment is uncertain.

Key Constraints

The reorder method enforces strict schema consistency:

  • Field names, data types, and nested structures (including maps/arrays) must exactly match between the Struct and target schema (order-independent).
  • Exceptions:
    • IllegalArgumentException is thrown for mismatches (e.g., missing fields, type conflicts, or nested schema inconsistencies).

v0.51.9-public

26 Feb 03:16
Compare
Choose a tag to compare

[0.51.9-public] - 2025-02-26

Fixes

  • Struct Field Escaping
    Fixed getName(true) not adding backticks to all nested struct field names in TypeInfo.

[0.51.9-public] - 2025-02-26

问题修复

  • 结构体字段转义修复
    修复 TypeInfogetName(true) 方法未对嵌套结构体字段名添加反引号的问题

v0.51.8-public

20 Feb 09:30
Compare
Choose a tag to compare

Changelog

[0.51.8-public] - 2025-02-20

Changes

  • Record The set(String columnName, Object value) method now ignores the case of columnName. The getColumn method will always return column names in lowercase.

Features

  • Table Added getMetadataJson and getExtendedInfoJson methods.
  • Partition Added getMetadataJson, getExtendedInfoJson, getCdcSize, and getCdcRecordNum methods.
  • CommandApi Enhanced the DescribeTableCommand to include additional MetadataJson and ExtendedInfoJson fields in the response.
  • PartitionSpec Improved error messages for build failures to provide clearer debugging information.

v0.51.7-public

13 Feb 09:59
Compare
Choose a tag to compare

Changelog

[0.51.7-public] - 2025-02-13

Features

  • EPV2 Added support for EPV2 (External Project V2), including ListTable, ListSchema, DescribeTable interfaces
  • MCQA Added fallback logging when retrieving results via InstanceTunnel encounters failure rollback scenarios

更新日志

[0.51.7-public] - 2025-02-13

功能

  • EPV2 新增对 EPV2(External Project V2)的支持,包括ListTable, ListSchema, DescribeTable 等接口
  • MCQA 在通过 InstanceTunnel 取结果,发生失败回退的场景,加入回退日志

v0.51.6-public

26 Jan 06:42
Compare
Choose a tag to compare

[0.51.6-public] - 2025-01-26

Fixes

  • TypeInfo Fixed an issue where StructTypeInfo nested within ArrayTypeInfo or MapTypeInfo would not quote field names in nested structures when using getTypeName(true) method

[0.51.6-public] - 2025-01-26

修复

  • TypeInfo 修复了当 StructTypeInfo 嵌套在 ArrayTypeInfoMapTypeInfo 内时,getTypeName(true) 方法不会对嵌套内字段名进行 quote 的问题。