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]