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