mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Merge branch 'PHP-7.4' into PHP-8.0
* PHP-7.4: Drop pdo_mysql_prepare_load_data.phpt
This commit is contained in:
commit
15d9c42070
1 changed files with 0 additions and 108 deletions
|
@ -1,108 +0,0 @@
|
|||
--TEST--
|
||||
MySQL PDO->prepare() and 1295 (ER_UNSUPPORTED_PS)
|
||||
--SKIPIF--
|
||||
<?php
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'skipif.inc');
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
|
||||
MySQLPDOTest::skip();
|
||||
|
||||
// Run test only locally - not against remote hosts
|
||||
$db = MySQLPDOTest::factory();
|
||||
$stmt = $db->query('SELECT USER() as _user');
|
||||
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
$tmp = explode('@', $row['_user']);
|
||||
if (count($tmp) < 2)
|
||||
die("skip Cannot detect if test is run against local or remote database server");
|
||||
if (($tmp[1] !== 'localhost') && ($tmp[1] !== '127.0.0.1'))
|
||||
die("skip Test cannot be run against remote database server");
|
||||
|
||||
$stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
|
||||
if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
|
||||
if (!is_writable($row['value']))
|
||||
die("skip secure_file_priv directory not writable: {$row['value']}");
|
||||
|
||||
$filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
|
||||
|
||||
if (file_exists($filename) && !is_writable($filename))
|
||||
die("skip {$filename} not writable");
|
||||
}
|
||||
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
function exec_and_count($offset, &$db, $sql, $exp) {
|
||||
|
||||
try {
|
||||
|
||||
$ret = $db->exec($sql);
|
||||
if ($ret !== $exp) {
|
||||
printf("[%03d] Expecting '%s'/%s got '%s'/%s when running '%s', [%s] %s\n",
|
||||
$offset, $exp, gettype($exp), $ret, gettype($ret), $sql,
|
||||
$db->errorCode(), implode(' ', $db->errorInfo()));
|
||||
return false;
|
||||
}
|
||||
|
||||
} catch (PDOException $e) {
|
||||
|
||||
if (42000 == $db->errorCode()) {
|
||||
// Error: 1148 SQLSTATE: 42000 (ER_NOT_ALLOWED_COMMAND)
|
||||
// Load data infile not allowed
|
||||
return false;
|
||||
}
|
||||
|
||||
printf("[%03d] '%s' has failed, [%s] %s\n",
|
||||
$offset, $sql, $db->errorCode(), implode(' ', $db->errorInfo()));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
require_once(__DIR__ . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc');
|
||||
$db = MySQLPDOTest::factory();
|
||||
// Run with native PS.
|
||||
// The test is about checking the fallback to emulation
|
||||
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
|
||||
MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
|
||||
|
||||
exec_and_count(2, $db, 'DROP TABLE IF EXISTS test', 0);
|
||||
exec_and_count(3, $db, sprintf('CREATE TABLE test(id INT NOT NULL PRIMARY KEY, col1 CHAR(10)) ENGINE=%s', PDO_MYSQL_TEST_ENGINE), 0);
|
||||
|
||||
$stmt = $db->query("SHOW VARIABLES LIKE 'secure_file_priv'");
|
||||
if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
|
||||
$filename = $row['value'] . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
|
||||
} else {
|
||||
$filename = MySQLPDOTest::getTempDir() . DIRECTORY_SEPARATOR . "pdo_mysql_exec_load_data.csv";
|
||||
}
|
||||
|
||||
$fp = fopen($filename, "w");
|
||||
fwrite($fp, "1;foo\n");
|
||||
fwrite($fp, "2;bar");
|
||||
fclose($fp);
|
||||
|
||||
$stmt = $db->prepare(sprintf("LOAD DATA INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'", $db->quote($filename)));
|
||||
if (!$stmt->execute()) {
|
||||
printf("[004] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
|
||||
}
|
||||
|
||||
// Check the line
|
||||
$stmt = $db->query("SELECT 1 as 'one'");
|
||||
if ($stmt->errorCode() != '0000') {
|
||||
printf("[005] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
|
||||
} else {
|
||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
if (!isset($rows[0]['one']) || $rows[0]['one'] != 1)
|
||||
printf("[006] [%d] %s\n", $stmt->errorCode(), var_export($stmt->errorInfo(), true));
|
||||
}
|
||||
|
||||
unlink($filename);
|
||||
|
||||
print "done!";
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
require __DIR__ . '/mysql_pdo_test.inc';
|
||||
MySQLPDOTest::dropTestTable();
|
||||
?>
|
||||
--EXPECTF--
|
||||
done!
|
Loading…
Add table
Add a link
Reference in a new issue