DBD-Teradata

 view release on metacpan or  search on metacpan

Teradata.xs  view on Meta::CPAN


	return Error_Fail->Code;
}

MODULE = DBD::Teradata		PACKAGE = DBD::Teradata::Cli

void
tdxs_set_debug(dbc, val)
	SV * dbc
	SV * val
	PPCODE:
		dbc_ctxptr_t dbcp = INT2PTR(dbc_ctxptr_t, SvUV(dbc));
		dbcp->debug = SvTRUE(val) ? SvIV(val) : 0;
		ST(0) = &PL_sv_yes;
		XSRETURN(1);


void
tdxs_init_dbcarea(debug)
	SV * debug
	PPCODE:
		dbc_ctxptr_t dbc_ctx = NULL;
		DBCAREA *dbcp = NULL;
		SV *dbcarea = NULL;
		I32 result;
		char *cnta = NULL;
		Newz(0, dbc_ctx, 1, dbc_ctx_t);
		dbcp = &dbc_ctx->dbc;
	 	dbc_ctx->debug = SvTRUE(debug) ? SvIV(debug) : 0;
	 	ST(0) = sv_2mortal(newSVuv(PTR2UV(dbc_ctx)));
	 	dbcp->total_len = sizeof (DBCAREA);

Teradata.xs  view on Meta::CPAN



void
tdxs_get_connection(dbcarea, logonstr, mode, runstring, logonsrc, charset)
	SV * dbcarea
	SV * logonstr
	SV * mode
	SV * runstring
	SV * logonsrc
	SV * charset
	PPCODE:
		I32 result;
		STRLEN logonlen;
		STRLEN runlen;
		STRLEN logonsrclen;
		char *mymode;
		char *cnta = NULL;
		dbc_ctxptr_t dbc_ctx = INT2PTR(dbc_ctxptr_t, SvUV(dbcarea));
		DBCAREA *dbcp = &dbc_ctx->dbc;
		byte charsetcode = (byte)(SvIV(charset));
		char relstr[7];

Teradata.xs  view on Meta::CPAN

		PUSHs(sv_2mortal(newSVpv(verstr, strlen(verstr))));
		PUSHs(sv_2mortal(newSViv(mylsn)));
		PUSHs(sv_2mortal(newSViv(0)));
		PUSHs(&PL_sv_undef);
		XSRETURN(5);


void
tdxs_get_tdat_release(dbc)
	SV *dbc
	PPCODE:
		dbc_ctx_t *dbc_ctx = (dbc_ctx_t *)SvIV(dbc);
		DBCAREA *dbcp = &dbc_ctx->dbc;
		char relstr[7];
		char verstr[15];
		I32 result;
		char cnta[1];

		DBCHREL(&result, cnta, dbcp->i_sess_id, relstr, verstr);
		ST(0) = sv_2mortal(newSVpv(verstr, strlen(verstr)));
		XSRETURN(1);

void
tdxs_cleanup(dbc, errstr)
	SV *dbc
	SV *errstr
	PPCODE:
		dbc_ctxptr_t dbc_ctx = INT2PTR(dbc_ctxptr_t, SvUV(dbc));
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result;
		char *cnta = NULL;

		dbcp->func = DBFDSC;
		DBCHCL (&result, cnta, dbcp);

		if (result != EM_OK)
			sv_setpv(errstr, dbcp->msg_text);

Teradata.xs  view on Meta::CPAN

		XSRETURN(1);


void
tdxs_send_request(dbc, len, keepresp, buffer, resplen)
	SV * dbc
	SV * len
	SV * keepresp
	SV * buffer
	SV * resplen
	PPCODE:
		STRLEN buflen;
		STRLEN rlen;
		char *buf = SvPV(buffer, buflen) + TDAT_HDR_SZ;
		dbc_ctxptr_t dbc_ctx = INT2PTR(dbc_ctxptr_t, SvUV(dbc));
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result;
		char *cnta = NULL;

		buflen = SvIV(len);
		buflen -= TDAT_HDR_SZ;

