The problem is: ODBC checks works in usual poller process, so if we have 50 pollers and a lot of ODBC checks, 50 connections to database can be created. DBAs are very unhappy about this situation.
1. single out odbc pollers in separate type of poller processes such as snmp, http, ipmi pollers.
2. Add to config number of ODBC pollers, timeout connection setting for a DSN
The connection to database by default must be open if process is running or
timeout is not expired, because there are can be very rare db checks, it is cheaper to open a new connection, than hold it.
Connection must supported on DSN string, one DSN = one opened connection pointer.
For example Oracle ODBC driver for Linux doesn't support shared connections, ODBC Pooling = yes and CPTimeout, zabbix crashes with these settings.
So the connection persistence must be realized on process level.
persistence=yes - by default this parameter is yes, and poller uses opened connection to db. If db.select[,,no] - poller must open new connection and close it after query.
It is needed rarely, but for special session queries.