Skip to content

feat: add multi-version Flink module structure (1.17/1.18/1.19/1.20)#17

Open
fightBoxing wants to merge 5 commits into
mainfrom
feature/flink-multi-version-modules
Open

feat: add multi-version Flink module structure (1.17/1.18/1.19/1.20)#17
fightBoxing wants to merge 5 commits into
mainfrom
feature/flink-multi-version-modules

Conversation

@fightBoxing
Copy link
Copy Markdown
Collaborator

Summary

Convert the project to a multi-module Maven structure supporting Flink versions 1.17, 1.18, 1.19, and 1.20.

Changes

Multi-Module Structure

  • Added version-specific modules: lance-flink-1.17, lance-flink-1.18, lance-flink-1.19, lance-flink-1.20
  • Each module compiles the shared src/ directory with its corresponding Flink version
  • Used build-helper-maven-plugin to reference shared source and resource directories

Build Configuration

  • All modules compile with Java 8 target (consistent with Flink official builds)
  • Added maven-enforcer-plugin for Maven/JDK version and dependency convergence checks
  • Added spotless-maven-plugin for code formatting and Apache license header checks

Code Cleanup

  • Removed unused TableSchema import in LanceDynamicTableSource
  • Removed duplicate SPI files from version modules (already referenced via build-helper)
  • Removed unnecessary lance-flink-base module (code already in shared src/)
  • Removed JDK-based Maven profiles (all modules now build uniformly)

How to Build

# Build all modules
mvn clean package

# Build a specific version module
mvn clean package -pl lance-flink-1.18

kaori-seasons and others added 5 commits January 20, 2026 14:29
This commit introduces a new namespace abstraction layer for Lance catalog integration with Flink.

Key components added:
- AbstractLanceNamespaceAdapter: Interface defining namespace operations
- LanceNamespaceAdapter: Implementation with direct Lance Namespace SDK API calls
- LanceNamespaceConfig: Type-safe configuration management with ImplType enum
- BaseLanceNamespaceCatalog: Base catalog implementation for Flink integration
- LanceNamespaceAdapterITCase: Comprehensive integration tests (23 test cases)
- MockLanceNamespace: Mock implementation for standalone testing

Features:
- Direct API calls to Lance Namespace SDK (no reflection)
- Support for both directory and REST namespace implementations
- Complete CRUD operations for namespaces and tables
- Full metadata management
- Production-ready error handling and resource management
- Add BaseLanceNamespaceCatalog with full Flink Catalog API support
- Add LanceCatalogFactory for creating namespace adapters
- Refactor LanceNamespaceAdapter with improved CRUD operations
- Update LanceNamespaceConfig with extra_level and parent support
…e backend

- Remove MockLanceNamespace as lance-core natively supports DirectoryNamespace and RestNamespace
- Update LanceNamespaceAdapterITCase to use real DirectoryNamespace backend for testing
- Add nested RestNamespaceTests enabled via LANCE_REST_URI environment variable
- DirectoryNamespace is used for storage tests, RestNamespace for API tests when available
…raction layer - Remove AbstractLanceNamespaceAdapter interface - Let BaseLanceNamespaceCatalog use LanceNamespace API directly - Simplify LanceNamespaceAdapter to only handle connection init and resource management - Translate all Chinese comments to English - Update tests accordingly
- Convert to multi-module Maven project with version-specific modules
- Each module (lance-flink-1.17/1.18/1.19/1.20) compiles shared src/ with its Flink version
- Use build-helper-maven-plugin to reference shared source and resources
- All modules compile with Java 8 target (consistent with Flink official builds)
- Add maven-enforcer-plugin for Maven/JDK version and dependency checks
- Add spotless-maven-plugin for code formatting and license header checks
- Remove unused TableSchema import in LanceDynamicTableSource
- Remove duplicate SPI files from version modules (already referenced via build-helper)
- Remove unnecessary lance-flink-base module (code already in shared src/)
- Remove JDK-based Maven profiles (all modules now build uniformly)
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.

2 participants