Teradata.xs  view on Meta::CPAN

			printf("send_request: request sent; reqid %i\n", dbcp->o_req_id);

		PUSHs(sv_2mortal(newSViv(dbcp->o_req_id)));
		PUSHs(sv_2mortal(newSViv(0)));
		PUSHs(&PL_sv_undef);
		XSRETURN(2);


void
tdxs_wait_for_response()
	PPCODE:
		I32 result = EM_OK;
		I32 sessid = 0;
		I32 token = 0;
		char *cnta = NULL;
		DBCHWAT(&result, cnta, &sessid, &token);
		EXTEND(SP, 3);
		if (result != EM_OK) {
			PUSHs(&PL_sv_undef);
			PUSHs(sv_2mortal(newSViv(result)));
			PUSHs(&PL_sv_undef);

Teradata.xs  view on Meta::CPAN

		XSRETURN(3);


void
tdxs_get_response(dbc, buffer, reqid, keepresp, wait_for_resp)
	SV *dbc
	SV *buffer
	SV *reqid
	SV *keepresp
	SV *wait_for_resp
	PPCODE:
		dbc_ctx_t *dbc_ctx = (dbc_ctx_t *)SvIV(dbc);
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result;
		char *cnta = NULL;
		char *fullbuf = NULL;
		SV *newbuf = NULL;

		if (dbc_ctx->debug > 2)
		 	printf("get_response: dbcp is %p\n", dbcp);
		dbcp->i_req_id = SvIV(reqid);

Teradata.xs  view on Meta::CPAN

		sv_catpvn(buffer, dbcp->fet_data_ptr, dbcp->fet_ret_data_len);
		PUSHs(sv_2mortal(newSViv(0)));
		PUSHs(&PL_sv_undef);
		XSRETURN(2);


void
tdxs_end_request(dbc, reqid)
	SV *dbc
	int reqid
	PPCODE:
		dbc_ctxptr_t dbc_ctx = INT2PTR(dbc_ctxptr_t, SvUV(dbc));
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result = EM_OK;
		char *cnta = NULL;
		if (dbc_ctx->debug)
			printf("EndReq: End request for %d\n", reqid);

		dbcp->i_req_id = reqid;
		dbcp->func = DBFERQ;
		DBCHCL (&result, cnta, dbcp);

Teradata.xs  view on Meta::CPAN


		PUSHs(sv_2mortal(newSViv(0)));
		PUSHs(&PL_sv_undef);
		XSRETURN(2);


void
tdxs_abort_request(dbc, reqid)
	SV * dbc
	int reqid
	PPCODE:
		dbc_ctxptr_t dbc_ctx = INT2PTR(dbc_ctxptr_t, SvUV(dbc));
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result = EM_OK;
		char *cnta = NULL;
		if (dbc_ctx->debug)
			printf("AbortReq: Abort request for %d\n", reqid);

		dbcp->i_req_id = reqid;
		dbcp->func = DBFABT;
		DBCHCL (&result, cnta, dbcp);

Teradata.xs  view on Meta::CPAN

		PUSHs(sv_2mortal(newSViv(0)));
		PUSHs(&PL_sv_undef);
		XSRETURN(2);


void
tdxs_test_leak(dbc, buffer, count)
	SV * dbc
	SV * buffer
	SV * count
	PPCODE:
		STRLEN buflen;
		char *buf = SvPV(buffer, buflen) + TDAT_HDR_SZ;
		dbc_ctx_t *dbc_ctx = (dbc_ctx_t *)SvIV(dbc);
		DBCAREA *dbcp = &dbc_ctx->dbc;
		I32 result;
		char *cnta = NULL;
		int i = SvIV(count);

		buflen -= TDAT_HDR_SZ;



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