abies           Mon May 31 09:40:25 2004 EDT

  Modified files:              
    /php-src/ext/interbase      ibase_query.c php_ibase_includes.h 
    /php-src/ext/interbase/tests        interbase.inc 
  Log:
  Improved handling of 'CREATE DATABASE ...' by ibase_query()
  Improved param handling of ibase_query() and ibase_execute()
  
  
http://cvs.php.net/diff.php/php-src/ext/interbase/ibase_query.c?r1=1.11&r2=1.12&ty=u
Index: php-src/ext/interbase/ibase_query.c
diff -u php-src/ext/interbase/ibase_query.c:1.11 
php-src/ext/interbase/ibase_query.c:1.12
--- php-src/ext/interbase/ibase_query.c:1.11    Sun May 30 16:40:36 2004
+++ php-src/ext/interbase/ibase_query.c Mon May 31 09:40:24 2004
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: ibase_query.c,v 1.11 2004/05/30 20:40:36 abies Exp $ */
+/* $Id: ibase_query.c,v 1.12 2004/05/31 13:40:24 abies Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -92,6 +92,9 @@
 
 static int le_result, le_query;
 
+#define LE_RESULT "Firebird/InterBase result"
+#define LE_QUERY "Firebird/InterBase query"
+
 static void _php_ibase_free_xsqlda(XSQLDA *sqlda) /* {{{ */
 {
        int i;
@@ -838,7 +841,7 @@
 /* }}} */
 
 static int _php_ibase_exec(INTERNAL_FUNCTION_PARAMETERS, ibase_result **ib_resultp, 
/* {{{ */
-       ibase_query *ib_query, int argc, zval ***args)
+       ibase_query *ib_query, zval ***args)
 {
        XSQLDA *in_sqlda = NULL, *out_sqlda = NULL;
        BIND_BUF *bind_buf = NULL;
@@ -846,7 +849,8 @@
        static char info_count[] = { isc_info_sql_records };
        char result[64];
        ISC_STATUS isc_result;
-
+       int argc = ib_query->in_sqlda ? ib_query->in_sqlda->sqld : 0;
+       
        RESET_ERRMSG;
 
        for (i = 0; i < argc; ++i) {
@@ -935,11 +939,6 @@
 
        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"
-                               TSRMLS_CC, ib_query->in_sqlda->sqld, argc);
-                       goto _php_ibase_exec_error;
-               }
                in_sqlda = emalloc(XSQLDA_LENGTH(ib_query->in_sqlda->sqld));
                memcpy(in_sqlda, ib_query->in_sqlda, 
XSQLDA_LENGTH(ib_query->in_sqlda->sqld));
                bind_buf = safe_emalloc(sizeof(BIND_BUF), ib_query->in_sqlda->sqld, 0);
@@ -1035,141 +1034,123 @@
    Execute a query */
 PHP_FUNCTION(ibase_query)
 {
-       zval ***args, ***bind_args = NULL;
-       int i, bind_n = 0, trans_res_id = 0;
+       zval *zlink, *ztrans, ***bind_args = NULL;
+       char *query;
+       int bind_i, query_len;
+       long trans_res_id = 0;
        ibase_db_link *ib_link = NULL;
        ibase_trans *trans = NULL;
        ibase_query ib_query = { NULL, NULL, 0, 0 };
        ibase_result *result = NULL;
-       char *query;
 
        RESET_ERRMSG;
-
-       if (ZEND_NUM_ARGS() < 1) {
-               WRONG_PARAM_COUNT;
-       }
-
-       /* use stack to avoid leaks */
-       args = (zval ***) do_alloca(sizeof(zval **) * ZEND_NUM_ARGS());
-
+       
        RETVAL_FALSE;
 
-       if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
-               goto ibase_query_end;
-
-       }
-
-       i = 0;
-       while (Z_TYPE_PP(args[i++]) != IS_STRING) {
-               if (i >= ZEND_NUM_ARGS()) {
-                       _php_ibase_module_error("Query argument missing" TSRMLS_CC);
-                       goto ibase_query_end;
-
-               }
-       }
+       switch (ZEND_NUM_ARGS()) {
+               long l;
 
-       convert_to_string_ex(args[i-1]);
-       query = Z_STRVAL_PP(args[i-1]);
+               default:
+                   if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, 3 
TSRMLS_CC, "rrs",
+                                       &zlink, &ztrans, &query, &query_len)) {
 
-       /* find out if the first one or two arguments refer to either a link id, 
-          a trans id or both */
-       switch (i) {
-               case 1:
+                               ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, &zlink, 
-1, LE_LINK, le_link, le_plink);
+                               ZEND_FETCH_RESOURCE(trans, ibase_trans*, &ztrans, -1, 
LE_TRANS, le_trans);
+                               
+                               trans_res_id = Z_LVAL_P(ztrans);
+                               bind_i = 3;
+                               break;
+                   }
+               case 2:
+                       if (SUCCESS == 
zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, 2 TSRMLS_CC, "rs",
+                                       &zlink, &query, &query_len)) {
+                               
_php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &zlink, &ib_link, &trans);
+       
+                               if (trans != NULL) {
+                                       trans_res_id = Z_LVAL_P(zlink);
+                               }
+                               bind_i = 2;
+                               break;
+                       }
 
