[R-sig-DB] sqlUpdate causing crash with RODBC
Harlan Harris
h@r|@n @end|ng |rom h@rr|@@n@me
Tue May 3 21:34:28 CEST 2011
Hi all,
I'm trying to get writing/updates to an Oracle 10g database to work via
RODBC on Mac OSX. I've confirmed that I can write SQL and use sqlQuery to
update a simple table, but when I try to do the equivalent with sqlUpdate, R
crashes hard.
The testone table has two columns: id is a number (and primary key), and
asdf is a varchar2(40).
When I do this:
sqlUpdate(hdl, data.frame(id=4, asdf='zoom'), 'testone', verbose=TRUE,
test=TRUE)
I get a segfault and the following stack trace:
Process: R [8486]
Path: /Applications/R64.app/Contents/MacOS/R
Identifier: org.R-project.R
Version: R 2.12.2 GUI 1.36 Leopard build 64-bit (5691)
Code Type: X86-64 (Native)
Parent Process: launchd [153]
Date/Time: 2011-05-03 15:15:08.360 -0400
OS Version: Mac OS X 10.6.6 (10J567)
Report Version: 6
Interval Since Last Report: 173376 sec
Crashes Since Last Report: 5
Per-App Interval Since Last Report: 184150 sec
Per-App Crashes Since Last Report: 2
Anonymous UUID: C49D451E-9024-4368-9216-C5DE32F331B0
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Application Specific Information:
abort() called
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x00007fff81287616 __kill + 10
1 libSystem.B.dylib 0x00007fff81327cca abort + 83
2 libSystem.B.dylib 0x00007fff8123f6f5 free + 128
3 atoradb.so 0x000000010234c021 SQLFreeEnv + 501
4 atoradb.so 0x000000010234c175 SQLFreeStmt + 71
5 RODBC.so 0x000000010111c698
SQLFreeStmt_Internal + 305
6 RODBC.so 0x000000010111d2fb SQLFreeStmt + 312
7 RODBC.so 0x00000001011066f2 RODBCUpdate + 194
(RODBC.c:1184)
8 libR.dylib 0x000000010011a5b1 do_dotcall + 16145
(dotcode.c:857)
Looking at RODBC.c, it's crashing assigning a NULL:
/* free the buffers */
cachenbind_free(thisHandle);
(void)SQLFreeStmt(thisHandle->hStmt, SQL_RESET_PARAMS);
(void)SQLFreeHandle(SQL_HANDLE_STMT, thisHandle->hStmt);
thisHandle->hStmt = NULL;
return ScalarInteger(stat);
Has anyone seen this before?
Note that if I take out the test=TRUE, it still crashes, and the database is
not updated.
-Harlan
[[alternative HTML version deleted]]
More information about the R-sig-DB
mailing list