Search Postgresql Archives

Re: problem with transactions in VB.NET using npgsql

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At 12:41 PM -0400 9/5/07, Owen Hartnett wrote:
At 11:32 AM -0400 9/5/07, Tom Lane wrote:
Alvaro Herrera <alvherre@xxxxxxxxxxxxxxxxx> writes:
 Owen Hartnett wrote:
 I've been able to turn on statement logging (I've set log_statement to
 'all'), but it doesn't seem to show the begin transaction - commit -
rollback statements. Is there another way to have them show up in the log?

 If they don't show up, they are not being executed at all; which
 explains why your transactions "don't roll back", because there are no
 transaction blocks defined at all.

In PG 8.2 I'd agree, but older versions are not so good about logging
execution of prepared statements.  What's the server version exactly,
and is there any indication of use of prepared statements in the log?

			regards, tom lane

That's what I thought at first, but then I went to pgAdmin's SQL page and typed in "Begin" and ran it. No log shows up, but when I run it again from pgAdmin (and from my application), I get a "no nested transactions allowed" error (which I know Npgsql doesn't support), which indicates there's a transaction there which is not getting logged.

If I run transactions with ADO's normal Execute* functions, they work fine. It's when I'm trying to use the dataset write back routines, with a NpgsqlTransaction and a NpgsqlCommandBuilder using Update, Insert and Delete commands on multiple tables one after another that it behaves as if the transaction isn't there, though it blithely accepts the begintransaction and commit commands without complaining.

I'm running the latest, 8.2.4. The server is Mac OS X Server and Windows XP (of course) clients running the ADO software and npgsql stuff.



Looking at the problem some more - I've been looking at the logs for some updates - what I do is update most of the tables with the ADO dataset writeback (as used in the Mcmanus & Goldstein's book: "Database Access with Visual Basic .NET"), but I use a simple ExecuteNoQuery to update another table, all wrapped up in the same transaction. The transaction affects the ExecuteNoQuery updates, but doesn't affect the ADO DataSet writebacks. In fact, in the logfiles, for each logline, it prints "IDLE in transaction" on the ExecuteNoQuery log statement, but just "IDLE" on the other updates. It's almost like the ADO has an independent path, even though I'm assigning the same NpgsqlTransaction object to it as I am to the ExecuteNoQuery command.

I suppose I'll have to be stepping through that Npgsql code to see just what's going on.

-Owen

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux