Add DuckDB-based server-side JOIN with DuckDbTableReader abstraction

Vladimir Krizko requested to merge feature/join-operation into main
  • DuckDbTableReader: sealed interface for feeding tables to DuckDB (Acero impl for current, NativeParquet impl for post-Acero future)
  • ParquetQueryParser: join detection, alias extraction, DuckDB SQL rewrite
  • ParquetManager: executeJoin() via DuckDB, buildJoinSchema(), resolveTableFiles()
  • HadoopFlightSqlService: join-aware endpoint determination with single-server path (DuckDB join) and fallback (per-table Spark join)
  • JoinIntegrationTest: self-join, schema extraction, alias parsing

Merge request reports