Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
The complaint in bug #15738 is 100% bogus
Нельзя так просто в PG_CATCH сделать что-то и не сделать PG_RE_THROW.
void
plperl_spi_commit(void)
{
MemoryContext oldcontext = CurrentMemoryContext;
PG_TRY();
{
SPI_commit();
SPI_start_transaction();
}
PG_CATCH();
{
ErrorData *edata;
/* Save error info */
MemoryContextSwitchTo(oldcontext);
edata = CopyErrorData();
FlushErrorState();
/* Punt the error to Perl */
croak_cstr(edata->message);
}
PG_END_TRY();
}
void
plperl_spi_rollback(void)
{
MemoryContext oldcontext = CurrentMemoryContext;
PG_TRY();
{
SPI_rollback();
SPI_start_transaction();
}
PG_CATCH();
{
ErrorData *edata;
/* Save error info */
MemoryContextSwitchTo(oldcontext);
edata = CopyErrorData();
FlushErrorState();
/* Punt the error to Perl */
croak_cstr(edata->message);
}
PG_END_TRY();
}
Как мило, что заявив «пока не удалось пропихнуть в оригинальный репозиторий» вы всё-таки отправили патч в pgsql-hackers. После публикации статьи.Я сообщил об ошибке ещё в начале апреля, но т.к. никто даже ничего и не ответил, то я даже и не пытался предложить им патч, а сделал это после вопроса об этом.
А чем ваше расширение лучше pg_cron? Которое, к слову, production ready.
(В оригинальном PostgreSQL есть ошибка в PL/pgSQL, из-за которой мой планировщик некорректно работает, когда в задаче, написанной на PL/pgSQL, возникает неперехваченное исключение. Я описал эту ошибку здесь и исправил у себя в форке тут.)Всё-таки переписал планировщик, чтобы работал и без исправления этой ошибки!
Скажите, пожалуйста: а как приостановить работу джоба?
Прекрасное расширение. Нам помогло при интеграции из одной бд в другую. Расширение установили на промежуточную базу
Рецепты PostgreSQL: планировщик асинхронных задач