georg           Wed Oct 29 15:48:48 2003 EDT

  Modified files:              
    /php-src/ext/mysqli config.m4 mysqli_api.c mysqli_nonapi.c 
                        php_mysqli.h 
  Log:
  added support for embedded MySQL Server
  some prototype fixes
  
  
Index: php-src/ext/mysqli/config.m4
diff -u php-src/ext/mysqli/config.m4:1.7 php-src/ext/mysqli/config.m4:1.8
--- php-src/ext/mysqli/config.m4:1.7    Mon May 19 19:43:41 2003
+++ php-src/ext/mysqli/config.m4        Wed Oct 29 15:48:47 2003
@@ -1,12 +1,16 @@
 dnl
-dnl $Id: config.m4,v 1.7 2003/05/19 23:43:41 sniper Exp $
+dnl $Id: config.m4,v 1.8 2003/10/29 20:48:47 georg Exp $
 dnl config.m4 for extension mysqli
 
 PHP_ARG_WITH(mysqli, for MySQLi support,
 [  --with-mysqli[=FILE]    Include MySQLi support. FILE is the optional 
                           pathname to mysql_config.])
 
-if test "$PHP_MYSQLI" != "no"; then
+PHP_ARG_WITH(embedded_mysqli, for embedded MySQLi support,
+[  --with-embedded-mysqli[=FILE]    Include embedded MySQLi support. FILE is the 
optional 
+                          pathname to mysql_config.])
+
+if test "$PHP_MYSQLI" != "no" '-o' "$PHP_EMBEDDED_MYSQLI" != "no"; then
 
   if test "$PHP_MYSQL" = "yes"; then
     AC_MSG_ERROR([--with-mysql (using bundled libs) can not be used together with 
--with-mysqli.])
@@ -15,12 +19,23 @@
   if test "$PHP_MYSQLI" = "yes"; then
     MYSQL_CONFIG=`$php_shtool path mysql_config`
   else
-    MYSQL_CONFIG=$PHP_MYSQLI
+       if test "$PHP_MYSQLI" != "no"; then
+      MYSQL_CONFIG=$PHP_MYSQLI
+    else
+      MYSQL_CONFIG=$PHP_EMBEDDED_MYSQLI
+    fi
+  fi
+
+  if test "$PHP_MYSQLI" != "no"; then
+    MYSQL_LIB_CFG='--libs'
+  else
+       AC_DEFINE([HAVE_EMBEDDED_MYSQLI],[1], [embedded MySQL support enabled])
+    MYSQL_LIB_CFG='--libmysqld-libs'
   fi
   
-  if test -x "$MYSQL_CONFIG" && $MYSQL_CONFIG --libs > /dev/null 2>&1; then
+  if test -x "$MYSQL_CONFIG" && $MYSQL_CONFIG $MYSQL_LIB_CFG > /dev/null 2>&1; then
     MYSQLI_INCLINE=`$MYSQL_CONFIG --cflags | sed -e "s/'//g"`
-    MYSQLI_LIBLINE=`$MYSQL_CONFIG --libs   | sed -e "s/'//g"`
+    MYSQLI_LIBLINE=`$MYSQL_CONFIG $MYSQL_LIB_CFG | sed -e "s/'//g"`
   else
     AC_MSG_RESULT([mysql_config not found])
     AC_MSG_ERROR([Please reinstall the mysql distribution])
Index: php-src/ext/mysqli/mysqli_api.c
diff -u php-src/ext/mysqli/mysqli_api.c:1.46 php-src/ext/mysqli/mysqli_api.c:1.47
--- php-src/ext/mysqli/mysqli_api.c:1.46        Thu Sep 25 07:19:25 2003
+++ php-src/ext/mysqli/mysqli_api.c     Wed Oct 29 15:48:47 2003
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: mysqli_api.c,v 1.46 2003/09/25 11:19:25 georg Exp $ 
+  $Id: mysqli_api.c,v 1.47 2003/10/29 20:48:47 georg Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -1614,6 +1614,41 @@
 }
 /* }}} */
 
