From: | "Inoue, Hiroshi" <h-inoue(at)dream(dot)email(dot)ne(dot)jp> |
---|---|
To: | AYahorau(at)ibagroup(dot)eu |
Cc: | pgsql-odbc(at)postgresql(dot)org, MikalaiKeida(at)ibagroup(dot)eu |
Subject: | Re: ODBC cliens is hanging if network connection is broken |
Date: | 2018-07-08 10:33:11 |
Message-ID: | ffaf4c40-becd-3bd0-a8e2-b96ff75acbfd@dream.email.ne.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
Hi,
On 2018/07/07 21:37, AYahorau(at)ibagroup(dot)eu wrote:
> Hello PostgreSQL Community!
>
> I downloaded and installed the latest version of PostgreSQL from
> https://www.postgresql.org/ftp/source/v10.4/on my SLES 12 system.
> Here is my configuration of unixODBC:
>
> odbcinst,ini
> [PostgreSQL]
> Description=PostgreSQL ODBC driver
> Driver=/usr/local/lib/psqlodbcw.so
> FileUsage=1
>
> odbc.ini
> [sles12-1]
> Description = PostgreSQL connection to rtpdb
> Driver = PostgreSQL
> Database = rtpdb
> Servername = sles12-1
> Username =
> Password =
> Port = 5432
> Protocol = 7.4+
> ReadOnly = No
> RowVersioning = No
> ShowSystemTables = No
> ConnSettings =
>
> As a Driver in odbcinst.ini I specified the path to *psqlodbcw.so
> *which was downloaded from
> https://git.postgresql.org/gitweb/?p=psqlodbc.gitand built as follows:
> ./configure
> make
> make install
>
> Could you please provide a comment concerning the following situation?
>
> I created a simple ODBC program which calls "*SELECT
> pg_is_in_recovery()*" on the remote PostgreSQL server using ODBC API.
> It works good with this ODBC configuration. But as soon as I turn off
> network interface after *SQLConnect *call and before *SQLExecDirect*,
> it leads to *SQLExecDirect *hanging.
>
> I tried to use *statement_timeout* and
> *idle_in_transaction_session_timeout* postgresql configuration
> parameters but they were not suitable for network issue case. These
> parameters define server-side behaviour but a client considers that
> the connection is ok and it is hanging.
>
>
> As far as I know *SQL_ATTR_CONNECTION_TIMEOUT *ODBC attribute could
> handle this situation. Another ODBC driver for another database in
> case of similar situation returns *HYT01 *ODBC error (Connection
> timeout expired) . But I guess *SQL_ATTR_CONNECTION_TIMEOUT * is not
> supported by psqlodbc. Am I right?
How about calling SQLSetStmtAttr() with the attribute parameter
SQL_ATTR_QUERY_TIMEOUT?
>
>
> PostgreSQL JDBC driver provides *socketTimeout*property which helps a
> client to be informed about network problems and to avoid an infinite
> hanging.
> In my tests it returned *08006 *sqlstate (*connection_failure*).
>
> So I have a question. Is there any psqlodbc or native PostgreSQL
> mechanism or configuration parameter which helps a client to be
> informed about network problem?
> Is there any mechanism which helps to avoid this infinite hanging for
> SQL query in this case?
>
> Thank You in advance,
> Andrei Yahorau
From | Date | Subject | |
---|---|---|---|
Next Message | Haunsberger, Christian | 2018-07-09 13:09:16 | psqlodbc Windows Server 2016 |
Previous Message | AYahorau | 2018-07-07 12:37:20 | ODBC cliens is hanging if network connection is broken |