Thread: [issue?] SQLDriverConnect will clear existing connect attribute setting.

[issue?] SQLDriverConnect will clear existing connect attribute setting.

From
Ivan Zhang
Date:

Hi,

 

I have a library to connect different database with ODBC. Found it’s not work on postgresql by setting autocommit off.

 

            SQLSetConnectAttr(hDbc,

                SQL_ATTR_AUTOCOMMIT,

                (SQLPOINTER) SQL_AUTOCOMMIT_OFF,

                0)

 

        SQLDriverConnect(hDbc,

                         GetDesktopWindow(),

                         wszConnStr,

                         SQL_NTS,

                         NULL,

                         0,

                         NULL,

                         SQL_DRIVER_COMPLETE);

 

After checked the source, found that

 

PGAPI_Connect init the connection attribute/option in CC_conninfo_init.

 

So I have to set connect Attribute  after Connect. Is this expected?

 

SQLDriverConnect -> SQLSetConnectAttr

 

It’s different with ODBC interface expected(allocate -> set -> connect).  

 

Thanks

 

Best Regards

Ivan

Re: [issue?] SQLDriverConnect will clear existing connect attribute setting.

From
Heikki Linnakangas
Date:
On 01/04/2015 08:11 AM, Ivan Zhang wrote:
> I have a library to connect different database with ODBC. Found it's not work on postgresql by setting autocommit
off.
>
>              SQLSetConnectAttr(hDbc,
>                  SQL_ATTR_AUTOCOMMIT,
>                  (SQLPOINTER) SQL_AUTOCOMMIT_OFF,
>                  0)
>
>          SQLDriverConnect(hDbc,
>                           GetDesktopWindow(),
>                           wszConnStr,
>                           SQL_NTS,
>                           NULL,
>                           0,
>                           NULL,
>                           SQL_DRIVER_COMPLETE);
>
> After checked the source, found that
>
> PGAPI_Connect init the connection attribute/option in CC_conninfo_init.
>
> So I have to set connect Attribute  after Connect. Is this expected?
>
> SQLDriverConnect -> SQLSetConnectAttr
>
> It's different with ODBC interface expected(allocate -> set -> connect).

It's a bug. It should be possible to set SQL_ATTR_AUTOCOMMIT before
establishing connection.

Fixed, thanks for the report!

- Heikki