zozlak / RODBCext

14 stars 10 forks source link

segfault with data and no parameters in the query #3

Closed r2evans closed 8 years ago

r2evans commented 8 years ago
> library(RODBCext)
> DSN <- "Driver=ODBC Driver 11 for SQL Server;Server=DBHOSTIP;Database=DBNAME;Uid=********;Pwd=********"
> con <- odbcDriverConnect(connection = DSN, readOnlyOptimize = TRUE)

> sqlExecute(con, query = "SELECT COUNT(*) AS nn FROM Events WHERE InternalName LIKE ?",
        data = data.frame("kan%"), fetch = TRUE)
   nn
 1  6

> sqlExecute(con, query = "SELECT COUNT(*) AS nn FROM Events",
        data = data.frame("kan%"), fetch = TRUE)

  *** caught segfault ***
 address (nil), cause 'memory not mapped'

Running on ubuntu-14.04.3 connecting with the ODBC Driver 11 for SQL Server to a MS SQL Server 2014 over a local network.

> sessionInfo()
 R version 3.2.5 (2016-04-14)
 Platform: x86_64-pc-linux-gnu (64-bit)
 Running under: Ubuntu 14.04.4 LTS

 locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
  [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base

 loaded via a namespace (and not attached):
  [1] Rcpp_0.12.5      lattice_0.20-33  tidyr_0.5.1      XML_3.98-1.4
  [5] dplyr_0.5.0.9000 assertthat_0.1   grid_3.2.5       R6_2.1.2
  [9] jsonlite_1.0     DBI_0.4-1        magrittr_1.5     rredis_1.7.0
 [13] RSQLite_1.0.0    httr_1.2.1       RODBCext_0.2.5   sp_1.2-3
 [17] xml2_1.0.0       openxlsx_3.0.0   RODBC_1.3-13     tools_3.2.5
 [21] readr_0.2.2      compiler_3.2.5   colorspace_1.2-6 rvest_0.3.2
 [25] rgeos_0.3-19     tibble_1.0

An easy work-around is a wrapper function to check for question marks in the query, but I don't like the potential of a segfault if I miss something. Thoughts?

zozlak commented 8 years ago

Code on GitHub fixed.

Also on its way to CRAN, but this might take a few days.

r2evans commented 8 years ago

Thanks!