]> granicus.if.org Git - php/commitdiff
Fix test cases for MariaDB
authorDharman <tekiela246@gmail.com>
Thu, 10 Dec 2020 23:50:02 +0000 (23:50 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Fri, 11 Dec 2020 08:53:20 +0000 (09:53 +0100)
And remove unnecessary try-catch.

Closes GH-6505.

ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt
ext/pdo_mysql/tests/pdo_mysql_exec_load_data.phpt
ext/pdo_mysql/tests/pdo_mysql_prepare_load_data.phpt

index 6e98c85bdf5b41de7d8e5e9a1deef25ee8c1f8d6..1b6941c583d908ed13e84606d18a42e0f32bb365 100644 (file)
@@ -40,7 +40,7 @@ MySQLPDOTest::skip();
     $db->setAttribute(PDO::ATTR_ORACLE_NULLS, 1);
     $stmt = $db->query('SELECT VERSION() as _version');
     $row = $stmt->fetch(PDO::FETCH_ASSOC);
-    if ((int)substr($row['_version'], 0, 1) >= 5)
+    if ((int)strtok($row['_version'], '.') >= 5)
         $have_procedures = true;
     else
         $have_procedures = false;
index b3069eaf008f345abe7a4801474fbcda34ea7029..7a0d6e36a26c5a5c5be4fea858ca08b3ce773adb 100644 (file)
@@ -64,50 +64,43 @@ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
     MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
 
     /* affected rows related */
-    try {
 
-        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);
+    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";
-        }
+    $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);
-
-        $sql = sprintf("LOAD DATA LOCAL INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED  BY '\n'", $db->quote($filename));
-
-        if (exec_and_count(4, $db, $sql, 2)) {
-
-            $stmt = $db->query('SELECT id, col1 FROM test ORDER BY id ASC');
-            $expected = array(array("id" => 1, "col1" => "foo"), array("id" => 2, "col1" => "bar"));
-            $ret = $stmt->fetchAll(PDO::FETCH_ASSOC);
-            foreach ($expected as $offset => $exp) {
-                foreach ($exp as $key => $value) {
-                    if ($ret[$offset][$key] != $value) {
-                        printf("Results seem wrong, check manually\n");
-                        var_dump($ret);
-                        var_dump($expected);
-                        break 2;
-                    }
+    $fp = fopen($filename, "w");
+    fwrite($fp, "1;foo\n");
+    fwrite($fp, "2;bar");
+    fclose($fp);
+
+    $sql = sprintf("LOAD DATA LOCAL INFILE %s INTO TABLE test FIELDS TERMINATED BY ';' LINES TERMINATED  BY '\n'", $db->quote($filename));
+
+    if (exec_and_count(4, $db, $sql, 2)) {
+
+        $stmt = $db->query('SELECT id, col1 FROM test ORDER BY id ASC');
+        $expected = array(array("id" => 1, "col1" => "foo"), array("id" => 2, "col1" => "bar"));
+        $ret = $stmt->fetchAll(PDO::FETCH_ASSOC);
+        foreach ($expected as $offset => $exp) {
+            foreach ($exp as $key => $value) {
+                if ($ret[$offset][$key] != $value) {
+                    printf("Results seem wrong, check manually\n");
+                    var_dump($ret);
+                    var_dump($expected);
+                    break 2;
                 }
             }
         }
-
-        unlink($filename);
-
-    } catch (PDOException $e) {
-        printf("[001] %s, [%s] %s\n",
-            $e->getMessage(),
-            $db->errorCode(), implode(' ', $db->errorInfo()));
     }
 
+    unlink($filename);
+
     print "done!";
 ?>
 --CLEAN--
index 62214541d71fc795be3aa696f35de94920e84490..1b40d7d7a2170b411bcde76c7fc436d631772dbf 100644 (file)
@@ -65,53 +65,38 @@ if (($row = $stmt->fetch(PDO::FETCH_ASSOC)) && ($row['value'] != '')) {
     $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
     MySQLPDOTest::createTestTable($db, MySQLPDOTest::detect_transactional_mysql_engine($db));
 
-    /* affected rows related */
-    try {
-
-        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);
-
-        // This should fail, the PS protocol should not support it.
-        // mysqlnd will give 2014 as a follow-up of the fallback logic
-        // libmysql will give a little more precise 2030 error code
-        // However, you get an error and the big question is what happens to the line
-        $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));
-        }
+    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";
+    }
 
-        // 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));
-        }
+    $fp = fopen($filename, "w");
+    fwrite($fp, "1;foo\n");
+    fwrite($fp, "2;bar");
+    fclose($fp);
 
-        unlink($filename);
+    $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));
+    }
 
-    } catch (PDOException $e) {
-        printf("[001] %s, [%s] %s (%s)\n",
-            $e->getMessage(),
-            $db->errorCode(),
-            implode(' ', $db->errorInfo()),
-            (isset($stmt)) ? implode(' ', $stmt->errorInfo()) : 'N/A');
+    // 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--
@@ -120,10 +105,4 @@ require __DIR__ . '/mysql_pdo_test.inc';
 MySQLPDOTest::dropTestTable();
 ?>
 --EXPECTF--
-Warning: PDOStatement::execute(): SQLSTATE[HY000]: General error: %s in %s on line %d
-[004] [0] array (
-  0 => 'HY000',
-  1 => %d,
-  2 => %s,
-)
 done!