-                       /* no link ids were passed: if there's no default link, use 
exec_immediate() with
-                          a NULL handle; this will enable the use of CREATE DATABASE 
statements. */
-                       if (IBG(default_link) == -1) {
+                       /* assume the statement is 'CREATE DATABASE ...' if the link 
argument is int(0) */
+                       if (SUCCESS == 
zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS()
+                                       TSRMLS_CC, "ls", &l, &query, &query_len) && l 
== 0) {
                                isc_db_handle db = NULL;
                                isc_tr_handle trans = NULL;
 
                                if (PG(sql_safe_mode)) {
-                                       _php_ibase_module_error("CREATE DATABASE not 
allowed in SQL safe mode" TSRMLS_CC);
-                                       goto ibase_query_end;
-                               }
+                                       _php_ibase_module_error("CREATE DATABASE is 
not allowed in SQL safe mode"
+                                               TSRMLS_CC);
 
-                               if (isc_dsql_execute_immediate(IB_STATUS, &db, &trans, 
0, query, 
+                               } else if ((IBG(max_links) != -1) && (IBG(num_links) 
>= IBG(max_links))) {
+                                       _php_ibase_module_error("CREATE DATABASE is 
not allowed: maximum link count "
+                                               "(%ld) reached" TSRMLS_CC, 
IBG(max_links));
+
+                               } else if (isc_dsql_execute_immediate(IB_STATUS, &db, 
&trans, query_len, query,
                                                SQL_DIALECT_CURRENT, NULL)) {
                                        _php_ibase_error(TSRMLS_C);
-                                       goto ibase_query_end;
-                               }
-
-                               /* has a new database been created ? */
-                               if (db != NULL) {
 
-                                       if ((IBG(max_links) != -1) && (IBG(num_links) 
>= IBG(max_links))) {                                     
+                               } else if (!db) {
+                                       _php_ibase_module_error("Connection to created 
database could not be "
+                                               "established" TSRMLS_CC);
 
-                                               /* too many links already ? => close 
it up immediately */
-                                               if (isc_detach_database(IB_STATUS, 
&db)) {
-                                                       _php_ibase_error(TSRMLS_C);
-                                                       goto ibase_query_end;
-                                               }
-                                       } else {
+                               } else {
 
-                                               /* register the link as a resource; 
unfortunately, we cannot register 
-                                                  it in the hash table, because we 
don't know the connection params */
-                                               ib_link = (ibase_db_link *) 
emalloc(sizeof(ibase_db_link));
-                                               ib_link->handle = db;
-                                               ib_link->dialect = SQL_DIALECT_CURRENT;
-                                               ib_link->tr_list = NULL;
-                                               ib_link->event_head = NULL;
-
-                                               ZEND_REGISTER_RESOURCE(return_value, 
ib_link, le_link);
-                                               
zend_list_addref(Z_LVAL_P(return_value));
-                                               IBG(default_link) = 
Z_LVAL_P(return_value);
-                                               IBG(num_links)++;
-                                               goto ibase_query_end;
-                                       }
+                                       /* register the link as a resource; 
unfortunately, we cannot register 
+                                          it in the hash table, because we don't know 
the connection params */
+                                       ib_link = (ibase_db_link *) 
emalloc(sizeof(ibase_db_link));
+                                       ib_link->handle = db;
+                                       ib_link->dialect = SQL_DIALECT_CURRENT;
+                                       ib_link->tr_list = NULL;
+                                       ib_link->event_head = NULL;
+
+                                       ZEND_REGISTER_RESOURCE(return_value, ib_link, 
le_link);
+                                       zend_list_addref(Z_LVAL_P(return_value));
+                                       IBG(default_link) = Z_LVAL_P(return_value);
+                                       ++IBG(num_links);
                                }
-                               RETURN_TRUE;
+                               return;
                        }                                       
+               case 1:
+               case 0:
+                       if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() ? 1 : 0 
TSRMLS_CC, "s|z", &query, 
+                                       &query_len)) {
+                               ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), LE_LINK,
+                               le_link, le_plink);
 
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), "InterBase link",
-                               le_link, le_plink);
-                       break;                  
-               case 2:
-                       /* one id was passed, could be db or trans id */
-                       _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
args[0], &ib_link, &trans);
-
-                       if (trans != NULL) {
-                               /* argument was a trans id */
-                               convert_to_long_ex(args[0]);
-                               trans_res_id = Z_LVAL_PP(args[0]);
+                               bind_i = 1;
+                               break;
                        }
