The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "net_drizzle.h"

=head1 NAME

Net::Drizzle::Query - Query object for Net::Drizzle

=head1 METHODS

=over 4

=cut

MODULE = Net::Drizzle::Query  PACKAGE = Net::Drizzle::Query

VERSIONCHECK: DISABLE

=item con

Get a connection for a query.

=cut

SV*
con(SV*self)
CODE:
    net_query *query = XS_STATE(net_query*, self);
    drizzle_con_st * con = drizzle_query_con(query->query);
    assert(con);
    RETVAL = _create_con(query->drizzle, con);
OUTPUT:
    RETVAL

=item string

Get the string for a query.

=cut
void
string(SV*self)
PPCODE:
    net_query *query = XS_STATE(net_query*, self);
    size_t size;
    const char * str = drizzle_query_string(query->query, &size);
    mXPUSHs(newSVpvn(str, size));
    XSRETURN(1);

=item result

Get the result for a query.

=back

=cut
SV*
result(SV*self)
CODE:
    net_query *query = XS_STATE(net_query*, self);
    drizzle_result_st *result = drizzle_query_result(query->query);
    if (result != NULL) {
        RETVAL = _create_result(query->con, self, result);
    } else {
        RETVAL = &PL_sv_undef;
    }
OUTPUT:
    RETVAL

void
DESTROY(SV *self_sv)
CODE:
    net_query *self = XS_STATE(net_query*, self_sv);

    LOG("DESTROY query 0x%X, drizzle->refcnt=%d\n", (unsigned int)self->drizzle, (int)SvREFCNT(self->drizzle));

    if (self->drizzle != NULL) {
        SvREFCNT_dec(self->drizzle);
    }
    if (self->con != NULL) {
        SvREFCNT_dec(self->con);
    }
    Safefree(self);

=head1 SEE ALSO

L<Net::Drizzle>

=cut