jhrotko opened a new issue, #902:
URL: https://github.com/apache/arrow-java/issues/902
### Describe the enhancement requested
# Move UUID Extension Type from Test Module to Main Source
## Summary
Move the UUID extension type implementation from the test module to the main
source code alongside other extension types like `OpaqueType`. This will make
UUID available as a first-class extension type for users of the Arrow Java
library.
## Background
UUID (Universally Unique Identifier) is a widely-used data type in many
applications and databases. Arrow Java currently has a complete UUID extension
type implementation, but it's located in the test module rather than being
available for general use.
### Current State
The UUID extension type is currently implemented in the test module with the
following components:
**Type and Vector:**
- `vector/src/test/java/org/apache/arrow/vector/types/pojo/UuidType.java` -
Extension type definition
- `vector/src/test/java/org/apache/arrow/vector/UuidVector.java` - Vector
implementation
**Reader/Writer Support:**
-
`vector/src/test/java/org/apache/arrow/vector/complex/impl/UuidReaderImpl.java`
- Reader implementation
-
`vector/src/test/java/org/apache/arrow/vector/complex/impl/UuidWriterImpl.java`
- Writer implementation
-
`vector/src/test/java/org/apache/arrow/vector/complex/impl/UuidWriterFactory.java`
- Writer factory
**Holder:**
- `vector/src/test/java/org/apache/arrow/vector/holder/UuidHolder.java` -
Data holder
### Desired State
Move these components to the main source tree following the pattern
established by `OpaqueType`:
**Type and Vector:**
- `vector/src/main/java/org/apache/arrow/vector/extension/UuidType.java`
- `vector/src/main/java/org/apache/arrow/vector/extension/UuidVector.java`
**Reader/Writer Support:**
-
`vector/src/main/java/org/apache/arrow/vector/complex/impl/UuidReaderImpl.java`
-
`vector/src/main/java/org/apache/arrow/vector/complex/impl/UuidWriterImpl.java`
-
`vector/src/main/java/org/apache/arrow/vector/complex/impl/UuidWriterFactory.java`
**Holder:**
- `vector/src/main/java/org/apache/arrow/vector/holder/UuidHolder.java`
## Motivation
1. **Standardization**: UUID is a common data type used across many systems
(PostgreSQL, MySQL, Cassandra, etc.). Having it available as a standard
extension type improves interoperability.
2. **Consistency**: The current implementation is fully functional and
well-tested. It should be available to users rather than hidden in test code.
3. **Follows Established Pattern**: The `OpaqueType` extension type is
already in `org.apache.arrow.vector.extension`, establishing a clear pattern
for where extension types should live.
4. **Reduces Code Duplication**: Currently, projects that need UUID support
must either:
- Copy the test implementation into their own codebase
- Depend on the test JAR (which is not recommended)
- Implement their own UUID extension type
## Benefits
1. **User-Friendly**: Users can directly use UUID extension type without
copying test code
2. **Better Testing**: The implementation will be tested as part of the main
codebase
3. **Improved Interoperability**: Standardized UUID support across Arrow
implementations
4. **Future-Proof**: Establishes a pattern for adding more extension types
in the future
## Compatibility
This change is **backward compatible**:
- Existing code using the test implementation will continue to work
- The test module can keep stub classes that extend/reference the main
implementation for a deprecation period
- No breaking changes to the Arrow IPC format or wire protocol
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]