Re: New 9.5.0100 does not work properly

From: "Inoue, Hiroshi" <h-inoue(at)dream(dot)email(dot)ne(dot)jp>
To: Walter Willmertinger <willmis(at)gmail(dot)com>, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Cc: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>, pgsql-odbc(at)postgresql(dot)org
Subject: Re: New 9.5.0100 does not work properly
Date: 2016-01-18 12:38:27
Message-ID: 569CDCC3.8000104@dream.email.ne.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Hi Walter and Heikki,

Probably I found the cause.

On 2016/01/12 17:36, Walter Willmertinger wrote:
> The "Write Conflict" is independent of the setting "row versioning".
> When I strted it was switched off. I switched to "On", but the same
> result.
>
> _Here is an excerpt from mylog:_
>
> /[7.065]conn=000001F55B153090, query='SELECT
> "KundenCode","DatumEreignis","AufnahmeDurchPersonalNr","WeiterAnPersonalNr","Status","Notiz","KdID","Prioritaet","ProgErledigt","update_cs","ZuletztBearbeitetPersonalNr"
> FROM "public"."Notizen" WHERE "KundenCode" = E'1' AND "KdID" = 83'
> /

Doesn't the target table contain boolean items?
Then the driver has to handle parse and describe message before
executing the
update query.

> /[8.455]ParseAndDescribeWithLibpq: plan_name= query=UPDATE
> "public"."Notizen" SET "Notiz"=$1 WHERE "KundenCode" = $2 AND "KdID" =
> $3 AND "DatumEreignis" = $4 AND "AufnahmeDurchPersonalNr" = $5 AND
> "WeiterAnPersonalNr" = $6 AND "Status" = $7 AND "Prioritaet" IS NULL
> AND "ProgErledigt" = $8 AND "update_cs" = $9 AND
> "ZuletztBearbeitetPersonalNr" IS NULL
> [8.456]conn=000001F55B153090, query='BEGIN'
> [8.457]ParseWithLibpq: plan_name= query=UPDATE "public"."Notizen" SET
> "Notiz"=$1 WHERE "KundenCode" = $2 AND "KdID" = $3 AND "DatumEreignis"
> = $4 AND "AufnahmeDurchPersonalNr" = $5 AND "WeiterAnPersonalNr" = $6
> AND "Status" = $7 AND "Prioritaet" IS NULL AND "ProgErledigt" = $8 AND
> "update_cs" = $9 AND "ZuletztBearbeitetPersonalNr" IS NULL
> /

But a simple query is issued without using extended protocol because the
*Server side prepare* option is turned off.

> /[8.460]conn=000001F55B153090, query='UPDATE "public"."Notizen" SET
> "Notiz"=E'Test xxx' WHERE "KundenCode" = E'1' AND "KdID" = 83 AND
> "DatumEreignis" = E'2015-09-30 13:48:13'::timestamp AND
> "AufnahmeDurchPersonalNr" = 80 AND "WeiterAnPersonalNr" = 80 AND
> "Status" = E'E' AND "Prioritaet" IS NULL AND "ProgErledigt" = E'0' AND
> "update_cs" = E'2015-09-30 13:48:15'::timestamp AND
> "ZuletztBearbeitetPersonalNr" IS NULL'
> /

/Though this update returns the response 'UPDATE 1', SQLRowCount() doesn't
work as expected due to SC_set_Result() in prepareParameters().

/
> /[8.464]conn=000001F55B153090, query='ROLLBACK'/

*/_One way to avoid the bug is to turn on the *Server side prepare*
option.
Though an appropriate bug fix is not clear to me, the attached
patch is an example.

regards,
Hiroshi Inoue
_/*

Attachment Content-Type Size
execute.diff text/plain 488 bytes

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message John Kew 2016-01-18 19:31:52 9.0.5 issue - duplicate rows returned when using SQL_ATTR_ROW_ARRAY_SIZE attribute
Previous Message Adrian Klaver 2016-01-12 17:43:04 Re: New 9.5.0100 does not work properly