report_mode = MYSQLI_REPORT_OFF; $host = getenv("MYSQL_TEST_HOST") ?: "127.0.0.1"; $port = getenv("MYSQL_TEST_PORT") ?: 3306; $user = getenv("MYSQL_TEST_USER") ?: "root"; $passwd = getenv("MYSQL_TEST_PASSWD") ?: ""; $db = getenv("MYSQL_TEST_DB") ?: "test"; $engine = getenv("MYSQL_TEST_ENGINE") ?: "InnoDB"; $socket = getenv("MYSQL_TEST_SOCKET") ?: null; $skip_on_connect_failure = getenv("MYSQL_TEST_SKIP_CONNECT_FAILURE") ?: true; $connect_flags = (int)getenv("MYSQL_TEST_CONNECT_FLAGS") ?: 0; if ($socket) { ini_set('mysqli.default_socket', $socket); } /* Development setting: test experimental features and/or feature requests that never worked before? */ $TEST_EXPERIMENTAL = 1 == getenv("MYSQL_TEST_EXPERIMENTAL"); if (!function_exists('sys_get_temp_dir')) { function sys_get_temp_dir() { if (!empty($_ENV['TMP'])) return realpath( $_ENV['TMP'] ); if (!empty($_ENV['TMPDIR'])) return realpath( $_ENV['TMPDIR'] ); if (!empty($_ENV['TEMP'])) return realpath( $_ENV['TEMP'] ); $temp_file = tempnam(md5(uniqid(rand(), TRUE)), ''); if ($temp_file) { $temp_dir = realpath(dirname($temp_file)); unlink($temp_file); return $temp_dir; } return FALSE; } } if (!function_exists('my_mysqli_connect')) { /** * Whenever possible, please use this wrapper to make testing of MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible * * @param bool $enable_env_flags Enable setting of connection flags through env(MYSQL_TEST_CONNECT_FLAGS)? */ function my_mysqli_connect($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) { global $connect_flags; $flags = $enable_env_flags? $connect_flags:0; if ($flags !== 0) { $link = mysqli_init(); if (!mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags)) $link = false; } else { $link = mysqli_connect($host, $user, $passwd, $db, $port, $socket); } return $link; } /** * Whenever possible, please use this wrapper to make testing of MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible * * @param bool $enable_env_flags Enable setting of connection flags through env(MYSQL_TEST_CONNECT_FLAGS) */ function my_mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags = 0, $enable_env_flags = true) { global $connect_flags; if ($enable_env_flags) $flags = $flags | $connect_flags; return mysqli_real_connect($link, $host, $user, $passwd, $db, $port, $socket, $flags); } class my_mysqli extends mysqli { public function __construct($host, $user, $passwd, $db, $port, $socket, $enable_env_flags = true) { global $connect_flags; $flags = ($enable_env_flags) ? $connect_flags : 0; if ($flags !== 0) { parent::__construct(); $this->real_connect($host, $user, $passwd, $db, $port, $socket, $flags); } else { parent::__construct($host, $user, $passwd, $db, $port, $socket); } } } function have_innodb($link) { if (($res = $link->query("SHOW VARIABLES LIKE 'have_innodb'")) && ($row = $res->fetch_row()) && !empty($row) ) { return !($row[1] == 'DISABLED' || $row[1] == 'NO'); } // MySQL 5.6.1+ if ($res = $link->query('SHOW ENGINES')) { while ($row = $res->fetch_assoc()) { if (!isset($row['Engine']) || !isset($row['Support'])) { return false; } if (($row['Engine'] == 'InnoDB') && (($row['Support'] == 'YES') || ($row['Support'] == 'DEFAULT')) ) { return true; } } } return false; } } else { printf("skip Eeeek/BUG/FIXME - connect.inc included twice! skipif bug?\n"); } function handle_catchable_fatal($errno, $error, $file, $line) { static $errcodes = array(); if (empty($errcodes)) { $constants = get_defined_constants(); foreach ($constants as $name => $value) { if (substr($name, 0, 2) == "E_") $errcodes[$value] = $name; } } printf("[%s] %s in %s on line %s\n", (isset($errcodes[$errno])) ? $errcodes[$errno] : $errno, $error, $file, $line); return true; } ?>