Browse Source

(ibase_blob_import) It's good to have link handle available, if you want to


			
			
				PHP-4.0.5
			
			
		
Jouni Ahto 26 years ago
parent
commit
ccb216ce49
  1. 46
      ext/interbase/interbase.c

46
ext/interbase/interbase.c

@ -55,10 +55,10 @@ A lot... */
#define SQL_DIALECT_CURRENT 1
#endif
/*
#define IBDEBUG(a) php_printf("::: %s (%d)\n", a, __LINE__);
*/
/*
#define IBDEBUG(a)
*/
#define SAFE_STRING(s) ((s)?(s):"")
@ -141,23 +141,21 @@ static void get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id, ibase_d
IBLS_FETCH();
IBDEBUG("Transaction or database link?");
if (Z_TYPE_PP(link_id) == IS_RESOURCE) {
if ((resource = zend_list_find(Z_LVAL_PP(link_id), &type))) {
IBDEBUG("Found in list");
if (type == IBG(le_trans)) {
/* Transaction resource. Fetch it, database link resource
is stored in ib_trans->link_rsrc. */
IBDEBUG("Type is le_trans");
*trans_id = (Z_LVAL_PP(link_id));
ZEND_FETCH_RESOURCE(ib_trans, ibase_tr_link *, link_id, -1, "InterBase transaction", IBG(le_trans));
*trans_n = ib_trans->trans_num;
ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, ib_trans->link_rsrc, "InterBase link", IBG(le_link), IBG(le_plink));
} else {
IBDEBUG("Type is le_[p]link");
/* Database link resource, use default transaction (=0). */
*trans_n = 0;
ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, -1, "InterBase link", IBG(le_link), IBG(le_plink));
}
if ((resource = zend_list_find(Z_LVAL_PP(link_id), &type))) {
IBDEBUG("Found in list");
if (type == IBG(le_trans)) {
/* Transaction resource. Fetch it, database link resource
is stored in ib_trans->link_rsrc. */
IBDEBUG("Type is le_trans");
*trans_id = (Z_LVAL_PP(link_id));
ZEND_FETCH_RESOURCE(ib_trans, ibase_tr_link *, link_id, -1, "InterBase transaction", IBG(le_trans));
*trans_n = ib_trans->trans_num;
ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, ib_trans->link_rsrc, "InterBase link", IBG(le_link), IBG(le_plink));
} else {
IBDEBUG("Type is le_[p]link");
/* Database link resource, use default transaction (=0). */
*trans_n = 0;
ZEND_FETCH_RESOURCE2(resource, ibase_db_link *, link_id, -1, "InterBase link", IBG(le_link), IBG(le_plink));
}
}
*ib_link = resource;
@ -1367,11 +1365,13 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int
/* allocate sqlda and output buffers */
if (ib_query->out_sqlda) { /* output variables in select, select for update */
IBDEBUG("Query wants XSQLDA for output");
IB_RESULT = emalloc(sizeof(ibase_result));
IB_RESULT->link = ib_query->link;
IB_RESULT->trans = ib_query->trans;
IB_RESULT->stmt = ib_query->stmt;
IB_RESULT->drop_stmt = 0; /* when free result close but not drop!*/
out_sqlda = IB_RESULT->out_sqlda = emalloc(XSQLDA_LENGTH(ib_query->out_sqlda->sqld));
memcpy(out_sqlda,ib_query->out_sqlda,XSQLDA_LENGTH(ib_query->out_sqlda->sqld));
_php_ibase_alloc_xsqlda(out_sqlda);
@ -1385,6 +1385,7 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int
}
if (ib_query->in_sqlda) { /* has placeholders */
IBDEBUG("Query wants XSQLDA for input");
if (ib_query->in_sqlda->sqld != argc) {
_php_ibase_module_error("placeholders (%d) and variables (%d) mismatch", ib_query->in_sqlda->sqld, argc);
goto _php_ibase_exec_error; /* yes mommy, goto! */
@ -1409,7 +1410,7 @@ static int _php_ibase_exec(ibase_result **ib_resultp, ibase_query *ib_query, int
_php_ibase_exec_error: /* I'm a bad boy... */
if (in_sqlda)
efree(in_sqlda);
_php_ibase_free_xsqlda(in_sqlda);
if (bind_buf)
efree(bind_buf);
@ -1419,7 +1420,7 @@ _php_ibase_exec_error: /* I'm a bad boy... */
IB_RESULT = NULL;
}
if (out_sqlda)
efree(out_sqlda);
_php_ibase_free_xsqlda(out_sqlda);
}
return rv;
@ -2870,6 +2871,7 @@ PHP_FUNCTION(ibase_blob_import)
RETURN_FALSE;
}
link_id = IBG(default_link);
ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, link_arg, link_id, "InterBase link", IBG(le_link), IBG(le_plink));
break;
case 2:
if (zend_get_parameters_ex(2, &link_arg, &file_arg) == FAILURE) {
@ -2883,7 +2885,7 @@ PHP_FUNCTION(ibase_blob_import)
}
/* open default transaction */
if(_php_ibase_def_trans(ib_link, trans_n) == FAILURE){
if (_php_ibase_def_trans(ib_link, trans_n) == FAILURE) {
RETURN_FALSE;
}

Loading…
Cancel
Save