On 2 March 2006 at 13:46, Johannes Ranke wrote: | | * Dirk Eddelbuettel <[EMAIL PROTECTED]> [060302 13:30]: | > | > On 1 March 2006 at 22:30, Dirk Eddelbuettel wrote: | > | Did you try setting believeNRows=FALSE in odbcConnect() ? From | > | help(odbcConnect, package=RODBC): | > [...] | > | odbcConnect(dsn, uid = "", pwd = "", case = "nochange", | > | believeNRows = TRUE) | > | [...] | > | believeNRows: logical. Is the number of rows returned by the ODBC | > | connection believable? Not true for Oracle and Sybase, | > | apparently. | > | | > | This has been the fix on other systems, it could simply that RODBC gets | > | handed a bad value. Apparently common with some backends, as I recall I had | > | to use that too with some Sybase-on-Solaris versions a while back. | > | > I really meant FALSE, not TRUE: | > | > On 2 March 2006 at 10:00, Johannes Ranke wrote: | > | Package: r-cran-rodbc | > | Version: 1.1.5-1 | > | Followup-For: Bug #354723 | > [...] | > | [EMAIL PROTECTED]:~$ cat odbctest.R | > | library(RODBC) | > | channel <- odbcConnect("cytotox",uid="cytotox", | > | pwd="cytotox", believeNRows=TRUE) | > ^^^^^^^^^^^^^^^^^^ | > | query <- "SELECT plate FROM plates LIMIT 1,10" | > | tables <- sqlQuery(channel,query) | > | tables | > | odbcGetErrMsg(channel) | > | odbcClose(channel) | > | > So could you please try with FALSE? | | Hi again, | | as I said something in the mess above, I DID try with FALSE, here it is
Sorry, I must have mised that. | | > library(RODBC) | > channel <- odbcConnect("cytotox",uid="cytotox", | + pwd="cytotox", believeNRows=FALSE) | > query <- "SELECT plate FROM plates LIMIT 1,10" | > tables <- sqlQuery(channel,query) | > tables | character(0) | > odbcGetErrMsg(channel) | character(0) | > odbcClose(channel) I see. | > Otherwise, I agree with a comment you made in the another mail that it is | > probably the myodbc driver that causes it. RODBC only passes the command on. | | I could fix the problem of the segfault of php5-odbc by recompiling | libmyodbc (I will add this story to #353997, which is the same bug) I am still lost. So is this, or isn't this, one bug report. | But on this, I am still working. The following strace comparison between | working (i386 box) and failing (amd64 box) might be useful: I am not exactly sure how this would help me. I need one reproducable bug report. As you said yourself, RODBC works on all your other platforms, and I never had complaints from any other amd64 user ... so I'd really like something tangible before I go to the upstream maintainer with this. Sorry for all yoru troubles, and thanks for the help. Dirk | i386 | | ... | write(1, "> query <- \"SELECT plate FROM pl"..., 49> query <- "SELECT plate FROM plates LIMIT 1,10" | ) = 49 | write(1, "> tables <- sqlQuery(channel,que"..., 36> tables <- sqlQuery(channel,query) | ) = 36 | semop(98306, 0xbfd50c90, 2) = 0 | semop(98306, 0xbfd50c9e, 1) = 0 | time(NULL) = 1141300906 | fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 | read(3, 0x86086c0, 8192) = -1 EAGAIN (Resource temporarily unavailable) | fcntl64(3, F_SETFL, O_RDWR) = 0 | write(3, "$\0\0\0\3SELECT plate FROM plates LI"..., 40) = 40 | read(3, "\1\0\0\1", 4) = 4 | read(3, "\1", 1) = 1 | read(3, "\27\0\0\2", 4) = 4 | read(3, "\6plates\5plate\3\v\0\0\1\3\3\0\0\0", 23) = 23 | read(3, "\1\0\0\3", 4) = 4 | read(3, "\376", 1) = 1 | read(3, "\2\0\0\4", 4) = 4 | read(3, "\0014", 2) = 2 | read(3, "\2\0\0\5", 4) = 4 | read(3, "\0015", 2) = 2 | read(3, "\2\0\0\6", 4) = 4 | read(3, "\0016", 2) = 2 | read(3, "\2\0\0\7", 4) = 4 | read(3, "\0018", 2) = 2 | ... | | amd64: | | ... | write(1, "> query <- \"SELECT plate FROM pl"..., 49> query <- "SELECT plate FROM plates LIMIT 1,10" | ) = 49 | write(1, "> tables <- sqlQuery(channel,que"..., 36> tables <- sqlQuery(channel,query) | ) = 36 | semop(32769, 0x16d1d08, 140737486958608) = 0 | semop(32769, 0x16d1d08, 140737486958608) = 0 | fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 | read(3, 0xb508b0, 8192) = -1 EAGAIN (Resource temporarily unavailable) | fcntl(3, F_SETFL, O_RDWR) = 0 | write(3, "$\0\0\0\3SELECT plate FROM plates LI"..., 40) = 40 | read(3, "\1\0\0\1\0013\0\0\2\3def\7cytotox\6plates\6pla"..., 16384) = 144 | write(1, "> tables\n", 9> tables | ) = 9 | write(1, "character(0)\n", 13character(0) | ) = 13 | | ... | | It tells me that mysql returns lots of data, which is not correctly read | by whatever reads it. It can't really be myODBC, because I can retrieve | the data with isql, as I demonstrated above. -- Hell, there are no rules here - we're trying to accomplish something. -- Thomas A. Edison -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]