-                       break;  
-               case 3:
-                       /* two ids were passed, first should be link and second should 
be trans; */
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, args[0], -1, 
"InterBase link",
-                               le_link, le_plink);
-                       ZEND_FETCH_RESOURCE(trans, ibase_trans*, args[1], -1, 
"InterBase transaction", le_trans);
-
-                       convert_to_long_ex(args[1]);
-                       trans_res_id = Z_LVAL_PP(args[1]);
-
-                       break;
-               default:
-                       /* more than two arguments preceed the SQL string */
-                       _php_ibase_module_error("Invalid arguments" TSRMLS_CC);
-                       goto ibase_query_end;
-       }
-
-       if (ZEND_NUM_ARGS() > i) { /* have variables to bind */
-               bind_n = ZEND_NUM_ARGS() - i;
-               bind_args = &args[i];
+                       return;
        }
 
        /* open default transaction */
-       if (ib_link == NULL || _php_ibase_def_trans(ib_link, &trans TSRMLS_CC) == 
FAILURE) {
-               goto ibase_query_end;
-       }
-
-       if (FAILURE == _php_ibase_alloc_query(&ib_query, ib_link, trans, query, 
ib_link->dialect,
-                       trans_res_id TSRMLS_CC)) {
-               goto ibase_query_end;
+       if (ib_link == NULL || FAILURE == _php_ibase_def_trans(ib_link, &trans 
TSRMLS_CC) 
+                       || FAILURE == _php_ibase_alloc_query(&ib_query, ib_link, 
trans, query, ib_link->dialect,
+                               trans_res_id TSRMLS_CC)) {
+               return;
        }
 
        do {
+               int bind_n = ZEND_NUM_ARGS() - bind_i,
+                   expected_n = ib_query.in_sqlda ? ib_query.in_sqlda->sqld : 0;
+               
+               if (bind_n != expected_n) {
+                       _php_ibase_module_error("Statements expect %d arguments, %d 
given" TSRMLS_CC,
+                           expected_n, bind_n);
+                       break;
+               
+               } else if (bind_n > 0) {
+                       bind_args = (zval ***) do_alloca(sizeof(zval **) * 
ZEND_NUM_ARGS());
+
+                       if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), 
bind_args)) {
+                               break;
+                       }
+               }
+       
                if (FAILURE == _php_ibase_exec(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
&result, &ib_query, 
-                               bind_n, bind_args)) {
+                               &bind_args[bind_i])) {
                        break;
                }
 
@@ -1183,10 +1164,12 @@
                        ZEND_REGISTER_RESOURCE(return_value, result, le_result);
                }
        } while (0);
+
        _php_ibase_free_query(&ib_query TSRMLS_CC);
 
-ibase_query_end:
-       free_alloca(args);
+       if (bind_args) {
+               free_alloca(bind_args);
+       }
 }
 /* }}} */
 
