PSQL разные результаты при перенаправлении вывода - PullRequest
0 голосов
/ 12 марта 2019

У меня самая странная проблема.У нас есть скрипт plpgsql, выполняющийся через задание cron.Он просматривает серию записей и обновляет другие записи на их основе.После этого он вставляет запись в таблицу журналов, сообщая, на сколько записей это повлияло.Вот что странно: если мы перенаправим вывод в / dev / null, скрипт запустится, но это не повлияет ни на одну запись.Если мы не перенаправляем, это работает правильно.

Вот как выглядит строка crontab:

* / 10 * * * * psql -Upostgres -d pje_pi_2g -f / root/atos2g.sql> / dev / null

Вот скрипт:

DO
$$
DECLARE mudar record ; qt INT = 0 ;
BEGIN
    FOR mudar IN SELECT
        vi.id_,
        pd.id_processo_documento
    FROM
        jbpm_variableinstance vi
    JOIN jbpm_processinstance pi ON pi.id_ = vi.processinstance_
    AND pi.end_ IS NULL
    JOIN core.tb_processo_instance ppi ON ppi.id_proc_inst = pi.id_
    JOIN jbpm_taskinstance ti ON ti.procinst_ = pi.id_
    AND ti.end_ IS NULL
    AND ti.name_ IN (
        'Cumprir determinações [CD]',
        'Cumprir determinações (urgência) [CD]',
        'Ato judicial assinado [PREC]',
        'Processos recebidos sem cálculo [PREC]',
        'Triagem (financeiro) [PREC]',
        'Triagem (secretaria) [PREC]',
        'Triagem (cálculo) [PREC]',
        'Cumprir determinações [CDPREC]',
        'Acórdão assinado [BC2G]',
        'Lançar movimentações do julgamento [DCG2G]'
    )
    JOIN core.tb_processo prc ON prc.id_processo = ppi.id_processo
    JOIN core.tb_processo_documento pd ON pd.id_processo = prc.id_processo
    AND pd.id_processo_documento = (
        SELECT
            pd1.id_processo_documento
        FROM
            core.tb_processo_documento pd1
        JOIN core.tb_processo_documento_bin bin ON  pd1.id_processo_documento_bin = bin.id_processo_documento_bin
        JOIN client.tb_proc_doc_bin_pess_assin ass ON bin.id_processo_documento_bin = ass.id_processo_documento_bin
        JOIN client.tb_pessoa_magistrado pm ON pm. ID = ass.id_pessoa
        WHERE
            pd1.id_processo = prc.id_processo
        ORDER BY
            pd1.dt_juntada DESC
        LIMIT 1
    )
    WHERE
        vi.name_ = 'pje:atoProferido'
    AND vi.longvalue_ <> pd.id_processo_documento loop 
        qt := qt + 1 ; 
        UPDATE jbpm_variableinstance
    SET longvalue_ = mudar.id_processo_documento
    WHERE
        id_ = mudar.id_ ;
    END loop ; 
    INSERT INTO tjpi.tb_scripts_log (ds_script, qt_afetados)
    VALUES
        ('Atos proferidos', qt) ;
    END ;

Если мы запустим его таким образом, он не будет проходить по всем строкам.Если мы удалим перенаправление, оно зациклится правильно.Кто-нибудь знает, что мы должны искать?Со временем: мы пытаемся запустить команду psql вручную, она все еще работает только без перенаправленияЗаранее спасибо и извините за длинный вопрос.

...