/*
 * call-seq:
 *    conn.lo_creat( [mode] ) -> Fixnum
 *
 * Creates a large object with mode _mode_. Returns a large object Oid.
 * On failure, it raises PGError exception.
 */
static VALUE
pgconn_locreat(int argc, VALUE *argv, VALUE self)
{
    Oid lo_oid;
    int mode;
    VALUE nmode;
    PGconn *conn = get_pgconn(self);

    if (rb_scan_args(argc, argv, "01", &nmode) == 0)
        mode = INV_READ;
    else
        mode = NUM2INT(nmode);

    lo_oid = lo_creat(conn, mode);
    if (lo_oid == 0)
        rb_raise(rb_ePGError, "lo_creat failed");

    return INT2FIX(lo_oid);
}