Some corrections on psqlodbc driver - Mailing list pgsql-odbc

From Franco Violi
Subject Some corrections on psqlodbc driver
Date
Msg-id 200308300939.46923.fvioli@metodo.net
Whole thread Raw
List pgsql-odbc
I subscribed the gborg site 2 days ago. The reason was that we are
openoffice users under linux and we have some problems that make
postgres unusable on openoffice/linux. The issue 17455 and 17500 on
openoffice.org points to the problem. I debug the latest version of the
driver and corrected some ( i think) bugs.

One problem was that openoffice send to the driver escape istructions in
uppercase and the driver was testing just lowercase.

Another problem was that on snprintf You cannot use the same buffer
as source and destination, because in this way the result is a null string.

Here are the modification I made on convert.c. I am not sure that on Windows
the strcasecmp system call exist. By the way:

2785d2784
<     char        tmpbuf[1024];    // temporary snprintf destination
2838c2837
<     if (strcasecmp(key, "d") == 0)
---
>     if (strcmp(key, "d") == 0)
2842,2843c2841,2842
<         prtlen = snprintf(tmpbuf, sizeof(buf), "%s::date ", buf);
<         CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
>         prtlen = snprintf(buf, sizeof(buf), "%s::date ", buf);
>         CVT_APPEND_DATA(qb, buf, prtlen);
2845c2844
<     else if (strcasecmp(key, "t") == 0)
---
>     else if (strcmp(key, "t") == 0)
2849,2850c2848,2849
<         prtlen = snprintf(tmpbuf, sizeof(buf), "%s::time", buf);
<         CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
>         prtlen = snprintf(buf, sizeof(buf), "%s::time", buf);
>         CVT_APPEND_DATA(qb, buf, prtlen);
2852c2851
<     else if (strcasecmp(key, "ts") == 0)
---
>     else if (strcmp(key, "ts") == 0)
2857c2856
<             prtlen = snprintf(tmpbuf, sizeof(buf), "%s::datetime", buf);
---
>             prtlen = snprintf(buf, sizeof(buf), "%s::datetime", buf);
2859,2860c2858,2859
<             prtlen = snprintf(tmpbuf, sizeof(buf), "%s::timestamp", buf);
<         CVT_APPEND_DATA(qb, tmpbuf, prtlen);
---
>             prtlen = snprintf(buf, sizeof(buf), "%s::timestamp", buf);
>         CVT_APPEND_DATA(qb, buf, prtlen);
2862c2861
<     else if (strcasecmp(key, "oj") == 0) /* {oj syntax support for 7.1 *
servers */
---
>     else if (strcmp(key, "oj") == 0) /* {oj syntax support for 7.1 * servers */
2867c2866
<     else if (strcasecmp(key, "fn") == 0)
---
>     else if (strcmp(key, "fn") == 0)


pgsql-odbc by date:

Previous
From: Hartmut Raschick
Date:
Subject: unnecessary auto-transaction-rollback from driver - part 2 of 2
Next
From: "Simeó Reig (Informes Incofisa)"
Date:
Subject: Re: Some corrections on psqlodbc driver