Запрос, отправленный с nodejs сервера на postgres, никогда не прерывается - PullRequest
1 голос
/ 26 марта 2020

У меня есть SQL запрос, который я отправляю со стороны сервера моего приложения, и кажется, что он никогда не истекает. Я делаю set statement_timeout TO 30000 в начале моего запроса, но это никогда не работает. Вот пример запроса:

set statement_timeout TO 30000; SELECT t1."building_id", t1."company_name", t1."secondary_name", t1."latitude", t1."longitude" FROM public."businesses" t1 JOIN ( SELECT name, (ST_Dump(geom)).geom as geom FROM public."us_states") t2 ON ST_Intersects(t1.geom, t2.geom) WHERE (t2."name" = 'California')

Запрос выполняется нормально, когда я выполняю обычный запрос, без геопространственного соединения, но что-то вроде запроса выше никогда не прерывается. Я также пытался добавить connectionTimeoutMillis и idleTimeoutMillis в строку подключения, но это тоже не работает. Вот как я подключаюсь к postgres:

const { Pool } = require("pg");

var config = {
    user: username,
    database: database,
    password: password,
    host: host,
    connectionTimeoutMillis: 30000,
};

// Postgres Connection
var client = new Pool(config);
client.connect();

client.on('error', (err) => {
  console.error('something bad has happened!', err.stack);
});

module.exports = {
    queryPostgres: function (sql, cb) {
        var query = client.query(sql, function (err, dbresult) {
            if (err) {
                console.log(err);
                cb([]);
            } else {
                cb(dbresult.rows);
            }
        });
    }
}

Затем я вызываю модуль следующим образом:

db.queryPostgres(sql, function (results) {});

Также в моем пакете . json, я делаю "pg": "*" для pg

Кажется, что мой запрос никогда не прерывается, независимо от того, что я делаю при отправке запроса с сервера на postgres ... Если я выполнить тот же запрос в pgAdmin, запрос работает и время ожидания, так как я использую set statement_timeout Может ли кто-нибудь помочь мне с этим? connectionTimeoutMillis вообще работает с Pool? Есть ли причина, по которой statement_timeout будет работать в pgAdmin, но не будет работать, когда я отправляю его со стороны сервера моего приложения?

Также в моем пакете. json, я делаю "pg": "*" для pg

Любая помощь будет принята с благодарностью!

...