处理取消请求

UDx 的用户可能会在运行时取消相应操作。Vertica 如何处理查询和 UDx 的取消取决于 UDx 正在隔离模式还是非隔离模式下运行。

  • 如果 UDx 正在非隔离模式下运行,则 Vertica 会在函数请求新的输入块或输出块时停止该函数,或者会等到该函数运行完成并丢弃结果。

  • 如果 UDx 正在隔离和非隔离模式模式下运行,则当正在运行函数的 zygote 进程在超时后继续处理函数时,Vertica 会终止该进程。

此外,您还可以在任何 UDx 中实施 cancel() 方法来执行任何必要的额外工作。取消查询时,Vertica 会调用您的函数。在 Udx 的生命周期内(从 setup()destroy())的任何时间都可能发生这种取消。

通过调用 isCanceled(),您可以在开始执行代价高昂的操作之前检查是否已取消查询。