+#ifdef HAVE_EMBEDDED_MYSQLI
+/* {{{ proto bool mysqli_server_init(void)
+   initialize embedded server */
+PHP_FUNCTION(mysqli_server_init)
+{
+       zval    *server;
+       zval    *groups;
+
+       if (MyG(embedded)) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Embedded server already 
initialized.");
+               RETURN_FALSE;
+       }
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|aa", &server, &groups) 
== FAILURE) {
+               return;
+       }
+
+       if (mysql_server_init(0, NULL, NULL)) {
+                       RETURN_FALSE;
+       }
+       MyG(embedded) = 1;
+       RETURN_TRUE;
+}
+/* }}} */
+
+/* {{{ proto void mysqli_server_end(void)
+*/
+PHP_FUNCTION(mysqli_server_end)
+{
+       mysql_server_end();
+}
+/* }}} */
+#endif
+
+
 /* {{{ proto bool mysqli_slave_query(object link, string query)
    Enforce execution of a query on a slave in a master/slave setup */
 PHP_FUNCTION(mysqli_slave_query)
@@ -1832,7 +1867,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource mysqli_stmt_store_result(stmt)
+/* {{{ proto object mysqli_stmt_store_result(stmt)
 */
 PHP_FUNCTION(mysqli_stmt_store_result)
 {
@@ -1871,7 +1906,7 @@
 #endif
 /* }}} */
 
-/* {{{ proto resource mysqli_store_result(object link)
+/* {{{ proto object mysqli_store_result(object link)
    Buffer result set on client */
 PHP_FUNCTION(mysqli_store_result)
 {
@@ -1921,7 +1956,7 @@
 
 /* }}} */
 
-/* {{{ proto resource mysqli_use_result(object link)
+/* {{{ proto object mysqli_use_result(object link)
    Directly retrieve query results - do not buffer results on client side */
 PHP_FUNCTION(mysqli_use_result)
 {
@@ -1945,7 +1980,7 @@
 }
 /* }}} */
 
-/* {{{ proto resource mysqli_warning_count (object link)
+/* {{{ proto int mysqli_warning_count (object link)
    Return number of warnings from the last query for the given link */
 PHP_FUNCTION(mysqli_warning_count)
 {
Index: php-src/ext/mysqli/mysqli_nonapi.c
diff -u php-src/ext/mysqli/mysqli_nonapi.c:1.17 php-src/ext/mysqli/mysqli_nonapi.c:1.18
--- php-src/ext/mysqli/mysqli_nonapi.c:1.17     Tue Sep 16 15:45:22 2003
+++ php-src/ext/mysqli/mysqli_nonapi.c  Wed Oct 29 15:48:47 2003
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: mysqli_nonapi.c,v 1.17 2003/09/16 19:45:22 hholzgra Exp $ 
+  $Id: mysqli_nonapi.c,v 1.18 2003/10/29 20:48:47 georg Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -29,7 +29,7 @@
 #include "ext/standard/info.h"
 #include "php_mysqli.h"
 
-/* {{{ proto resource mysqli_connect([string hostname [,string username [,string 
passwd [,string dbname [,int port [,string socket]]]]]])
+/* {{{ proto object mysqli_connect([string hostname [,string username [,string passwd 
[,string dbname [,int port [,string socket]]]]]])
    Open a connection to a mysql server */ 
 PHP_FUNCTION(mysqli_connect)
 {
@@ -99,6 +99,65 @@
        }
 }
 /* }}} */
+
+#ifdef HAVE_EMBEDDED_MYSQLI
+/* {{{ proto object mysqli_embedded_connect(void)
+   Open a connection to a embedded mysql server */ 
+PHP_FUNCTION(mysqli_embedded_connect)
+{
+       MYSQL                           *mysql;
+       MYSQLI_RESOURCE         *mysqli_resource;
+       PR_MYSQL                        *prmysql = NULL;
+       zval                            *object = getThis();
+       char                            *dbname = NULL;
+       int                                     dblen = 0;
+       struct timeval          starttime;
+
+       if (!MyG(embedded)) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Embedded server was not 
initialized.");
+               RETURN_FALSE;
+       }
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &dbname,  &dblen) 
== FAILURE) {
+               return;
+       }
+
+       if (MyG(profiler)){
+               gettimeofday(&starttime, NULL);
+       }
+
+       mysql = mysql_init(NULL);
+
+       if (mysql_real_connect(mysql, NULL, NULL, NULL, dbname, 0, NULL, 0) == NULL) {
+               php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) 
TSRMLS_CC);
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", mysql_error(mysql));
+               /* free mysql structure */
+               mysql_close(mysql);
+               RETURN_FALSE;
+       }
+
+       php_mysqli_set_error(mysql_errno(mysql), (char *) mysql_error(mysql) 
TSRMLS_CC);
+
+       if (MyG(profiler)) {
+               prmysql = (PR_MYSQL *)MYSQLI_PROFILER_NEW(prmain, MYSQLI_PR_MYSQL, 0);
+               php_mysqli_profiler_timediff(starttime, &prmysql->header.elapsedtime);
+               MYSQLI_PROFILER_STARTTIME(prmysql);
+               prmysql->hostname = prmysql->username = NULL;
+               prmysql->thread_id = mysql->thread_id;
+       }
+
+       mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE));
+       mysqli_resource->ptr = (void *)mysql;
+       mysqli_resource->prinfo = prmysql;
+
+       if (!object) {
+               MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry);      
 
