[Feature] Support Lance file format
- Langage dominant
- C++
- Étoiles
- 65
- Forks
- 25
- Merge moyen
- 2 j 9 h
- PR mergées (30 j)
- 82
Description
### Search before asking
- [x] I searched in the [issues](https://github.com/apache/paimon-cpp/issues) and found nothing similar.
### Motivation
Apache Paimon Java supports Lance as a data file format through the paimon-lance module. Paimon C++ currently cannot read or write tables configured with file.format=lance, which prevents Java and C++ engines from interoperating on those tables.
### Solution
Add optional Lance file format support to Paimon C++, aligned with the Java implementation and Lance 0.39.0:
- register a Lance file format factory behind a disabled-by-default CMake option;
- support reading and writing Lance files through the existing file format interfaces;
- support column projection, precise row selection, row counts, and file row-id reporting;
- validate the same supported and unsupported logical types as Java;
- add C++ round-trip tests and Java/C++ compatibility fixtures in both directions.
The implementation should follow the existing Mosaic Rust FFI integration and lifecycle patterns.
### Anything else?
Java reference module: https://github.com/apache/paimon/tree/master/paimon-lance
### Are you willing to submit a PR?
- [x] I am willing to submit a PR!
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par lire l’intégration existante de Mosaic Rust FFI et les modèles de cycle de vie, puis comparez le module de référence Java dans paimon-lance et examinez les interfaces existantes de format de fichier. Le travail est considéré comme terminé lorsqu’une intégration CMake optionnelle, désactivée par défaut, prend en charge les lectures et écritures Lance, les projections et la sélection de lignes requises, les métadonnées de ligne, la validation des types logiques, les tests round-trip et les fixtures de compatibilité Java/C++.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cmake, cpp, java, rust
- Domaine
- data-engineering, databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100