apache / apache/datafusion

FFI schema providers fail when views are registered

オープン
#21,155 コメント 4 件 リアクション 0 件 担当者 1 名 @timsaucer が担当を希望しています GitHub で見る
bug
主要言語
Rust
スター
9.3k
フォーク
2.4k
平均マージ
3日 11時間
マージ済み PR(30日)
360

説明

### Describe the bug

When you have a FFI based schema provider and you register a view with it, it is unable to be executed. This is a regression from 51.0.0 to 52.3.0.

### To Reproduce

Add this unit test to `datafusion/ffi/tests/ffi_catalog.rs`

```
#[tokio::test]
async fn test_view_on_schema_provider() -> datafusion_common::Result<()> {
let module = get_module()?;
let (ctx, codec) = super::utils::ctx_and_codec();

let ffi_catalog =
module
.create_catalog()
.ok_or(DataFusionError::NotImplemented(
"External catalog provider failed to implement create_catalog"
.to_string(),
))?(codec);
let foreign_catalog: Arc = (&ffi_catalog).into();

let _ = ctx.register_catalog("fruit", foreign_catalog);

let df = ctx.table("fruit.apple.purchases").await?;

let df_view = df.into_view();

let _ = ctx
.catalog("fruit")
.unwrap()
.schema("apple")
.unwrap()
.register_table("sales".to_owned(), df_view);

let df = ctx.table("fruit.apple.sales").await?;
let results = df.collect().await?;

assert_eq!(results.len(), 2);
let num_rows: usize = results.into_iter().map(|rb| rb.num_rows()).sum();
assert_eq!(num_rows, 5);

Ok(())
}
```

### Expected behavior

These views should work.

### Additional context

Originally filed as https://github.com/apache/datafusion-python/issues/1444

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。