@@ -1204,7 +1187,7 @@
                zval **arg;
 
                case 0:
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), "InterBase link",
+                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), LE_LINK,
                                le_link, le_plink);
                        if (ib_link->tr_list == NULL || ib_link->tr_list->trans == 
NULL) {
                                RETURN_FALSE;
@@ -1219,8 +1202,7 @@
                        /* one id was passed, could be db or trans id */
                        _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
arg, &ib_link, &trans);
                        if (trans == NULL) {                    
-                               ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, 
-1, "InterBase link",
-                                       le_link, le_plink);
+                               ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, arg, 
-1, LE_LINK, le_link, le_plink);
 
                                if (ib_link->tr_list == NULL || 
ib_link->tr_list->trans == NULL) {
                                        RETURN_FALSE;
@@ -1273,7 +1255,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase 
result", le_result);
+       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, 
le_result);
 
        if (isc_dsql_sql_info(IB_STATUS, &ib_result->stmt, sizeof(info_count), 
info_count, 
                        sizeof(result), result)) {
@@ -1494,7 +1476,7 @@
                        break;
        }
 
-       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase 
result", le_result);
+       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, 
le_result);
 
        if (ib_result->out_sqlda == NULL || !ib_result->has_more_rows) {
                RETURN_FALSE;
@@ -1707,7 +1689,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase 
result", le_result);
+       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, 
le_result);
        convert_to_string_ex(name_arg);
 
        if (isc_dsql_set_cursor_name(IB_STATUS, &ib_result->stmt, 
Z_STRVAL_PP(name_arg), 0)) {
@@ -1732,7 +1714,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, "InterBase 
result", le_result);
+       ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, LE_RESULT, 
le_result);
        zend_list_delete(Z_LVAL_PP(result_arg));
        RETURN_TRUE;
 }
@@ -1756,7 +1738,7 @@
                        if (zend_get_parameters_ex(1, &query_arg) == FAILURE) {
                                RETURN_FALSE;
                        }
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), "InterBase link",
+                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link *, NULL, 
IBG(default_link), LE_LINK,
                                le_link, le_plink);
                        break;
                case 2:
@@ -1775,9 +1757,8 @@
                        if (zend_get_parameters_ex(3, &link_arg, &trans_arg, 
&query_arg) == FAILURE) {
                                RETURN_FALSE;
                        }
-                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, link_arg, -1, 
"InterBase link",
-                               le_link, le_plink);
-                       ZEND_FETCH_RESOURCE(trans, ibase_trans*, trans_arg, -1, 
"InterBase transaction", le_trans);
+                       ZEND_FETCH_RESOURCE2(ib_link, ibase_db_link*, link_arg, -1, 
LE_LINK, le_link, le_plink);
+                       ZEND_FETCH_RESOURCE(trans, ibase_trans*, trans_arg, -1, 
LE_TRANS, le_trans);
 
                        convert_to_long_ex(trans_arg);
                        trans_res_id = Z_LVAL_PP(trans_arg);
@@ -1810,59 +1791,74 @@
    Execute a previously prepared query */
 PHP_FUNCTION(ibase_execute)
 {
-       zval ***args, ***bind_args = NULL;
+       zval *query, ***args = NULL;
        ibase_query *ib_query;
        ibase_result *result = NULL;
 
        RESET_ERRMSG;
+       
+       RETVAL_FALSE;
 
-       if (ZEND_NUM_ARGS() < 1) {
-               WRONG_PARAM_COUNT;
+       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() ? 1 : 0 TSRMLS_CC, "r", 
&query)) {
+               return;
        }
 
-       /* use stack to avoid leaks */
-       args = (zval ***) do_alloca(ZEND_NUM_ARGS() * sizeof(zval **));
-       if (zend_get_parameters_array_ex(ZEND_NUM_ARGS(), args) == FAILURE) {
-               free_alloca(args);
-               RETURN_FALSE;
-       }
+       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, &query, -1, LE_QUERY, le_query);
 
