EV-Pg

 view release on metacpan or  search on metacpan

Pg.xs  view on Meta::CPAN

    REQUIRE_CONN(self);
    RETVAL = (int)PQsetErrorContextVisibility(self->conn, (PGContextVisibility)visibility);
}
OUTPUT:
    RETVAL

SV*
conninfo(EV::Pg self)
CODE:
{
    PQconninfoOption *opts;

    REQUIRE_CONN(self);
    opts = PQconninfo(self->conn);
    if (!opts)
        croak("PQconninfo failed");

    RETVAL = conninfo_opts_to_hv(opts);
}
OUTPUT:
    RETVAL

int
connection_used_password(EV::Pg self)
CODE:
{
    RETVAL = (NULL != self->conn) ? PQconnectionUsedPassword(self->conn) : 0;
}
OUTPUT:
    RETVAL

int
connection_used_gssapi(EV::Pg self)
CODE:
{
    RETVAL = (NULL != self->conn) ? PQconnectionUsedGSSAPI(self->conn) : 0;
}
OUTPUT:
    RETVAL

int
connection_needs_password(EV::Pg self)
CODE:
{
    RETVAL = (NULL != self->conn) ? PQconnectionNeedsPassword(self->conn) : 0;
}
OUTPUT:
    RETVAL

SV*
hostaddr(EV::Pg self)
CODE:
{
    RETVAL = conn_str_or_undef(self->conn ? PQhostaddr(self->conn) : NULL);
}
OUTPUT:
    RETVAL

void
ssl_attribute_names(EV::Pg self)
PPCODE:
{
    const char * const *names;
    AV *av;
    int i;

    if (!self->conn) XSRETURN_UNDEF;
    names = PQsslAttributeNames(self->conn);
    if (!names) XSRETURN_UNDEF;

    av = newAV();
    for (i = 0; names[i]; i++)
        av_push(av, newSVpv(names[i], 0));
    PUSHs(sv_2mortal(newRV_noinc((SV*)av)));
    XSRETURN(1);
}

int
protocol_version(EV::Pg self)
CODE:
{
    RETVAL = self->conn ? PQprotocolVersion(self->conn) : 0;
}
OUTPUT:
    RETVAL

SV*
encrypt_password(EV::Pg self, const char *password, const char *user, ...)
CODE:
{
    const char *algorithm;
    char *enc;

    REQUIRE_CONN(self);
    algorithm = (items > 3 && SvOK(ST(3))) ? SvPV_nolen(ST(3)) : NULL;
    enc = PQencryptPasswordConn(self->conn, password, user, algorithm);
    if (!enc)
        croak("PQencryptPasswordConn failed: %s", PQerrorMessage(self->conn));
    RETVAL = newSVpv(enc, 0);
    PQfreemem(enc);
}
OUTPUT:
    RETVAL

void
trace(EV::Pg self, const char *filename)
CODE:
{
    REQUIRE_CONN(self);
    if (self->trace_fp) {
        PQuntrace(self->conn);
        fclose(self->trace_fp);
        self->trace_fp = NULL;
    }
    self->trace_fp = fopen(filename, "w");
    if (!self->trace_fp)
        croak("cannot open %s: %s", filename, strerror(errno));
    PQtrace(self->conn, self->trace_fp);
}

void



( run in 0.907 second using v1.01-cache-2.11-cpan-71847e10f99 )