tustvold opened a new issue, #2659:
URL: https://github.com/apache/arrow-datafusion/issues/2659
**Describe the bug**
Currently `DataFrame` implements `TableProvider` allowing it to be
registered on a `SessionContext`, this will often be the same `SessionContext`
from which its `Arc<RwLock<SessionState>>` came. For example
```
#[tokio::test]
async fn register_table() -> Result<()> {
let df = test_table().await?.select_columns(&["c1", "c12"])?;
let ctx = SessionContext::new();
let df_impl = Arc::new(DataFrame::new(ctx.state.clone(),
&df.plan.clone()));
// register a dataframe as a table
ctx.register_table("test_table", df_impl.clone())?;
```
This will result in a circular reference that will prevent destruction of
the SchemaProvider and the DataFrame.
**To Reproduce**
Inspect code
**Expected behavior**
It should not be possible to introduce circular dependencies. On a more
holistic level, I'm not entirely sure what the purpose of this API is. Perhaps
it could be removed and replaced with a combination of
`DataFrame::to_logical_plan` and `ViewTable` (once #2657 is fixed)
**Additional context**
https://github.com/apache/arrow-datafusion/issues/2658
FYI @yjshen @xudong963
--
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]