-       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, args[0], -1, "InterBase query", 
le_query);
+       do {
+               int bind_n = ZEND_NUM_ARGS() - 1,
+                       expected_n = ib_query->in_sqlda ? ib_query->in_sqlda->sqld : 0;
 
-       if (ZEND_NUM_ARGS() > 1) { /* have variables to bind */
-               bind_args = &args[1];
-       }
+               if (bind_n != expected_n) {
+                       _php_ibase_module_error("Statements expect %d arguments, %d 
given" TSRMLS_CC,
+                               expected_n, bind_n);
+                       break;
 
-       /* Have we used this cursor before and it's still open (exec proc has no 
cursor) ? */
-       if (ib_query->result_res_id != 0 && ib_query->statement_type != 
isc_info_sql_stmt_exec_procedure) {
-               IBDEBUG("Implicitly closing a cursor");
-               if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, DSQL_close)) {
-                       _php_ibase_error(TSRMLS_C);
+               } else if (bind_n > 0) { /* have variables to bind */
+                       args = (zval ***) do_alloca(ZEND_NUM_ARGS() * sizeof(zval **));
+       
+                       if (FAILURE == zend_get_parameters_array_ex(ZEND_NUM_ARGS(), 
args)) {
+                               break;
+                       }
                }
-               /* invalidate previous results returned by this query (not necessary 
for exec proc) */
-               zend_list_delete(ib_query->result_res_id);      
-       }
 
-       if (FAILURE == _php_ibase_exec(INTERNAL_FUNCTION_PARAM_PASSTHRU, &result, 
ib_query,
-                       ZEND_NUM_ARGS()-1, bind_args)) {
-               free_alloca(args);
-               RETURN_FALSE;
-       }
+               /* Have we used this cursor before and it's still open (exec proc has 
no cursor) ? */
+               if (ib_query->result_res_id != 0 
+                               && ib_query->statement_type != 
isc_info_sql_stmt_exec_procedure) {
+                       IBDEBUG("Implicitly closing a cursor");
 
-       /* free the query if trans handle was released */
-       if (ib_query->trans->handle == NULL) {
-               zend_list_delete(Z_LVAL_PP(args[0]));
-       }
+                       if (isc_dsql_free_statement(IB_STATUS, &ib_query->stmt, 
DSQL_close)) {
+                               _php_ibase_error(TSRMLS_C);
+                               break;
+                       }
+                       /* invalidate previous results returned by this query (not 
necessary for exec proc) */
+                       zend_list_delete(ib_query->result_res_id);      
+               }
 
-       free_alloca(args);
+               if (FAILURE == _php_ibase_exec(INTERNAL_FUNCTION_PARAM_PASSTHRU, 
&result, ib_query, 
+                               &args[1])) {
+                   break;
+               }
 
-       if (result != NULL) {
-               result->type = EXECUTE_RESULT;
-               if (ib_query->statement_type == isc_info_sql_stmt_exec_procedure) {
-                       result->stmt = NULL;
+               /* free the query if trans handle was released */
+               if (ib_query->trans->handle == NULL) {
+                       zend_list_delete(Z_LVAL_P(query));
                }
-               ib_query->result_res_id = zend_list_insert(result, le_result);
-               RETURN_RESOURCE(ib_query->result_res_id);
+       
+               if (result != NULL) {
+                       result->type = EXECUTE_RESULT;
+                       if (ib_query->statement_type == 
isc_info_sql_stmt_exec_procedure) {
+                               result->stmt = NULL;
+                       }
+                       ib_query->result_res_id = zend_list_insert(result, le_result);
+                       RETVAL_RESOURCE(ib_query->result_res_id);
+               } else {
+                       RETVAL_TRUE;
+               }
+       } while (0);
+
+       if (args) {
+               free_alloca(args);
        }
 }
 /* }}} */
@@ -1880,7 +1876,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, "InterBase query", 
le_query);
+       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, query_arg, -1, LE_QUERY, 
le_query);
        zend_list_delete(Z_LVAL_PP(query_arg));
        RETURN_TRUE;
 }
@@ -1905,12 +1901,12 @@
        if (type == le_query) {
                ibase_query *ib_query;
 
-               ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, "InterBase 
query", le_query);
+               ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, 
le_query);
                sqlda = ib_query->out_sqlda;
        } else {
                ibase_result *ib_result;
 
-               ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, "InterBase 
result", le_result);
+               ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result, -1, LE_RESULT, 
le_result);
                sqlda = ib_result->out_sqlda;
        }                                       
 
