PAB3-DB-Driver-Mysql
view release on metacpan or search on metacpan
# ******************************************************************************/
void
fetch_names( resid )
void * resid;
PREINIT:
dMY_CXT;
MYSQL_RES *res = NULL;
MYSQL_FIELD *fields;
int num_fields, i;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
res = ( (MY_RES *) resid )->res;
break;
case MY_TYPE_STMT:
res = ( (MY_STMT *) resid )->meta;
break;
default:
goto exit;
}
void
fetch_field( resid, offset = -1 )
void * resid;
long offset;
PREINIT:
dMY_CXT;
MYSQL_RES *res;
MYSQL_FIELD *field;
unsigned int flags;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
res = ( (MY_RES *) resid )->res;
break;
case MY_TYPE_STMT:
res = ( (MY_STMT *) resid )->meta;
break;
default:
goto exit;
}
fetch_row( resid )
void * resid;
PREINIT:
dMY_CXT;
MY_RES *res;
MYSQL_ROW row;
DWORD *lengths;
MY_STMT *stmt;
MYSQL_BIND *result;
DWORD num_fields, i;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
res = (MY_RES *) resid;
row = mysql_fetch_row( res->res );
if( ! row ) goto error;
num_fields = mysql_num_fields( res->res );
lengths = mysql_fetch_lengths( res->res );
EXTEND( SP, num_fields );
for( i = 0; i < num_fields; i ++ ) {
if( row[i] )
void
fetch_col( resid )
void * resid;
PREINIT:
dMY_CXT;
MY_RES *res;
MYSQL_ROW row;
DWORD *lengths;
MY_STMT *stmt;
MYSQL_BIND *result;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
res = (MY_RES *) resid;
EXTEND( SP, res->numrows );
while( ( row = mysql_fetch_row( res->res ) ) ) {
lengths = mysql_fetch_lengths( res->res );
if( lengths[0] > 0 )
XPUSHs( sv_2mortal( newSVpvn( row[0], lengths[0] ) ) );
else
XPUSHs( &PL_sv_undef );
void * resid;
PREINIT:
dMY_CXT;
MY_RES *res;
MYSQL_ROW row;
MYSQL_FIELD *fields;
MY_STMT *stmt;
MYSQL_BIND *result;
DWORD *lengths;
DWORD num_fields, i;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
res = (MY_RES *) resid;
row = mysql_fetch_row( res->res );
if( ! row ) goto error;
num_fields = mysql_num_fields( res->res );
lengths = mysql_fetch_lengths( res->res );
fields = mysql_fetch_fields( res->res );
EXTEND( SP, num_fields * 2 );
for( i = 0; i < num_fields; i ++ ) {
# ******************************************************************************/
void
fetch_lengths( resid )
void * resid;
PREINIT:
dMY_CXT;
DWORD *lengths;
DWORD num_fields, i;
MY_STMT *stmt;
PPCODE:
switch( my_mysql_stmt_or_res( &MY_CXT, resid ) ) {
case MY_TYPE_RES:
lengths = mysql_fetch_lengths( ( (MY_RES *) resid )->res );
if( lengths ) {
num_fields = mysql_num_fields( ( (MY_RES *) resid )->res );
EXTEND( SP, num_fields );
for( i = 0; i < num_fields; i ++ ) {
XPUSHs( sv_2mortal( newSVuv( lengths[i] ) ) );
}
}
void
show_catalogs( linkid = 0, wild = NULL )
void * linkid;
const char *wild;
PREINIT:
dMY_CXT;
MY_CON *con;
MYSQL_RES *res;
MYSQL_ROW row;
PPCODE:
if( ! ( linkid = my_verify_linkid( &MY_CXT, linkid ) ) ) goto error;
con = (MY_CON *) linkid;
res = mysql_list_dbs( con->conid, wild );
if( res ) {
while( ( row = mysql_fetch_row( res ) ) ) {
if( row[0] != 0 ) {
XPUSHs( sv_2mortal( newSVpvn( row[0], strlen( row[0] ) ) ) );
}
}
mysql_free_result( res );
const char *db;
const char *schema;
const char *wild;
PREINIT:
dMY_CXT;
MY_CON *con;
MYSQL_RES *res;
MYSQL_ROW row;
char sql[512], *p1;
AV *av;
PPCODE:
if( ! ( linkid = my_verify_linkid( &MY_CXT, linkid ) ) ) goto error;
con = (MY_CON *) linkid;
if( db && db[0] != '\0' ) {
p1 = my_strcpy( sql, "SHOW TABLES FROM `" );
p1 = my_strcpy( p1, db );
p1 = my_strcpy( p1, "`" );
if( wild && wild[0] != '\0' ) {
p1 = my_strcpy( p1, " LIKE " );
p1 = my_strcpy( p1, wild );
}
const char *schema = NULL;
const char *db = NULL;
const char *wild = NULL;
int itemp = 0;
MY_CON *con;
MYSQL_RES *res;
MYSQL_ROW row;
int numfields, numrows, r;
char sql[512], *p1;
AV *av;
PPCODE:
if( items < ( SvIOK( ST(0) ) ? 2 : 1 ) || items > 5 )
Perl_croak( aTHX_ "Usage: " __PACKAGE__ "::show_fields(linkid = 0, table, schema = NULL, db = NULL, wild = NULL)" );
if( SvIOK( ST( itemp ) ) ) {
linkid = INT2PTR( void *, SvIV( ST( itemp ) ) );
itemp ++;
}
table = (const char *) SvPV_nolen( ST( itemp ) );
itemp ++;
if( itemp < items ) {
schema = (const char *) SvPV_nolen( ST( itemp ) );
const char *table = NULL;
const char *schema = NULL;
const char *db = NULL;
MY_CON *con;
MYSQL_RES *res;
MYSQL_ROW row;
char sql[512], *p1;
int step, num_fields, num_rows, itemp = 0;
long r;
AV *av;
PPCODE:
if( items < ( SvIOK( ST(0) ) ? 2 : 1 ) || items > 4 )
Perl_croak( aTHX_ "Usage: " __PACKAGE__ "::show_index(linkid = 0, table, schema = NULL, db = NULL)" );
if( SvIOK( ST( itemp ) ) ) {
linkid = INT2PTR( void *, SvIV( ST( itemp ) ) );
itemp ++;
}
table = (const char *) SvPV_nolen( ST( itemp ) );
itemp ++;
if( itemp < items ) {
schema = (const char *) SvPV_nolen( ST( itemp ) );
( run in 2.625 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )