abies           Tue Aug 12 22:19:15 2003 EDT

  Modified files:              
    /php-src/ext/interbase      interbase.c php_interbase.h 
  Log:
  Allow the use of EXECUTE PROCEDURE statements
  
  
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.137 php-src/ext/interbase/interbase.c:1.138
--- php-src/ext/interbase/interbase.c:1.137     Tue Aug 12 14:01:59 2003
+++ php-src/ext/interbase/interbase.c   Tue Aug 12 22:19:14 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: interbase.c,v 1.137 2003/08/12 18:01:59 abies Exp $ */
+/* $Id: interbase.c,v 1.138 2003/08/13 02:19:14 abies Exp $ */
 
 
 /* TODO: Arrays, roles?
@@ -82,8 +82,8 @@
 #endif
 
 #ifdef ZEND_DEBUG
-/* #define IBDEBUG(a) php_printf("::: %s (%d)\n", a, __LINE__); */
-#define IBDEBUG(a)
+#define IBDEBUG(a) php_printf("::: %s (%d)\n", a, __LINE__);
+/* #define IBDEBUG(a) */
 #else
 #define IBDEBUG(a)
 #endif
@@ -698,7 +698,7 @@
 
        php_info_print_table_start();
        php_info_print_table_row(2, "Interbase Support", "enabled");
-       php_info_print_table_row(2, "Revision", "$Revision: 1.137 $");
+       php_info_print_table_row(2, "Revision", "$Revision: 1.138 $");
 #ifdef COMPILE_DL_INTERBASE
        php_info_print_table_row(2, "Dynamic Module", "Yes");
 #endif
@@ -1554,7 +1554,8 @@
        BIND_BUF *bind_buf = NULL;
        int rv = FAILURE;
        char info_count[] = {isc_info_sql_records}, result[64];
-
+       ISC_STATUS isc_result;
+       
        RESET_ERRMSG;
 
        if (argc > 0 && args != NULL) {
@@ -1627,6 +1628,7 @@
                IB_RESULT->link = ib_query->link->handle;
                IB_RESULT->trans = ib_query->trans->handle;
                IB_RESULT->stmt = ib_query->stmt; 
+               IB_RESULT->statement_type = ib_query->statement_type;
                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));
@@ -1656,7 +1658,12 @@
                }
        }
 
-       if (isc_dsql_execute(IB_STATUS, &ib_query->trans->handle, &ib_query->stmt, 
ib_query->dialect, in_sqlda)) {
+       if (ib_query->statement_type == isc_info_sql_stmt_exec_procedure) {
+               isc_result = isc_dsql_execute2(IB_STATUS, &ib_query->trans->handle, 
&ib_query->stmt, SQLDA_CURRENT_VERSION, in_sqlda, out_sqlda);
+       } else {
+               isc_result = isc_dsql_execute(IB_STATUS, &ib_query->trans->handle, 
&ib_query->stmt, SQLDA_CURRENT_VERSION, in_sqlda);
+       }
+       if (isc_result) {
                IBDEBUG("Could not execute query");
                _php_ibase_error(TSRMLS_C);
                goto _php_ibase_exec_error;
@@ -2505,15 +2512,20 @@
                RETURN_FALSE;
        }
 
-       if (isc_dsql_fetch(IB_STATUS, &ib_result->stmt, 1, ib_result->out_sqlda)) {
+       if (ib_result->statement_type != isc_info_sql_stmt_exec_procedure) {
 
-               ib_result->has_more_rows = 0;
-               if (IB_STATUS[0] && IB_STATUS[1]) { /* error in fetch */
-                       _php_ibase_error(TSRMLS_C);
+               if (isc_dsql_fetch(IB_STATUS, &ib_result->stmt, 1, 
ib_result->out_sqlda)) {
+       
+                       ib_result->has_more_rows = 0;
+                       if (IB_STATUS[0] && IB_STATUS[1]) { /* error in fetch */
+                               _php_ibase_error(TSRMLS_C);
+                       }
+                       RETURN_FALSE;
                }
-               RETURN_FALSE;
-       }
-
+       } else {
+               ib_result->has_more_rows = 0;
+       }       
+       
        array_init(return_value);
        
        arr_cnt = 0;
Index: php-src/ext/interbase/php_interbase.h
diff -u php-src/ext/interbase/php_interbase.h:1.46 
php-src/ext/interbase/php_interbase.h:1.47
--- php-src/ext/interbase/php_interbase.h:1.46  Tue Aug 12 14:08:13 2003
+++ php-src/ext/interbase/php_interbase.h       Tue Aug 12 22:19:14 2003
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_interbase.h,v 1.46 2003/08/12 18:08:13 abies Exp $ */
+/* $Id: php_interbase.h,v 1.47 2003/08/13 02:19:14 abies Exp $ */
 
 #ifndef PHP_INTERBASE_H
 #define PHP_INTERBASE_H
@@ -166,6 +166,7 @@
        XSQLDA *out_sqlda;
        ibase_array *out_array;
        unsigned char has_more_rows;
+       char statement_type;
 } ibase_result;
 
 typedef struct _php_ibase_varchar {



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

Reply via email to