* 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

> 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)

> 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)

But on this, I am still working. The following strace comparison between
working (i386 box) and failing (amd64 box) might be useful:

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.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to