on_notice (PGconn)

    /*
     * call-seq:
     *   conn.on_notice {|message| ... }
     *
     * Notice and warning messages generated by the server are not returned
     * by the query execution functions, since they do not imply failure of
     * the query. Instead they are passed to a notice handling function, and
     * execution continues normally after the handler returns. The default
     * notice handling function prints the message on <tt>stderr</tt>, but the
     * application can override this behavior by supplying its own handling
     * function.
     */
    static VALUE
    pgconn_on_notice(self)
        VALUE self;
    {
        VALUE block = rb_block_proc();
        PGconn *conn = get_pgconn(self);
        if (PQsetNoticeProcessor(conn, NULL, NULL) != notice_proxy) {
            PQsetNoticeProcessor(conn, notice_proxy, (void *) self);
        }
        rb_iv_set(self, "@on_notice", block);
        return self;
    }