diff options
25 files changed, 0 insertions, 1951 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index f18a503b5e..54c9574492 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -1321,218 +1321,6 @@ void php_mysqli_fetch_into_hash(INTERNAL_FUNCTION_PARAMETERS, int override_flags } /* }}} */ - -#if !defined(MYSQLI_USE_MYSQLND) - -#define ALLOC_CALLBACK_ARGS(a, b, c)\ -if (c) {\ - a = (zval ***)safe_emalloc(c, sizeof(zval **), 0);\ - for (i = b; i < c; i++) {\ - a[i] = emalloc(sizeof(zval *));\ - MAKE_STD_ZVAL(*a[i]);\ - }\ -} - -#define FREE_CALLBACK_ARGS(a, b, c)\ -if (a) {\ - for (i=b; i < c; i++) {\ - zval_ptr_dtor(a[i]);\ - efree(a[i]);\ - }\ - efree(a);\ -} - -#define LOCAL_INFILE_ERROR_MSG(source,dest)\ - memset(source, 0, LOCAL_INFILE_ERROR_LEN);\ - memcpy(source, dest, MIN(strlen(dest), LOCAL_INFILE_ERROR_LEN-1));\ - php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s", dest); - - -/* {{{ php_local_infile_init - */ -static int php_local_infile_init(void **ptr, const char *filename, void *userdata) -{ - mysqli_local_infile *data; - MY_MYSQL *mysql; - php_stream_context *context = NULL; - - TSRMLS_FETCH(); - - /* save pointer to MY_MYSQL structure (userdata) */ - if (!(*ptr= data= ((mysqli_local_infile *)calloc(1, sizeof(mysqli_local_infile))))) { - return 1; - } - - if (!(mysql = (MY_MYSQL *)userdata)) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, ER(CR_UNKNOWN_ERROR)); - return 1; - } - - /* check open_basedir */ - if (PG(open_basedir)) { - if (php_check_open_basedir_ex(filename, 0 TSRMLS_CC) == -1) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, "open_basedir restriction in effect. Unable to open file"); - return 1; - } - } - - mysql->li_stream = php_stream_open_wrapper_ex((char *)filename, "r", 0, NULL, context); - - if (mysql->li_stream == NULL) { - snprintf((char *)data->error_msg, sizeof(data->error_msg), "Can't find file '%-.64s'.", filename); - return 1; - } - - data->userdata = mysql; - - return 0; -} -/* }}} */ - -/* {{{ int php_local_infile_read */ -static int php_local_infile_read(void *ptr, char *buf, uint buf_len) -{ - mysqli_local_infile *data; - MY_MYSQL *mysql; - zval ***callback_args; - zval *retval; - zval *fp; - int argc = 4; - int i; - long rc; - - TSRMLS_FETCH(); - - data= (mysqli_local_infile *)ptr; - mysql = data->userdata; - - /* default processing */ - if (!mysql->li_read) { - int count = (int)php_stream_read(mysql->li_stream, buf, buf_len); - - if (count < 0) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, ER(2)); - } - - return count; - } - - ALLOC_CALLBACK_ARGS(callback_args, 1, argc); - - /* set parameters: filepointer, buffer, buffer_len, errormsg */ - - MAKE_STD_ZVAL(fp); - php_stream_to_zval(mysql->li_stream, fp); - callback_args[0] = &fp; - ZVAL_STRING(*callback_args[1], "", 1); - ZVAL_LONG(*callback_args[2], buf_len); - ZVAL_STRING(*callback_args[3], "", 1); - - if (call_user_function_ex(EG(function_table), - NULL, - mysql->li_read, - &retval, - argc, - callback_args, - 0, - NULL TSRMLS_CC) == SUCCESS) { - - rc = Z_LVAL_P(retval); - zval_ptr_dtor(&retval); - - if (rc > 0) { - if (rc >= 0 && rc != Z_STRLEN_P(*callback_args[1])) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, - "Mismatch between the return value of the callback and the content " - "length of the buffer."); - rc = -1; - } else if (rc > buf_len) { - /* check buffer overflow */ - LOCAL_INFILE_ERROR_MSG(data->error_msg, "Too much data returned"); - rc = -1; - } else { - memcpy(buf, Z_STRVAL_P(*callback_args[1]), MIN(rc, Z_STRLEN_P(*callback_args[1]))); - } - } else if (rc < 0) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, Z_STRVAL_P(*callback_args[3])); - } - } else { - LOCAL_INFILE_ERROR_MSG(data->error_msg, "Can't execute load data local init callback function"); - rc = -1; - } - /* - If the (ab)user has closed the file handle we should - not try to use it anymore or even close it - */ - if (!zend_rsrc_list_get_rsrc_type(Z_LVAL_P(fp) TSRMLS_CC)) { - LOCAL_INFILE_ERROR_MSG(data->error_msg, "File handle closed"); - rc = -1; - /* Thus the end handler won't try to free already freed memory */ - mysql->li_stream = NULL; - } - - FREE_CALLBACK_ARGS(callback_args, 1, argc); - efree(fp); - return rc; -} -/* }}} */ - -/* {{{ php_local_infile_error - */ -static int php_local_infile_error(void *ptr, char *error_msg, uint error_msg_len) -{ - mysqli_local_infile *data = (mysqli_local_infile *) ptr; - - if (data) { - strlcpy(error_msg, data->error_msg, error_msg_len); - return 2000; - } - strlcpy(error_msg, ER(CR_OUT_OF_MEMORY), error_msg_len); - return CR_OUT_OF_MEMORY; -} -/* }}} */ - -/* {{{ php_local_infile_end - */ -static void php_local_infile_end(void *ptr) -{ - mysqli_local_infile *data; - MY_MYSQL *mysql; - - TSRMLS_FETCH(); - - data= (mysqli_local_infile *)ptr; - - if (!data || !(mysql = data->userdata)) { - if (data) { - free(data); - } - return; - } - - if (mysql->li_stream) { - php_stream_close(mysql->li_stream); - } - free(data); - return; -} -/* }}} */ - - -/* {{{ void php_set_local_infile_handler_default -*/ -void php_set_local_infile_handler_default(MY_MYSQL *mysql) { - /* register internal callback functions */ - mysql_set_local_infile_handler(mysql->mysql, &php_local_infile_init, &php_local_infile_read, - &php_local_infile_end, &php_local_infile_error, (void *)mysql); - if (mysql->li_read) { - zval_ptr_dtor(&mysql->li_read); - mysql->li_read = NULL; - } -} -/* }}} */ -#endif - /* * Local variables: * tab-width: 4 diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index ce7588ecbf..22eae7ee1c 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1456,64 +1456,6 @@ PHP_FUNCTION(mysqli_kill) } /* }}} */ -/* {{{ proto void mysqli_set_local_infile_default(object link) - unsets user defined handler for load local infile command */ -#if !defined(MYSQLI_USE_MYSQLND) -PHP_FUNCTION(mysqli_set_local_infile_default) -{ - MY_MYSQL *mysql; - zval *mysql_link; - - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { - return; - } - - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - - if (mysql->li_read) { - zval_ptr_dtor(&(mysql->li_read)); - mysql->li_read = NULL; - } -} -/* }}} */ - -/* {{{ proto bool mysqli_set_local_infile_handler(object link, callback read_func) - Set callback functions for LOAD DATA LOCAL INFILE */ -PHP_FUNCTION(mysqli_set_local_infile_handler) -{ - MY_MYSQL *mysql; - zval *mysql_link; - char *callback_name; - zval *callback_func; - - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oz", &mysql_link, mysqli_link_class_entry, - &callback_func) == FAILURE) { - return; - } - - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - - /* check callback function */ - if (!zend_is_callable(callback_func, 0, &callback_name TSRMLS_CC)) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a valid callback function %s", callback_name); - efree(callback_name); - RETURN_FALSE; - } - efree(callback_name); - - /* save callback function */ - if (!mysql->li_read) { - MAKE_STD_ZVAL(mysql->li_read); - } else { - zval_dtor(mysql->li_read); - } - ZVAL_ZVAL(mysql->li_read, callback_func, 1, 0); - - RETURN_TRUE; -} -#endif -/* }}} */ - /* {{{ proto bool mysqli_more_results(object link) check if there any more query results from a multi query */ PHP_FUNCTION(mysqli_more_results) diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c index 9ebb9352fe..80ae848f95 100644 --- a/ext/mysqli/mysqli_fe.c +++ b/ext/mysqli/mysqli_fe.c @@ -200,16 +200,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_kill, 0, 0, 1) ZEND_ARG_INFO(0, connection_id) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_set_local_infile_handler, 0, 0, 2) - MYSQLI_ZEND_ARG_OBJ_INFO_LINK() - ZEND_ARG_INFO(0, read_callback) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_set_local_infile_handler, 0, 0, 1) - MYSQLI_ZEND_ARG_OBJ_INFO_LINK() - ZEND_ARG_INFO(0, read_callback) -ZEND_END_ARG_INFO() - ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_query, 0, 0, 2) MYSQLI_ZEND_ARG_OBJ_INFO_LINK() ZEND_ARG_INFO(0, query) @@ -388,10 +378,6 @@ const zend_function_entry mysqli_functions[] = { PHP_FE(mysqli_info, arginfo_mysqli_only_link) PHP_FE(mysqli_insert_id, arginfo_mysqli_only_link) PHP_FE(mysqli_kill, arginfo_mysqli_kill) -#if !defined(MYSQLI_USE_MYSQLND) - PHP_FE(mysqli_set_local_infile_default, arginfo_mysqli_only_link) - PHP_FE(mysqli_set_local_infile_handler, arginfo_mysqli_set_local_infile_handler) -#endif PHP_FE(mysqli_more_results, arginfo_mysqli_only_link) PHP_FE(mysqli_multi_query, arginfo_mysqli_query) PHP_FE(mysqli_next_result, arginfo_mysqli_only_link) @@ -490,10 +476,6 @@ const zend_function_entry mysqli_link_methods[] = { PHP_FALIAS(get_warnings, mysqli_get_warnings, arginfo_mysqli_no_params) PHP_FALIAS(init,mysqli_init, arginfo_mysqli_no_params) PHP_FALIAS(kill,mysqli_kill, arginfo_class_mysqli_kill) -#if !defined(MYSQLI_USE_MYSQLND) - PHP_FALIAS(set_local_infile_default, mysqli_set_local_infile_default, arginfo_mysqli_no_params) - PHP_FALIAS(set_local_infile_handler, mysqli_set_local_infile_handler, arginfo_class_mysqli_set_local_infile_handler) -#endif PHP_FALIAS(multi_query, mysqli_multi_query, arginfo_class_mysqli_query) PHP_FALIAS(mysqli, mysqli_link_construct, arginfo_mysqli_connect) PHP_FALIAS(more_results, mysqli_more_results, arginfo_mysqli_no_params) diff --git a/ext/mysqli/mysqli_nonapi.c b/ext/mysqli/mysqli_nonapi.c index 0cc1240208..fee65ee290 100644 --- a/ext/mysqli/mysqli_nonapi.c +++ b/ext/mysqli/mysqli_nonapi.c @@ -259,9 +259,6 @@ void mysqli_common_connect(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_real_conne #if !defined(MYSQLI_USE_MYSQLND) mysql->mysql->reconnect = MyG(reconnect); - - /* set our own local_infile handler */ - php_set_local_infile_handler_default(mysql); #endif mysql_options(mysql->mysql, MYSQL_OPT_LOCAL_INFILE, (char *)&MyG(allow_local_infile)); diff --git a/ext/mysqli/mysqli_priv.h b/ext/mysqli/mysqli_priv.h index 9dd11117d1..ecbdacb4ea 100644 --- a/ext/mysqli/mysqli_priv.h +++ b/ext/mysqli/mysqli_priv.h @@ -76,7 +76,6 @@ extern void php_clear_warnings(MYSQLI_WARNING *w); extern void php_free_stmt_bind_buffer(BIND_BUFFER bbuf, int type); extern void php_mysqli_report_error(const char *sqlstate, int errorno, const char *error TSRMLS_DC); extern void php_mysqli_report_index(const char *query, unsigned int status TSRMLS_DC); -extern void php_set_local_infile_handler_default(MY_MYSQL *); extern void php_mysqli_throw_sql_exception(char *sqlstate, int errorno TSRMLS_DC, char *format, ...); #ifdef HAVE_SPL diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index 32e3e1e8a5..1d363ab245 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -158,12 +158,6 @@ typedef struct _mysqli_property_entry { int (*w_func)(mysqli_object *obj, zval *value TSRMLS_DC); } mysqli_property_entry; -#if !defined(MYSQLI_USE_MYSQLND) -typedef struct { - char error_msg[LOCAL_INFILE_ERROR_LEN]; - void *userdata; -} mysqli_local_infile; -#endif typedef struct { zend_ptr_stack free_links; diff --git a/ext/mysqli/tests/local_infile_tools.inc b/ext/mysqli/tests/local_infile_tools.inc deleted file mode 100644 index bb9872f1ab..0000000000 --- a/ext/mysqli/tests/local_infile_tools.inc +++ /dev/null @@ -1,156 +0,0 @@ -<?php - /* Utility function for mysqli_set_local_infile*.phpt tests */ - function shutdown_clean($file) { - if ($file) { - unlink($file); - } - } - - function check_local_infile_support($link, $engine, $table_name = 'test') { - - if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) - return "Cannot check if Server variable 'local_infile' is set to 'ON'"; - - $row = mysqli_fetch_assoc($res); - mysqli_free_result($res); - if ('ON' != $row['Value']) - return sprintf("Server variable 'local_infile' seems not set to 'ON', found '%s'", $row['Value']); - - if (!mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name))) { - return "Failed to drop old test table"; - } - - if (!mysqli_query($link, $sql = sprintf('CREATE TABLE %s(id INT, label CHAR(1), PRIMARY KEY(id)) ENGINE=%s', - $table_name, $engine))) - return "Failed to create test table: $sql"; - - $file = create_standard_csv(1, false); - if (!$file) { - mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name)); - return "Cannot create CSV file"; - } - - if (!@mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s' - INTO TABLE %s - FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' - LINES TERMINATED BY '\n'", - mysqli_real_escape_string($link, $file), - $table_name))) { - if (1148 == mysqli_errno($link)) { - mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name)); - return "Cannot test LOAD DATA LOCAL INFILE, [1148] The used command is not allowed with this MySQL version"; - } else if ($link->errno) { - return $link->error; - } - } - mysqli_query($link, sprintf('DROP TABLE IF EXISTS %s', $table_name)); - return ""; - } - - function create_standard_csv($offset, $verbose = true) { - // create a CVS file - $file = tempnam(sys_get_temp_dir(), 'mysqli_test'); - if (!$fp = fopen($file, 'w')) { - if ($verbose) - printf("[%03d + 1] Cannot create CVS file '%s'\n", $offset, $file); - return NULL; - } else { - /* Looks ugly? No, handy if you have crashes... */ - register_shutdown_function("shutdown_clean", $file); - } - - if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1)) { - if (!fwrite($fp, (binary)"'97';'x';\n") || - !fwrite($fp, (binary)"'98';'y';\n") || - !fwrite($fp, (binary)"99;'z';\n")) { - if ($verbose) - printf("[%03d + 2] Cannot write CVS file '%s'\n", $offset, $file); - return NULL; - } - } else { - if (!fwrite($fp, "97;'x';\n") || - !fwrite($fp, "98;'y';\n") || - !fwrite($fp, "99;'z';\n")) { - if ($verbose) - printf("[%03d + 3] Cannot write CVS file '%s'\n", $offset, $file); - return NULL; - } - } - - fclose($fp); - - if (!chmod($file, 0644)) { - if ($verbose) - printf("[%03d + 4] Cannot change the file perms of '%s' from 0600 to 0644, MySQL might not be able to read it\n", - $offset, $file); - return NULL; - } - return $file; - } - - function try_handler($offset, $link, $file, $handler, $expected = null) { - - if ('default' == $handler) { - mysqli_set_local_infile_default($link); - } else if (!mysqli_set_local_infile_handler($link, $handler)) { - printf("[%03d] Cannot set infile handler to '%s'\n", $offset, $handler); - return false; - } - printf("Callback set to '%s'\n", $handler); - - if (!mysqli_query($link, sprintf("DELETE FROM test"))) { - printf("[%03d] Cannot remove records, [%d] %s\n", $offset + 1, mysqli_errno($link), mysqli_error($link)); - return false; - } - - if (!@mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s' - INTO TABLE test - FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\'' - LINES TERMINATED BY '\n'", - mysqli_real_escape_string($link, $file)))) { - printf("[%03d] LOAD DATA failed, [%d] %s\n", - $offset + 2, - mysqli_errno($link), mysqli_error($link)); - } - - if (!$res = mysqli_query($link, "SELECT id, label FROM test ORDER BY id")) { - printf("[%03d] [%d] %s\n", $offset + 3, mysqli_errno($link), mysqli_error($link)); - return false; - } - - if (!is_array($expected)) - return true; - - foreach ($expected as $k => $values) { - if (!$tmp = mysqli_fetch_assoc($res)) { - printf("[%03d/%d] [%d] '%s'\n", $offset + 4, $k, mysqli_errno($link), mysqli_error($link)); - return false; - } - if ($values['id'] != $tmp['id']) { - printf("[%03d/%d] Expecting %s got %s\n", - $offset + 5, $k, - $values['id'], $tmp['id']); - return false; - } - if ($values['label'] != $tmp['label']) { - printf("[%03d/%d] Expecting %s got %s\n", - $offset + 6, $k, - $values['label'], $tmp['label']); - return false; - } - } - - if ($res && $tmp = mysqli_fetch_assoc($res)) { - printf("[%03d] More results than expected!\n", $offset + 7); - do { - var_dump($tmp); - } while ($tmp = mysqli_fetch_assoc($res)); - return false; - } - - if ($res) - mysqli_free_result($res); - - return true; - } -?>
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt index c6d4e7cc32..139325a3f1 100644 --- a/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt +++ b/ext/mysqli/tests/mysqli_class_mysqli_interface.phpt @@ -67,12 +67,6 @@ require_once('skipifconnectfailure.inc'); $expected_methods['get_connection_stats'] = true; $expected_methods['reap_async_query'] = true; $expected_methods['poll'] = true; - } else { - // libmysql only - if (function_exists('mysqli_ssl_set')) - $expected_methods['ssl_set'] = true; - $expected_methods['set_local_infile_default'] = true; - $expected_methods['set_local_infile_handler'] = true; } /* we should add ruled when to expect them */ diff --git a/ext/mysqli/tests/mysqli_query_local_infile_large.phpt b/ext/mysqli/tests/mysqli_query_local_infile_large.phpt deleted file mode 100644 index 76bc415d8b..0000000000 --- a/ext/mysqli/tests/mysqli_query_local_infile_large.phpt +++ /dev/null @@ -1,103 +0,0 @@ ---TEST-- -mysql_query(LOAD DATA LOCAL INFILE) with large data set (10MB) ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifconnectfailure.inc'); - -$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket); -if (!$link) - die(sprintf("skip Can't connect [%d] %s", mysqli_connect_errno(), mysqli_connect_error())); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - // Create a large CVS file - $file = tempnam(sys_get_temp_dir(), 'mysqli_test.cvs'); - if (!$fp = fopen($file, 'w')) - printf("[001] Cannot create CVS file '%s'\n", $file); - - $data = str_repeat("a", 127) . ";" . str_repeat("b", 127) . "\n"; - - $runtime = 5; - $max_bytes = 1024 * 1024 * 10; - - $start = microtime(true); - $bytes = 0; - $rowno = 0; - while (($bytes < $max_bytes) && ((microtime(true) - $start) < $runtime)) { - if ((version_compare(PHP_VERSION, '5.9.9', '>') == 1)) - $bytes += fwrite($fp, (binary)(++$rowno . ";" . $data)); - else - $bytes += fwrite($fp, ++$rowno . ";" . $data); - } - fclose($fp); - printf("Filesize in bytes: %d\nRows: %d\n", $bytes, $rowno); - - require_once("connect.inc"); - if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))) - printf("[002] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); - - if (!mysqli_query($link, "DROP TABLE IF EXISTS test") || - !mysqli_query($link, "CREATE TABLE test(id INT, col1 VARCHAR(255), col2 VARCHAR(255)) ENGINE = " . $engine)) - printf("[003] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - - if (!mysqli_query($link, sprintf("LOAD DATA LOCAL INFILE '%s' INTO TABLE test FIELDS TERMINATED BY ';'", mysqli_real_escape_string($link, $file)))) - printf("[004] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - - if ((!is_string(mysqli_info($link))) || ('' == mysqli_info($link))) { - printf("[005] [%d] %s, mysqli_info not set \n", mysqli_errno($link), mysqli_error($link)); - } - - if (!($res = mysqli_query($link, "SELECT COUNT(*) AS _num FROM test"))) - printf("[006] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - - $row = mysqli_fetch_assoc($res); - if (($row["_num"] != $rowno)) - printf("[007] Expecting %d rows, found %d\n", $rowno, $row["_num"]); - - mysqli_free_result($res); - - $random = mt_rand(1, $rowno); - if (!$res = mysqli_query($link, "SELECT id, col1, col2 FROM test WHERE id = " . $random)) - printf("[008] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); - - $row = mysqli_fetch_assoc($res); - var_dump($row); - mysqli_free_result($res); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php -$file = tempnam(sys_get_temp_dir(), 'mysqli_test.cvs'); -if (file_exists($file)) - unlink($file); - -require_once("connect.inc"); -if (!($link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket))) - printf("[c001] [%d] %s\n", mysqli_connect_errno(), mysqli_connect_error()); - -if (!mysqli_query($link, "DROP TABLE IF EXISTS test")) - printf("[c002] [%d] %s\n", mysqli_errno($link), mysqli_error($link)); -?> ---EXPECTF-- -Filesize in bytes: %d -Rows: %d -array(3) { - [%u|b%"id"]=> - %unicode|string%(%d) "%d" - [%u|b%"col1"]=> - %unicode|string%(127) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" - [%u|b%"col2"]=> - %unicode|string%(127) "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" -} -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_default.phpt b/ext/mysqli/tests/mysqli_set_local_infile_default.phpt deleted file mode 100644 index 0348b01f6a..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_default.phpt +++ /dev/null @@ -1,132 +0,0 @@ ---TEST-- -mysqli_set_local_infile_default() ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket); -if (!$link) - die(sprintf("skip Can't connect [%d] %s", mysqli_connect_errno(), mysqli_connect_error())); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - - $link = $tmp = null; - if (!is_null($tmp = @mysqli_set_local_infile_default())) - printf("[001] Expecting NULL got %s/%s\n", gettype($tmp), $tmp); - - if (!is_null($tmp = @mysqli_set_local_infile_default($link))) - printf("[002] Expecting NULL got %s/%s\n", gettype($tmp), $tmp); - - $link = new mysqli(); - if (!is_null($tmp = @mysqli_set_local_infile_default($link))) - printf("[002a] Expecting NULL got %s/%s\n", gettype($tmp), $tmp); - - include("table.inc"); - - if (!is_null($tmp = @mysqli_set_local_infile_default($link, 'foo'))) - printf("[003] Expecting NULL got %s/%s\n", gettype($tmp), $tmp); - - - function callback_simple($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - - $invocation++; - if (!is_resource($fp)) - printf("[012] First argument passed to callback is not a resource but %s/%s\n", - $fp, gettype($fp)); - - if (!$buffer = fread($fp, $buflen)) { - if ($invocation == 1) { - printf("[013] Cannot read from stream\n"); - $error = 'Cannot read from stream'; - } else { - return strlen($buffer); - } - } - - $lines = explode("\n", $buffer); - if (count($lines) != 4 && strlen($buffer) > 0) { - printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen); - $error = 'Parser too simple'; - } - - $buffer = ''; - foreach ($lines as $k => $line) { - if ('' === trim($line)) - continue; - - $columns = explode(';', $line); - if (empty($columns)) { - printf("[015] Cannot parse columns\n"); - $error = 'Cannot parse columns'; - } - - // increase id column value - $columns[0] += 1; - $buffer .= implode(';', $columns); - $buffer .= "\n"; - } - - return strlen($buffer); - } - - $file = create_standard_csv(4); - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(10, $link, $file, 'callback_simple', $expected); - - $expected = array( - array('id' => 97, 'label' => 'x'), - array('id' => 98, 'label' => 'y'), - array('id' => 99, 'label' => 'z'), - ); - try_handler(20, $link, $file, 'default', $expected); - - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(30, $link, $file, 'callback_simple', $expected); - - mysqli_close($link); - - if (!is_null($tmp = @mysqli_set_local_infile_default($link))) - printf("[300] Expecting NULL/NULL got %s/%s\n", $tmp, gettype($tmp)); - - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_simple' -Callback: 0 -Callback: 1 -Callback set to 'default' -Callback set to 'callback_simple' -Callback: 2 -Callback: 3 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt deleted file mode 100644 index 58f4c70351..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler.phpt +++ /dev/null @@ -1,196 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_simple($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - - $invocation++; - if (!is_resource($fp)) - printf("[012] First argument passed to callback is not a resource but %s/%s\n", - $fp, gettype($fp)); - - if (!$buffer = fread($fp, $buflen)) { - if ($invocation == 1) { - printf("[013] Cannot read from stream\n"); - $error = 'Cannot read from stream'; - } else { - return strlen($buffer); - } - } - - $lines = explode("\n", $buffer); - if (count($lines) != 4 && strlen($buffer) > 0) { - printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen); - $error = 'Parser too simple'; - } - - $buffer = ''; - foreach ($lines as $k => $line) { - if ('' === trim($line)) - continue; - - $columns = explode(';', $line); - if (empty($columns)) { - printf("[015] Cannot parse columns\n"); - $error = 'Cannot parse columns'; - } - - // increase id column value - $columns[0] += 1; - $buffer .= implode(';', $columns); - $buffer .= "\n"; - } - - return strlen($buffer); - } - - function callback_fclose($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - - fclose($fp); - return strlen($buffer); - } - - function callback_closefile($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_resource($fp)) - fclose($fp); - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - function callback_invalid_args($fp, &$buffer, $buflen) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - $buffer = fread($fp, $buflen); - - return strlen($buffer); - } - - function callback_error($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - $buffer = fread($fp, $buflen); - $error = 'How to access this error?'; - - return -1; - } - - if (!is_null($tmp = @mysqli_set_local_infile_handler())) - printf("[001] Expecting NULL/NULL got %s/%s\n", $tmp, gettype($tmp)); - - $handle = null; - if (!is_null($tmp = @mysqli_set_local_infile_handler($handle))) - printf("[002] Expecting NULL/NULL got %s/%s\n", $tmp, gettype($tmp)); - - $handle = @new mysqli(); - if (!is_null($tmp = @mysqli_set_local_infile_handler($handle, 'callback_simple'))) - printf("[003] Expecting NULL/NULL got %s/%s\n", $tmp, gettype($tmp)); - - if (false !== ($tmp = @mysqli_set_local_infile_handler($link, 'unknown'))) - printf("[004] Expecting false/boolean got %s/%s\n", $tmp, gettype($tmp)); - - $file = create_standard_csv(5); - - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(10, $link, $file, 'callback_simple', $expected); - - $expected = array(); - try_handler(20, $link, $file, 'callback_fclose', $expected); - - // FIXME - TODO - KLUDGE - - // IMHO this is wrong. ext/mysqli should bail as the function signature - // is not complete. That's a BC break, OK, but it makes perfectly sense. - $expected = array(); - try_handler(30, $link, $file, 'callback_invalid_args', $expected); - - $expected = array(); - try_handler(40, $link, $file, 'callback_error', $expected); - - - mysqli_close($link); - - if (!is_null($tmp = @mysqli_set_local_infile_handler($link, 'callback_simple'))) - printf("[300] Expecting NULL/NULL got %s/%s\n", $tmp, gettype($tmp)); - - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_simple' -Callback: 0 -Callback: 1 -Callback set to 'callback_fclose' -Callback: 0 -[022] LOAD DATA failed, [2000] File handle close%s -Callback set to 'callback_invalid_args' -Callback: 0 -Callback: 1 -[037] More results than expected! -array(2) { - [%u|b%"id"]=> - %unicode|string%(2) "97" - [%u|b%"label"]=> - %unicode|string%(1) "x" -} -array(2) { - [%u|b%"id"]=> - %unicode|string%(2) "98" - [%u|b%"label"]=> - %unicode|string%(1) "y" -} -array(2) { - [%u|b%"id"]=> - %unicode|string%(2) "99" - [%u|b%"label"]=> - %unicode|string%(1) "z" -} -Callback set to 'callback_error' -Callback: 0 -[042] LOAD DATA failed, [2000] How to access this error? -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt deleted file mode 100644 index b8f51c214f..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_bad_character.phpt +++ /dev/null @@ -1,82 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - random ASCII character including \0 ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); -require_once('connect.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_bad_character($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - - $num_chars = (version_compare(PHP_VERSION, '5.9.9', '>') == 1) ? (floor($buflen / 2) - 10) : ($buflen - 5); - $part1 = floor($num_chars / 2); - $part2 = $num_chars - $part1; - - $buffer = ''; - for ($i = 0; $i < $part1; $i++) - $buffer .= chr(mt_rand(0, 255)); - - $buffer .= ';"'; - - for ($i = 0; $i < $part2; $i++) - $buffer .= chr(mt_rand(0, 255)); - - $buffer .= '";'; - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - $file = create_standard_csv(5); - /* we feed the handler with random data, therefore we cannot specify and expected rows */ - try_handler(20, $link, $file, 'callback_bad_character'); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_bad_character' -Callback: 0 -Callback: 1 -Callback: 2 -Callback: 3 -Callback: 4 -Callback: 5 -Callback: 6 -Callback: 7 -Callback: 8 -Callback: 9 -Callback: 10 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt deleted file mode 100644 index a3c8801023..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_buffer_overflow.phpt +++ /dev/null @@ -1,60 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - buffer overflow ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_buffer_overflow($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - $buffer = fread($fp, $buflen); - - $buffer = str_repeat(';', $buflen * 2); - return strlen($buffer); - } - - $file = create_standard_csv(5); - $expected = array(); - try_handler(20, $link, $file, 'callback_buffer_overflow', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_buffer_overflow' -Callback: 0 - -Warning: mysqli_query(): Too much data returned in %s on line %d -[022] LOAD DATA failed, [%d] Too much data returned -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt deleted file mode 100644 index 408bb29ec4..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_close_link.phpt +++ /dev/null @@ -1,61 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - close database link ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require("table.inc"); - require_once('local_infile_tools.inc'); - - function callback_close_link($fp, &$buffer, $buflen, &$error) { - global $link; - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_object($link)) - mysqli_close($link); - - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_close_link', $expected); - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_close_link' -Callback: 0 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt deleted file mode 100644 index 168cbc1358..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_closefile.phpt +++ /dev/null @@ -1,70 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - do not use the file pointer ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once("table.inc"); - require_once('local_infile_tools.inc'); - - function callback_closefile($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_resource($fp)) - fclose($fp); - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_closefile', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_closefile' -Callback: 0 -Callback: 1 -Callback: 2 -Callback: 3 -Callback: 4 -Callback: 5 -Callback: 6 -Callback: 7 -Callback: 8 -Callback: 9 -Callback: 10 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt deleted file mode 100755 index ad7ab32c1c..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_closures.phpt +++ /dev/null @@ -1,62 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - use closures as handler ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - $callback_replace_buffer = function ($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - - $buffer = fread($fp, $buflen); - - if ($invocation > 10) - return 0; - - return strlen($buffer); - }; - - $file = create_standard_csv(1); - if (!try_handler(20, $link, $file, $callback_replace_buffer, null)) - printf("[008] Failure\n"); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'Closure object' -Callback: 0 -Callback: 1 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt deleted file mode 100644 index b2b42a22e5..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_kill_link.phpt +++ /dev/null @@ -1,61 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - kill database link ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require("table.inc"); - require_once('local_infile_tools.inc'); - - function callback_kill_link($fp, &$buffer, $buflen, &$error) { - global $link; - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_object($link)) - mysqli_kill($link, mysqli_thread_id($link)); - - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - mysqli_set_local_infile_default($link); - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_kill_link', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_kill_link' -Callback: 0 -[022] LOAD DATA failed, [2000] Can't execute load data local init callback function -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt deleted file mode 100644 index 16e38c5fa2..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_negative_len.phpt +++ /dev/null @@ -1,58 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - negative return value/buflen to indicate an error ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_negative_len($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - $buffer = fread($fp, $buflen); - - $error = "negative length means error"; - return -1; - } - - $file = create_standard_csv(1); - $expected = array(); - try_handler(20, $link, $file, 'callback_negative_len', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_negative_len' -Callback: 0 -[022] LOAD DATA failed, [2000] negative length means error -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt deleted file mode 100644 index 4663fe236e..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_nested_call.phpt +++ /dev/null @@ -1,107 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - nested calls ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_simple($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback - callback_simple(): %d\n", $invocation); - - $invocation++; - if (!is_resource($fp)) - printf("[012] First argument passed to callback is not a resource but %s/%s\n", - $fp, gettype($fp)); - - if (!$buffer = fread($fp, $buflen)) { - if ($invocation == 1) { - printf("[013] Cannot read from stream\n"); - $error = 'Cannot read from stream'; - } else { - return strlen($buffer); - } - } - - $lines = explode("\n", $buffer); - if (count($lines) != 4 && strlen($buffer) > 0) { - printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen); - $error = 'Parser too simple'; - } - - $buffer = ''; - foreach ($lines as $k => $line) { - if ('' === trim($line)) - continue; - - $columns = explode(';', $line); - if (empty($columns)) { - printf("[015] Cannot parse columns\n"); - $error = 'Cannot parse columns'; - } - - // increase id column value - $columns[0] += 1; - $buffer .= implode(';', $columns); - $buffer .= "\n"; - } - - /* report the wrong length */ - return strlen($buffer); - } - - function callback_report_short_len($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback - report_short_len(): %d\n", $invocation++); - return callback_simple($fp, $buffer, $buflen, $error); - } - - $file = create_standard_csv(1); - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(20, $link, $file, 'callback_report_short_len', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_report_short_len' -Callback - report_short_len(): 0 -Callback - callback_simple(): 0 -Callback - report_short_len(): 1 -Callback - callback_simple(): 1 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt deleted file mode 100644 index ca06435c5e..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_new_query.phpt +++ /dev/null @@ -1,71 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - run new query on db link ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_new_query($fp, &$buffer, $buflen, &$error) { - global $link; - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_object($link)) { - if (!$res = mysqli_query($link, "SELECT id, label FROM test")) { - printf("[Callback 001 - %03d] Cannot run query, [%d] %s\n", - $invocation, mysqli_errno($link), mysqli_error($link)); - } - if ($res) - mysqli_free_result($res); - } - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - mysqli_set_local_infile_default($link); - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_new_query', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_new_query' -Callback: 0 -[Callback 001 - 001] Cannot run query, [2014] Commands out of sync; you can't run this command now -[022] LOAD DATA failed, [2000] Can't execute load data local init callback function -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt deleted file mode 100644 index 601a09e12c..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_nofileop.phpt +++ /dev/null @@ -1,70 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - do not use the file pointer ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_nofileop($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_nofileop', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_nofileop' -Callback: 0 -Callback: 1 -Callback: 2 -Callback: 3 -Callback: 4 -Callback: 5 -Callback: 6 -Callback: 7 -Callback: 8 -Callback: 9 -Callback: 10 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt deleted file mode 100644 index 7163aca10d..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_openbasedir.phpt +++ /dev/null @@ -1,115 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - open basedir restrictions ---SKIPIF-- -<?php -if (!$fp = @fopen('skipif.inc', 'r')) - die("skip open_basedir restrictions forbid opening include files"); - -include_once('skipif.inc'); -include_once('skipifemb.inc'); -include_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -include_once('connect.inc'); -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -if (!$res = mysqli_query($link, 'SHOW VARIABLES LIKE "local_infile"')) { - mysqli_close($link); - die("skip Cannot check if Server variable 'local_infile' is set to 'ON'"); -} - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -open_basedir="." ---FILE-- -<?php - @include('connect.inc'); - if (!isset($db)) { - // stupid run-tests.php - any idea how to set system ini setting dynamically??? - print "Warning: tempnam(): open_basedir restriction in effect. File(grrr) is not within the allowed path(s): (grrr) in grrr on line 0 -[005 + 1] Cannot create CVS file '' -Callback set to 'callback_simple' -[012] LOAD DATA failed, [0] grrr -[014/0] [0] '' -done!"; - die(); - } - - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_simple($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - - $invocation++; - if (!is_resource($fp)) - printf("[012] First argument passed to callback is not a resource but %s/%s\n", - $fp, gettype($fp)); - - if (!$buffer = fread($fp, $buflen)) { - if ($invocation == 1) { - printf("[013] Cannot read from stream\n"); - $error = 'Cannot read from stream'; - } else { - return strlen($buffer); - } - } - - $lines = explode("\n", $buffer); - if (count($lines) != 4 && strlen($buffer) > 0) { - printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen); - $error = 'Parser too simple'; - } - - $buffer = ''; - foreach ($lines as $k => $line) { - if ('' === trim($line)) - continue; - - $columns = explode(';', $line); - if (empty($columns)) { - printf("[015] Cannot parse columns\n"); - $error = 'Cannot parse columns'; - } - - // increase id column value - $columns[0] += 1; - $buffer .= implode(';', $columns); - $buffer .= "\n"; - } - - return strlen($buffer); - } - - $file = create_standard_csv(5); - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(10, $link, $file, 'callback_simple', $expected); - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Warning: tempnam(): open_basedir restriction in effect. File(%s) is not within the allowed path(s): (%s) in %s on line %d -[005 + 1] Cannot create CVS file '' -Callback set to 'callback_simple' -[012] LOAD DATA failed, [%d] %s -[014/0] [0] '' -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt deleted file mode 100644 index 0d4024e528..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_replace_buffer.phpt +++ /dev/null @@ -1,78 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - replace buffer pointer ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_replace_buffer($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - - $buffer = fread($fp, $buflen); - - $ret = "1;'a';\n"; - $buffer = $ret; - - $num_chars = ((version_compare(PHP_VERSION, '5.9.9', '>') == 1)) ? floor($buflen / 2) : $buflen; - assert(strlen($buffer) < $num_chars); - - if ($invocation > 10) - return 0; - - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - if (!try_handler(20, $link, $file, 'callback_replace_buffer', $expected)) - printf("[008] Failure\n"); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_replace_buffer' -Callback: 0 -Callback: 1 -Callback: 2 -Callback: 3 -Callback: 4 -Callback: 5 -Callback: 6 -Callback: 7 -Callback: 8 -Callback: 9 -Callback: 10 -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt deleted file mode 100644 index b3144e430e..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_short_len.phpt +++ /dev/null @@ -1,101 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - report shorter buffer ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$TEST_EXPERIMENTAL) - die("skip - experimental (= unsupported) feature"); - -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_short_len($fp, &$buffer, $buflen, &$error) { - static $invocation = 0; - - printf("Callback: %d\n", $invocation); - - $invocation++; - if (!is_resource($fp)) - printf("[012] First argument passed to callback is not a resource but %s/%s\n", - $fp, gettype($fp)); - - if (!$buffer = fread($fp, $buflen)) { - if ($invocation == 1) { - printf("[013] Cannot read from stream\n"); - $error = 'Cannot read from stream'; - } else { - return strlen($buffer); - } - } - - $lines = explode("\n", $buffer); - if (count($lines) != 4 && strlen($buffer) > 0) { - printf("[014] Test is too simple to handle a buffer of size %d that cannot hold all lines\n", $buflen); - $error = 'Parser too simple'; - } - - $buffer = ''; - foreach ($lines as $k => $line) { - if ('' === trim($line)) - continue; - - $columns = explode(';', $line); - if (empty($columns)) { - printf("[015] Cannot parse columns\n"); - $error = 'Cannot parse columns'; - } - - // increase id column value - $columns[0] += 1; - $buffer .= implode(';', $columns); - $buffer .= "\n"; - } - - /* report the wrong length */ - return strlen($buffer) - 1; - } - - $file = create_standard_csv(1); - $expected = array( - array('id' => 98, 'label' => 'x'), - array('id' => 99, 'label' => 'y'), - array('id' => 100, 'label' => 'z'), - ); - try_handler(20, $link, $file, 'callback_short_len', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_short_len' -Callback: 0 - -Warning: mysqli_query(): Mismatch between the return value of the callback and the content length of the buffer. in %s on line %d -[022] LOAD DATA failed, [2000] Mismatch between the return value of the callback and the content length of the buffer. -[024/0] [0] '' -done!
\ No newline at end of file diff --git a/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt b/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt deleted file mode 100644 index f287f4d874..0000000000 --- a/ext/mysqli/tests/mysqli_set_local_infile_handler_unregister.phpt +++ /dev/null @@ -1,64 +0,0 @@ ---TEST-- -mysqli_set_local_infile_handler() - do not use the file pointer ---SKIPIF-- -<?php -require_once('skipif.inc'); -require_once('skipifemb.inc'); -require_once('skipifconnectfailure.inc'); - -if (!function_exists('mysqli_set_local_infile_handler')) - die("skip - function not available."); - -require_once('connect.inc'); -if (!$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket)) - die("skip Cannot connect to MySQL"); - -include_once("local_infile_tools.inc"); -if ($msg = check_local_infile_support($link, $engine)) - die(sprintf("skip %s, [%d] %s", $msg, $link->errno, $link->error)); - -mysqli_close($link); -?> ---INI-- -mysqli.allow_local_infile=1 ---FILE-- -<?php - require_once('connect.inc'); - require_once('local_infile_tools.inc'); - require_once('table.inc'); - - function callback_unregister($fp, &$buffer, $buflen, &$error) { - global $link; - static $invocation = 0; - - printf("Callback: %d\n", $invocation++); - flush(); - if (is_resource($fp)) - fclose($fp); - $buffer = "1;'a';\n"; - if ($invocation > 10) - return 0; - - mysqli_set_local_infile_default($link); - return strlen($buffer); - } - - $file = create_standard_csv(1); - $expected = array(array('id' => 1, 'label' => 'a')); - try_handler(20, $link, $file, 'callback_unregister', $expected); - - mysqli_close($link); - print "done!"; -?> ---CLEAN-- -<?php - require_once("clean_table.inc"); -?> ---EXPECTF-- -Callback set to 'callback_unregister' -Callback: 0 - -Warning: mysqli_query(): File handle closed in %s on line %d -[022] LOAD DATA failed, [2000] File handle closed -[024/0] [0] '' -done! |