¿Por qué setNetworkTimeout causa una excepción de tiempo de espera en consultas con función?

Tengo una conexión a una base de datos PostgreSQL (usando el controlador JDBC PostgreSQL), y configuré el tiempo de espera de la red (usando el setNetworkTimeoutmétodo), y hay algo extraño al respecto.

Cuando uso la conexión para consultas simples como select * from table, que lleva mucho tiempo, funciona bien (espera a que la consulta devuelva un resultado). Pero cuando uso la conexión para consultas que usan funciones (como select max(a) from table), que también toman mucho tiempo, arroja una excepción, como resultado de un tiempo de espera.

código de ejemplo:

// Queries which takes more than 5 seconds
String bigQuery = "select * from data.bigtable tb1 inner join data.bigtable tb2 on tb1.a like '%a%'";
String bigQueryWithFunction = "select max(tb1.a) from data.bigtable tb1 inner join data.bigtable tb2 on tb1.a like '%a%'";

// Creating a connection with 5 seconds network timeout
Connection con = source.getConnection();
con.setNetworkTimeout(Executors.newSingleThreadExecutor(), 5000);
con.setAutoCommit(false);

Statement st2 = con.createStatement();
st2.execute(bigQueryWithFunction); // This line DOES throws an exception
st2.execute(bigQuery);             // This line DOES NOT throws an exception

(Ignore la lógica de las consultas).

¿Alguien puede explicarme por qué sucede?

Respuesta 1

Tengo un siguiente caso de uso. Un proceso serializa ciertos objetos en un archivo usando BufferedOutputStream. Después de escribir cada objeto, el proceso invoca flush () El caso de uso es que si el proceso falla ...

Estoy usando un servicio en primer plano para rastrear la ubicación en vivo del usuario. está funcionando bien en los dispositivos Android comunes, pero en marcas como oppo, vivo, Mi, etc., la aplicación se cierra cuando el dispositivo entra en funcionamiento ...

Ahora me enfrento a este problema y todavía no conozco una solución. El documento sobre Xamarin es bastante vago para mí en este asunto. El hecho de que los Java Generics se implementen como borrado de texto es bastante ...

Al usar owasp.esapi para filtrar los parámetros y encabezados de solicitudes entrantes, me encuentro con un problema en el que aparentemente el encabezado Referer contiene un valor que se considera como "codificación múltiple". ...