Uh oh!
There was an error while loading. Please reload this page.
GH-825: Add UUID canonical extension type - #903
Conversation
This comment has been minimized.
This comment has been minimized.
@lidavidm could you take another look? Let me know if anything else is missing |
bodduv
left a comment
There was a problem hiding this comment.
Thank you for adding the canonical type.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
jhrotko
commented
Nov 11, 2025
there are some integration tests failling: It seems the metadata elements when it's a map the order is not maintained. I this a known issue? @lidavidm |
lidavidm
commented
Nov 11, 2025
It's apache/arrow-go#571 |
jhrotko
commented
Nov 11, 2025
@lidavidm it was merged, should this be re-run? |
jhrotko
commented
Nov 12, 2025
@lidavidm anything else missing? |
bodduv
left a comment
There was a problem hiding this comment.
Thank you for addressing the comments.
| /** Registers the UuidType in the extension type registry. */ | ||
| private static final AtomicBoolean registered = new AtomicBoolean(false); | ||
| static { | ||
| ExtensionTypeRegistry.register(INSTANCE); | ||
| } | ||
| /** Register the extension type so it can be used globally. */ | ||
| public static void ensureRegistered() { | ||
| if (!registered.getAndSet(true)) { | ||
| // The values don't matter, we just need an instance | ||
| ExtensionTypeRegistry.register(UuidType.INSTANCE); | ||
| } | ||
| } |
There was a problem hiding this comment.
Isn't all of this redundant? If we have the static initializer, then ensureRegistered can just be a no-op. Or if we're going to use the atomic boolean, then we don't need the static initializer.
There was a problem hiding this comment.
this is only used in tests similarly to Opaque extension type
There was a problem hiding this comment.
There is no static initializer there. There is one here.
There was a problem hiding this comment.
Thank you! I added the static implementation following your suggestion
jbonofre
commented
Nov 26, 2025
Can you rebase please ? |
lidavidm
commented
Nov 26, 2025
I think these failures are related to upstream and won't go away on rebase. |
jbonofre
commented
Nov 26, 2025
I will check as I try to stabilize our CI. It fails way too often and it's an issue in PRs. |
jbonofre
commented
Nov 28, 2025
The PR looks good to me. I will merge as soon as CI is green. |
jbonofre
commented
Nov 28, 2025
CI failures are not relevant to this PR. I'm going ahead and merging. |
Uh oh!
There was an error while loading. Please reload this page.
## What's Changed The current UUID vector implementation creates new buffer slices when reading values through holders, which has several drawbacks: - Memory overhead: Each slice creates a new ArrowBuf object - Performance impact: Buffer slicing is slower than direct buffer indexing - Inconsistency: Other fixed-width types (like Decimal) use buffer indexing with a `start` offset field ### Proposed Changes 1. Add `start` field to UUID holders to track buffer offsets: - `UuidHolder`: Add `public int start = 0;` - `NullableUuidHolder`: Add `public int start = 0;` 2. Update `UuidVector` to use buffer indexing 3. Update readers and writers ### Related Work - Original UUID extension type implementation: GH-825 (#903) Closes#948
What's Changed
Add Uuid Extension type canonical implementation in Java. The proposed implementation was validated in Dremio engine
Closes#825