Dino Kern wrote:
Hello,
I'm using  DBD::ODBC Version 1.13 and had following problem:
Te connection timed out after exactly 30 seconds even when
"odbc_query_timeout" was not set.
According to the documentation there should be no timeout in this case.
After setting the timeout to a higher value it worked.

Maybe the documentation has to be rectified to:
"Default timeout is 30 second".

Best regards,
Dino



Don't confuse connection timeout and query timeout - they are not the same. Connection timeout only applies to non login and query execution ODBC APIS.

The default in DBD::ODBC is actually to not set it at all because the current DBD::ODBC code sets the default internal variable odbc_query_timeout to 0 and then does:

if (imp_dbh->odbc_query_timeout) {
      ret = odbc_set_query_timeout(dbh, stmt,
              imp_dbh->odbc_query_timeout);
}

in the execdirect and prepare methods which obviously does not get run if odbc_query_timeout is 0.

The ODBC spec says:

o the default is 0 which is no timeout
o the driver may implement minimum and maximum values the timeout may be set to.

so not setting the query timeout should use the default of 0 or no timeout. I believe the DBD::ODBC code is correct in this other than if you were to set it to N (where N <> 0) then set it to 0, the second set would not get executed - I will rectify this.

I suspect the ODBC driver you are using is defaulting it to 30 as DBD::ODBC is not setting the timeout by default.

I will attempt to make this clearer in the pod for the next DBD::ODBC.

Martin
--
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to