@@ -2028,12 +2024,12 @@
        if (type == le_query) {
                ibase_query *ib_query;
 
-               ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, 
"InterBase query", le_query);
+               ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, 
le_query);
                sqlda = ib_query->out_sqlda;
        } else {
                ibase_result *ib_result;
 
-               ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, 
"InterBase result", le_result);
+               ZEND_FETCH_RESOURCE(ib_result, ibase_result *, result_arg, -1, 
LE_RESULT, le_result);
                sqlda = ib_result->out_sqlda;
        }                                       
 
@@ -2064,7 +2060,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, "InterBase query", 
le_query);
+       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result, -1, LE_QUERY, le_query);
 
        if (ib_query->in_sqlda == NULL) {
                RETURN_LONG(0);
@@ -2087,7 +2083,7 @@
                WRONG_PARAM_COUNT;
        }
 
-       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, "InterBase 
query", le_query);
+       ZEND_FETCH_RESOURCE(ib_query, ibase_query *, result_arg, -1, LE_QUERY, 
le_query);
 
        if (ib_query->in_sqlda == NULL) {
                RETURN_FALSE;
http://cvs.php.net/diff.php/php-src/ext/interbase/php_ibase_includes.h?r1=1.12&r2=1.13&ty=u
Index: php-src/ext/interbase/php_ibase_includes.h
diff -u php-src/ext/interbase/php_ibase_includes.h:1.12 
php-src/ext/interbase/php_ibase_includes.h:1.13
--- php-src/ext/interbase/php_ibase_includes.h:1.12     Sun May 30 12:20:25 2004
+++ php-src/ext/interbase/php_ibase_includes.h  Mon May 31 09:40:24 2004
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_ibase_includes.h,v 1.12 2004/05/30 16:20:25 abies Exp $ */
+/* $Id: php_ibase_includes.h,v 1.13 2004/05/31 13:40:24 abies Exp $ */
 
 #ifndef PHP_IBASE_INCLUDES_H
 #define PHP_IBASE_INCLUDES_H
@@ -46,6 +46,10 @@
 #endif
 
 extern int le_link, le_plink, le_trans;
+
+#define LE_LINK "Firebird/InterBase link"
+#define LE_PLINK "Firebird/InterBase persistent link"
+#define LE_TRANS "Firebird/InterBase transaction"
 
 #define IBASE_MSGSIZE 256
 #define MAX_ERRMSG (IBASE_MSGSIZE*2)
http://cvs.php.net/diff.php/php-src/ext/interbase/tests/interbase.inc?r1=1.8&r2=1.9&ty=u
Index: php-src/ext/interbase/tests/interbase.inc
diff -u php-src/ext/interbase/tests/interbase.inc:1.8 
php-src/ext/interbase/tests/interbase.inc:1.9
--- php-src/ext/interbase/tests/interbase.inc:1.8       Sun May 30 12:59:43 2004
+++ php-src/ext/interbase/tests/interbase.inc   Mon May 31 09:40:25 2004
@@ -1,4 +1,4 @@
-<?php /* $Id: interbase.inc,v 1.8 2004/05/30 16:59:43 abies Exp $ */
+<?php /* $Id: interbase.inc,v 1.9 2004/05/31 13:40:25 abies Exp $ */
 
 srand((double)microtime()*1000000);
 
@@ -14,7 +14,7 @@
 {
        global $test_base, $user, $password;
 
-       $test_db = ibase_query(sprintf("CREATE DATABASE '%s' USER '%s' PASSWORD '%s' 
DEFAULT CHARACTER SET %s",
+       $test_db = ibase_query(0, sprintf("  create    Schema '%s' USER '%s' PASSWORD 
'%s' DEFAULT CHARACTER SET %s",
                $test_base, $user, $password, ($charset = 
ini_get('ibase.default_charset')) ? $charset : 'NONE'));
        $tr = ibase_trans($test_db);
        ibase_query($tr,"create table test1 (i integer, c varchar(100))");
@@ -69,8 +69,8 @@
 function rand_datetime()
 {
     return sprintf("%02d/%02d/%4d %02d:%02d:%02d",
-        rand()%12+1, rand()%28+1, rand()%100+1910,
-           rand()%24,   rand()%60,  rand()%60);
+               rand()%12+1, rand()%28+1, rand()%100+1910,
+               rand()%24,   rand()%60,  rand()%60);
 }
 
 /* random binary string  */

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to