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]

Reply via email to