+       } else {
+               ((mysqli_object *) zend_object_store_get_object(object 
TSRMLS_CC))->ptr = mysqli_resource;
+       }
+}
+/* }}} */
+#endif
 
 /* {{{ proto int mysqli_connect_errno()
    Returns the numerical value of the error message from last connect command */
Index: php-src/ext/mysqli/php_mysqli.h
diff -u php-src/ext/mysqli/php_mysqli.h:1.22 php-src/ext/mysqli/php_mysqli.h:1.23
--- php-src/ext/mysqli/php_mysqli.h:1.22        Thu Sep 25 07:19:25 2003
+++ php-src/ext/mysqli/php_mysqli.h     Wed Oct 29 15:48:47 2003
@@ -15,7 +15,7 @@
   | Author: Georg Richter <[EMAIL PROTECTED]>                                |
   +----------------------------------------------------------------------+
 
-  $Id: php_mysqli.h,v 1.22 2003/09/25 11:19:25 georg Exp $ 
+  $Id: php_mysqli.h,v 1.23 2003/10/29 20:48:47 georg Exp $ 
 */
 
 /* A little hack to prevent build break, when mysql is used together with
@@ -210,6 +210,9 @@
 PHP_FUNCTION(mysqli_disable_reads_from_master);
 PHP_FUNCTION(mysqli_disable_rpl_parse);
 PHP_FUNCTION(mysqli_dump_debug_info);
+#ifdef HAVE_EMBEDDED_MYSQLI
+PHP_FUNCTION(mysqli_embedded_connect);
+#endif
 PHP_FUNCTION(mysqli_enable_reads_from_master);
 PHP_FUNCTION(mysqli_enable_rpl_parse);
 PHP_FUNCTION(mysqli_errno);
@@ -260,6 +263,10 @@
 PHP_FUNCTION(mysqli_select_db);
 PHP_FUNCTION(mysqli_send_long_data);
 PHP_FUNCTION(mysqli_send_query);
+#ifdef HAVE_EMBEDDED_MYSQLI
+PHP_FUNCTION(mysqli_server_init);
+PHP_FUNCTION(mysqli_server_end);
+#endif
 PHP_FUNCTION(mysqli_slave_query);
 #if MYSQL_VERSION_ID >= 40101
 PHP_FUNCTION(mysqli_sqlstate);
@@ -283,17 +290,20 @@
 PHP_FUNCTION(mysqli_warning_count);
 
 ZEND_BEGIN_MODULE_GLOBALS(mysqli)
-       long            default_link;
-       long            num_links;
-       long            max_links;
+       long                    default_link;
+       long                    num_links;
+       long                    max_links;
        unsigned int    default_port;
-       char            *default_host;
-       char            *default_user;
-       char            *default_pw;
-       char            *default_socket;
-       long            error_no;
-       char            *error_msg;
+       char                    *default_host;
+       char                    *default_user;
+       char                    *default_pw;
+       char                    *default_socket;
+       long                    error_no;
+       char                    *error_msg;
        unsigned int    profiler;
+#ifdef HAVE_EMBEDDED_MYSQLI
+       unsigned int    embedded;
+#endif
 ZEND_END_MODULE_GLOBALS(mysqli)
 
 #ifdef ZTS

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

Reply via email to