* Support php 5.3 for sql parser lib.

This commit is contained in:
qixinzhi
2023-02-10 11:24:24 +08:00
parent 7c2e937eda
commit 7c122a0b29
648 changed files with 13815 additions and 279048 deletions
@@ -1,22 +1,17 @@
<?php
declare(strict_types=1);
namespace PhpMyAdmin\SqlParser\Tests\Utils;
use PhpMyAdmin\SqlParser\Tests\TestCase;
use PhpMyAdmin\SqlParser\Utils\BufferedQuery;
use function count;
use function str_split;
class BufferedQueryTest extends TestCase
{
/**
* @dataProvider extractProvider
*
* @param mixed $query
* @param mixed $chunkSize
*
* @dataProvider extractProvider
*/
public function testExtract(
$query,
@@ -32,7 +27,7 @@ class BufferedQueryTest extends TestCase
*
* @var array
*/
$statements = [];
$statements = array();
/**
* The `BufferedQuery` instance used for extraction.
@@ -44,9 +39,7 @@ class BufferedQueryTest extends TestCase
// Feeding chunks and extracting queries.
$i = 0;
while ($i < $count) {
$stmt = $bq->extract();
if ($stmt) {
if ($stmt = $bq->extract()) {
$statements[] = $stmt;
} else {
$bq->query .= $chunks[$i++];
@@ -61,7 +54,7 @@ class BufferedQueryTest extends TestCase
$this->assertEquals($expected, $statements);
}
public function extractProvider(): array
public function extractProvider()
{
$query =
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;' . "\n" .
@@ -75,8 +68,7 @@ class BufferedQueryTest extends TestCase
'/* a comment */ DELIMITER $$' . "\n" .
'' . "\n" .
'# Bash-like comment sytanx.' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' .
'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'BEGIN' . "\n" .
' SELECT inventory_id' . "\n" .
' FROM inventory' . "\n" .
@@ -107,31 +99,33 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;' . "\n" .
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */';
return [
[
return array(
array(
"SELECT '\'';\nSELECT '\'';",
8,
[
array(
'parse_delimiter' => true,
'add_delimiter' => true,
],
[
),
array(
"SELECT '\'';",
"SELECT '\'';",
],
],
),
),
[
'SELECT \\',
array(
"SELECT \\",
8,
[
array(
'parse_delimiter' => false,
'add_delimiter' => false,
],
['SELECT \\'],
],
),
array(
"SELECT \\",
),
),
[
array(
"CREATE TABLE `test` (\n" .
" `txt` varchar(10)\n" .
");\n" .
@@ -139,58 +133,58 @@ class BufferedQueryTest extends TestCase
"INSERT INTO `test` (`txt`) VALUES('\\\\');\n" .
"INSERT INTO `test` (`txt`) VALUES('xyz');\n",
8,
[
array(
'parse_delimiter' => true,
'add_delimiter' => true,
],
[
),
array(
"CREATE TABLE `test` (\n" .
" `txt` varchar(10)\n" .
');',
"INSERT INTO `test` (`txt`) VALUES('abc');",
"INSERT INTO `test` (`txt`) VALUES('\\\\');",
"INSERT INTO `test` (`txt`) VALUES('xyz');",
],
],
),
),
[
array(
'SELECT """""""";' .
'SELECT """\\\\"""',
8,
[
array(
'parse_delimiter' => true,
'add_delimiter' => true,
],
[
),
array(
'SELECT """""""";',
'SELECT """\\\\"""',
],
],
),
),
[
array(
'DELIMITER A_VERY_LONG_DEL' . "\n" .
'SELECT 1 A_VERY_LONG_DEL' . "\n" .
'DELIMITER ;',
3,
[
array(
'parse_delimiter' => true,
'add_delimiter' => true,
],
[
),
array(
'DELIMITER A_VERY_LONG_DEL',
'SELECT 1 A_VERY_LONG_DEL',
'DELIMITER ;',
],
],
),
),
[
array(
$query,
32,
[
array(
'parse_delimiter' => false,
'add_delimiter' => false,
],
[
),
array(
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */',
@@ -204,8 +198,7 @@ class BufferedQueryTest extends TestCase
'SET time_zone = "+00:00"',
'# Bash-like comment sytanx.' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' .
'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'BEGIN' . "\n" .
' SELECT inventory_id' . "\n" .
' FROM inventory' . "\n" .
@@ -235,17 +228,17 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
],
],
),
),
[
array(
$query,
32,
[
array(
'parse_delimiter' => true,
'add_delimiter' => false,
],
[
),
array(
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */',
@@ -261,8 +254,7 @@ class BufferedQueryTest extends TestCase
'/* a comment */ DELIMITER $$',
'# Bash-like comment sytanx.' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' .
'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'BEGIN' . "\n" .
' SELECT inventory_id' . "\n" .
' FROM inventory' . "\n" .
@@ -294,17 +286,17 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
],
],
),
),
[
array(
$query,
64,
[
array(
'parse_delimiter' => false,
'add_delimiter' => true,
],
[
),
array(
'/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;',
'/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;',
@@ -318,8 +310,7 @@ class BufferedQueryTest extends TestCase
'SET time_zone = "+00:00";',
'# Bash-like comment sytanx.' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' .
'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" .
'BEGIN' . "\n" .
' SELECT inventory_id' . "\n" .
' FROM inventory' . "\n" .
@@ -349,8 +340,8 @@ class BufferedQueryTest extends TestCase
'/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;',
'/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */',
],
],
];
),
)
);
}
}