Skip to content

[core] Support more key-time types in native merge_map_with_keytime - #1378

Open
PyRSA wants to merge 1 commit into
apache:mainfrom
PyRSA:feat/merge-map-keytime-types
Open

PyRSA wants to merge 1 commit into
apache:mainfrom
PyRSA:feat/merge-map-keytime-types

Conversation

@PyRSA

@PyRSA PyRSA commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

Purpose

Extend Rust Native merge_map_with_keytime to support additional key-time types and align its comparison and merge semantics with existing implementations.

Brief change log

  • Support CHAR/VARCHAR, integer, FLOAT/DOUBLE, DATE, TIME, DECIMAL, TIMESTAMP, and TIMESTAMP_LTZ key-time types.
  • Use UTF-16 code unit ordering for string comparisons to match Java String.compareTo.
  • Align floating-point comparisons with Python semantics, including NaN and signed zero handling.
  • Compare timestamp values using their underlying ticks.
  • Support overwrite-on-equal-ts to control whether equal key-times replace existing values.
  • Share key-time configuration resolution and type validation between table validation and aggregator construction.
  • Reject unsupported key-time types during table creation.
  • Preserve existing NULL key-time, NULL ROW tombstone, and regular merge_map behavior.

Tests

  • spec::aggregation::tests: 23 passed.
  • merge_map::tests: 16 passed.
  • cargo fmt --check passed.
  • git diff --check passed.

API and Format

No public API or file format changes.

Documentation

Update SQL documentation with supported key-time types, comparison semantics, and overwrite-on-equal-ts behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant