[
https://issues.apache.org/jira/browse/ARROW-16421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17581418#comment-17581418
]
Weston Pace commented on ARROW-16421:
-------------------------------------
{quote}
So in general in C++ we rely on objects going out of scope to ensure files are
closed (in contrast to explicitly calling Close() on the InputStream) ?
{quote}
Yes. In C++ there is no "with" or "using" statement like there is in other
languages so relying on scope is the safe alternative. Explicitly calling
close usually leaves open the risk of missing a close on a failure path or
especially if an exception is thrown.
{quote}
But given the reported issues on Windows, that might not work sufficiently in
all cases?
{quote}
I'm not convinced this is the case. I'm pretty sure we are calling close on
Windows too. How are we confirming the file is open?
> [R] Permission error on Windows when deleting file previously accessed with
> open_dataset
> ----------------------------------------------------------------------------------------
>
> Key: ARROW-16421
> URL: https://issues.apache.org/jira/browse/ARROW-16421
> Project: Apache Arrow
> Issue Type: Improvement
> Components: R
> Affects Versions: 7.0.0
> Reporter: Will Jones
> Assignee: Will Jones
> Priority: Major
>
> On Windows this fails:
> {code:R}
> library(arrow)
> write_dataset(iris, "test_dataset")
> # Original example was with DuckDB, but that's not necessarily the issue
> # con <- open_dataset("test_dataset") |> to_duckdb()
> con <- open_dataset("test_dataset")$NewScan()$Finish()$ToRecordBatchReader()
> file.remove("test_dataset/part-0.parquet")
> #> Warning in file.remove("test_dataset/part-0.parquet"): cannot remove file
> #> 'test_dataset/part-0.parquet', reason 'Permission denied'
> #> [1] FALSE
> {code}
> But on MacOS it does not:
> {code:r}
> library(arrow)
> write_dataset(iris, "test_dataset")
> # Original example was with DuckDB, but that's not necessarily the issue
> # con <- open_dataset("test_dataset") |> to_duckdb()
> con <- open_dataset("test_dataset")$NewScan()$Finish()$ToRecordBatchReader()
> file.remove("test_dataset/part-0.parquet")
> #> [1] TRUE
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)