]> granicus.if.org Git - php/commitdiff
- Export mysql_refresh to mysqli (mysqli_refresh(), $mysqli->refresh())
authorJohannes Schlüter <johannes@php.net>
Thu, 22 Jan 2009 20:57:32 +0000 (20:57 +0000)
committerJohannes Schlüter <johannes@php.net>
Thu, 22 Jan 2009 20:57:32 +0000 (20:57 +0000)
ext/mysqli/mysqli.c
ext/mysqli/mysqli_api.c
ext/mysqli/mysqli_fe.c
ext/mysqli/php_mysqli_structs.h
ext/mysqlnd/mysqlnd_enum_n_def.h
ext/mysqlnd/mysqlnd_libmysql_compat.h

index 45b6047c1a5d72b1dece06c54cb8ee7a85a4ee63..dc9317d7eebb9cf8d90910836117597f421d5466 100644 (file)
@@ -869,6 +869,18 @@ PHP_MINIT_FUNCTION(mysqli)
        REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT);
 #endif
 
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_GRANT",      REFRESH_GRANT, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_LOG",        REFRESH_LOG, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_TABLES",     REFRESH_TABLES, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_HOSTS",      REFRESH_HOSTS, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_STATUS",     REFRESH_STATUS, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_THREADS",    REFRESH_THREADS, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_SLAVE",      REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_MASTER",     REFRESH_MASTER, CONST_CS | CONST_PERSISTENT);
+#ifdef REFRESH_BACKUP_LOG
+       REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_BACKUP_LOG", REFRESH_BACKUP_LOG, CONST_CS | CONST_PERSISTENT);
+#endif
+
        return SUCCESS;
 }
 /* }}} */
index 86f7bad8f27ef0d46971fdc253fd495a68adec74..4d37c0c6511e650d4b16bc7397e66ef784f15a24 100644 (file)
@@ -2133,6 +2133,22 @@ PHP_FUNCTION(mysqli_stat)
 }
 
 /* }}} */
+
+/* {{{ proto bool mysqli_refresh(object link, long options)
+   Flush tables or caches, or reset replication server information */
+PHP_FUNCTION(mysqli_refresh)
+{
+       MY_MYSQL *mysql;
+       zval *mysql_link = NULL;
+       long options;
+
+       if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) {
+               return;
+       }
+       MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_INITIALIZED);
+       RETURN_BOOL(!mysql_refresh(mysql->mysql, options));
+}
+/* }}} */
  
 /* {{{ proto int mysqli_stmt_attr_set(object stmt, long attr, long mode) U
 */
index 808453bda311c4f7668258a7029593c74bd16257..d04a70c721694c8b6cbbde4df1ce0bdc061a9287 100644 (file)
@@ -180,6 +180,8 @@ const zend_function_entry mysqli_functions[] = {
        PHP_FE(mysqli_use_result,                                                       NULL)
        PHP_FE(mysqli_warning_count,                                            NULL)
 
+       PHP_FE(mysqli_refresh,                                                  NULL)
+
        /* Aliases */
        PHP_FALIAS(mysqli_bind_param,           mysqli_stmt_bind_param,         third_arg_force_by_ref_rest)
        PHP_FALIAS(mysqli_bind_result,          mysqli_stmt_bind_result,        second_arg_force_by_ref_rest)
@@ -254,6 +256,7 @@ const zend_function_entry mysqli_link_methods[] = {
        PHP_FALIAS(store_result,mysqli_store_result,NULL)
        PHP_FALIAS(thread_safe,mysqli_thread_safe,NULL)
        PHP_FALIAS(use_result,mysqli_use_result,NULL)
+       PHP_FALIAS(refresh,mysqli_refresh,NULL)
        {NULL, NULL, NULL}
 };
 /* }}} */
index 2ef1bcfa36a218b66e5349dd7c9464d58f07d378..943b4f8fdf10bbbd575599f23fa6546f09f47fa6 100644 (file)
@@ -483,6 +483,7 @@ PHP_FUNCTION(mysqli_embedded_server_start);
 PHP_FUNCTION(mysqli_sqlstate);
 PHP_FUNCTION(mysqli_ssl_set);
 PHP_FUNCTION(mysqli_stat);
+PHP_FUNCTION(mysqli_refresh);
 PHP_FUNCTION(mysqli_stmt_affected_rows);
 PHP_FUNCTION(mysqli_stmt_close);
 PHP_FUNCTION(mysqli_stmt_data_seek);
index 4fab45beb296bbe836aa00b012958024517d82bb..a1a1ae0eba1d5f325a08e1ed2f295c6df4c7ea05 100644 (file)
@@ -431,6 +431,15 @@ typedef enum mysqlnd_collected_stats
 
 #define MYSQLND_DEFAULT_PREFETCH_ROWS (ulong) 1
 
+#define MYSQLND_REFRESH_GRANT      1   /* Refresh grant tables */
+#define MYSQLND_REFRESH_LOG        2   /* Start on new log file */
+#define MYSQLND_REFRESH_TABLES     4   /* close all tables */
+#define MYSQLND_REFRESH_HOSTS     8    /* Flush host cache */
+#define MYSQLND_REFRESH_STATUS     16  /* Flush status variables */
+#define MYSQLND_REFRESH_THREADS    32  /* Flush thread cache */
+#define MYSQLND_REFRESH_SLAVE      64  /* Reset master info and restart slave */
+#define MYSQLND_REFRESH_MASTER     128 /* Remove all bin logs in the index */
+#define MYSQLND_REFRESH_BACKUP_LOG 0x200000L
 
 #endif /* MYSQLND_ENUM_N_DEF_H */
 
index acb55bb5d0fc7c1231af642e60da229df16bfd91..b23d2fd1255af9fd88c26e4c4fea0e044c9105d1 100644 (file)
@@ -73,6 +73,7 @@
 #define mysql_ping(r)                                  mysqlnd_ping((r))
 #define mysql_real_escape_string(r,a,b,c) mysqlnd_real_escape_string((r), (a), (b), (c))
 #define mysql_real_query(r,a,b)                        mysqlnd_query((r), (a), (b))
+#define mysql_refresh(conn, options)   mysqlnd_refresh((conn), (options))
 #define mysql_rollback(r)                              mysqlnd_rollback((r))
 #define mysql_select_db(r,a)                   mysqlnd_select_db((r), (a) ,strlen((a)))
 #define mysql_set_server_option(r,o)   mysqlnd_set_server_option((r), (o))
 #define mysql_warning_count(r)                 mysqlnd_warning_count((r))
 #define mysql_eof(r)                                   (((r)->unbuf && (r)->unbuf->eof_reached) || (r)->stored_data)
 
+#define REFRESH_GRANT      MYSQLND_REFRESH_GRANT
+#define REFRESH_LOG        MYSQLND_REFRESH_LOG
+#define REFRESH_TABLES     MYSQLND_REFRESH_TABLES
+#define REFRESH_HOSTS      MYSQLND_REFRESH_HOSTS
+#define REFRESH_STATUS     MYSQLND_REFRESH_STATUS
+#define REFRESH_THREADS    MYSQLND_REFRESH_THREADS
+#define REFRESH_SLAVE      MYSQLND_REFRESH_SLAVE
+#define REFRESH_MASTER     MYSQLND_REFRESH_MASTER
+#define REFRESH_BACKUP_LOG MYSQLND_REFRESH_BACKUP_LOG
+
 #endif /* MYSQLND_LIBMYSQL_COMPAT_H */