paleolimbot commented on PR #985:
URL: https://github.com/apache/arrow-adbc/pull/985#issuecomment-1706960502

   Far from usable, but it works! Probably needs some version of "read 
everything from `stream` with a callback for each batch...I'm not sure that 
fits nicely into `promises` since there are an indeterminate number of batches.
   
   ``` r
   library(adbcdrivermanager)
   
   db <- adbc_database_init(adbcsqlite::adbcsqlite())
   con <- adbc_connection_init(db)
   
   flights <- nycflights13::flights
   flights$time_hour <- NULL
   flights |>
     write_adbc(con, "flights")
   
   
   # Sync
   stmt <- adbc_statement_init(con)
   adbc_statement_set_sql_query(stmt, "SELECT * from flights")
   stream <- nanoarrow::nanoarrow_allocate_array_stream()
   adbc_statement_execute_query(stmt, stream)
   #> [1] -1
   stream
   #> <nanoarrow_array_stream struct<year: int64, month: int64, day: int64, 
dep_time: int64, sched_dep_time: int64, dep_delay: double, arr_time: int64, 
sched_arr_time: int64, arr_delay: double, carrier: string, flight: int64, 
tailnum: string, origin: string, dest: string, air_time: double, distance: 
double, hour: double, minute: double>>
   #>  $ get_schema:function ()  
   #>  $ get_next  :function (schema = x$get_schema(), validate = TRUE)  
   #>  $ release   :function ()
   
   value <- NULL
   
   
   # Async
   (promise <- con |> 
     adbc_statement_init() |> 
     adbc_statement_set_sql_query("SELECT * from flights") |> 
     adbcdrivermanager:::adbc_statement_execute_query_promise() |> 
     promises::then(function(stream) {
       adbcdrivermanager:::adbc_array_stream_get_next_promise(stream)
     }) |> 
     promises::then(function(array) {
       tibble::as_tibble(array)
     }) |> 
     promises::then(function(tbl) {
       value <<- tbl
     }))
   #> <Promise [pending]>
   
   value
   #> NULL
   
   while(!later::loop_empty()) {
     later::run_now()
   }
   
   promise
   #> <Promise [fulfilled: tbl_df]>
   value
   #> # A tibble: 1,024 × 18
   #>     year month   day dep_time sched_dep_time dep_delay arr_time 
sched_arr_time
   #>    <dbl> <dbl> <dbl>    <dbl>          <dbl>     <dbl>    <dbl>          
<dbl>
   #>  1  2013     1     1      517            515         2      830           
 819
   #>  2  2013     1     1      533            529         4      850           
 830
   #>  3  2013     1     1      542            540         2      923           
 850
   #>  4  2013     1     1      544            545        -1     1004           
1022
   #>  5  2013     1     1      554            600        -6      812           
 837
   #>  6  2013     1     1      554            558        -4      740           
 728
   #>  7  2013     1     1      555            600        -5      913           
 854
   #>  8  2013     1     1      557            600        -3      709           
 723
   #>  9  2013     1     1      557            600        -3      838           
 846
   #> 10  2013     1     1      558            600        -2      753           
 745
   #> # ℹ 1,014 more rows
   #> # ℹ 10 more variables: arr_delay <dbl>, carrier <chr>, flight <dbl>,
   #> #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance 
<dbl>,
   #> #   hour <dbl>, minute <dbl>
   ```
   
   <sup>Created on 2023-09-05 with [reprex 
v2.0.2](https://reprex.tidyverse.org)</sup>


-- 
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: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to