| From: | AYahorau(at)ibagroup(dot)eu |
|---|---|
| To: | pgsql-odbc(at)postgresql(dot)org |
| Cc: | MikalaiKeida(at)ibagroup(dot)eu |
| Subject: | ODBC cliens is hanging if network connection is broken |
| Date: | 2018-07-07 12:37:20 |
| Message-ID: | OF33DF00A3.D6444835-ON432582C3.003EA7C5-432582C3.0045562B@iba.by |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-odbc |
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.git and
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?
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 | Inoue, Hiroshi | 2018-07-08 10:33:11 | Re: ODBC cliens is hanging if network connection is broken |
| Previous Message | Marcin Krawczyk | 2018-07-04 12:55:45 | Windows 10 password problem |