Как сообщить клиенту о прогрессе от долгого -выполнения функции PostgreSQL

У меня есть клиентское приложение C #, которое использует Npgsql для вызова функции plpgsql в PostgreSQL 9.1.4. Функция занимает очень много времени, и я хотел бы каким-то образом сообщить клиенту о ходе выполнения. Как мне это сделать?

Механизм LISTEN/NOTIFY кажется идеальным для этого, за исключением того, что все это выполняется внутри транзакции, а события NOTIFY не отправляются до конца транзакции, что для меня бесполезно.

Другая вещь, которую я пробовал, — это RAISE NOTICE, которую я могу обрабатывать на клиенте, но даже эти уведомления какое-то время буферизуются и отправляются пакетами. Это лучше, чем ничего, но не идеально. Можно ли как-то их «сбросить», чтобы они сразу же отправлялись клиенту?

9
задан EM0 15 August 2012 в 11:15
поделиться