]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4' into PHP-8.0
authorNikita Popov <nikita.ppv@gmail.com>
Tue, 17 Nov 2020 12:16:17 +0000 (13:16 +0100)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 17 Nov 2020 12:16:17 +0000 (13:16 +0100)
* PHP-7.4:
  Fix #80312: change default engine from MyISAM to InnoDB in tests

1  2 
ext/mysqli/tests/connect.inc
ext/pdo_mysql/tests/config.inc

index 6bf393a2de6654599adc1838b9d49e0fe508dbaf,6af574ad0f6df34e28cabd594d8230a0d2be6eb7..604ecc97ea344edaa31e97faa87d6dad7ce15ea9
  <?php
 -      /*
 -      Default values are "localhost", "root",
 -      database "test" and empty password.
 -      Change the MYSQL_TEST environment values
 -      if you want to use another configuration
 -      */
 -
 -      $driver    = new mysqli_driver;
 -
 -      $host      = getenv("MYSQL_TEST_HOST")     ?: "localhost";
 -      $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 experimal features and/or feature requests that never worked before? */
 -      $TEST_EXPERIMENTAL = (in_array(getenv("MYSQL_TEST_EXPERIMENTAL"), array(0, 1))) ?
 -                              ((1 == getenv("MYSQL_TEST_EXPERIMENTAL")) ? true : false) :
 -                              false;
 -
 -      $IS_MYSQLND = stristr(mysqli_get_client_info(), "mysqlnd");
 -
 -      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 ot MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
 -              *
 -              * @param 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 ot MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
 -              *
 -              * @param 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 !== false) {
 -                                      parent::init();
 -                                      $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)) {
 -                              if ($row[1] == "DISABLED" || $row[1] == "NO") {
 -                                      return false;
 -                              }
 -                              return true;
 -                } else {
 -                              /* 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 (('InnoDB' == $row['Engine']) &&
 -                                                      (('YES' == $row['Support']) || ('DEFAULT' == $row['Support']))
 -                                                      ) {
 -                                                      return true;
 -                                              }
 -                                      }
 -                                      return false;
 -                              } else {
 -                                      return false;
 -                              }
 -                }
 -                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;
 -      }
 +    /*
 +    Default values are "localhost", "root",
 +    database "test" and empty password.
 +    Change the MYSQL_TEST environment values
 +    if you want to use another configuration
 +    */
 +
 +    $driver    = new mysqli_driver;
 +
 +    $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")   ?: "MyISAM";
++    $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 = (in_array(getenv("MYSQL_TEST_EXPERIMENTAL"), array(0, 1))) ?
 +                ((1 == getenv("MYSQL_TEST_EXPERIMENTAL")) ? true : false) :
 +                false;
 +
 +    $IS_MYSQLND = stristr(mysqli_get_client_info(), "mysqlnd");
 +
 +    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 ot MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
 +        *
 +        * @param 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 ot MYSQLI_CLIENT_COMPRESS (and potentially SSL) possible
 +        *
 +        * @param 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 !== false) {
 +                    parent::init();
 +                    $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)) {
 +                if ($row[1] == "DISABLED" || $row[1] == "NO") {
 +                    return false;
 +                }
 +                return true;
 +          } else {
 +                /* 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 (('InnoDB' == $row['Engine']) &&
 +                            (('YES' == $row['Support']) || ('DEFAULT' == $row['Support']))
 +                            ) {
 +                            return true;
 +                        }
 +                    }
 +                    return false;
 +                } else {
 +                    return false;
 +                }
 +          }
 +          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;
 +    }
  ?>
Simple merge