Skip to content

Commit a3a699d

Browse files
committed
Add test cases for complex procedures and functions
Ref: phpmyadmin/phpmyadmin#18302 Signed-off-by: William Desportes <williamdes@wdes.fr>
1 parent 52608cb commit a3a699d

File tree

5 files changed

+14271
-0
lines changed

5 files changed

+14271
-0
lines changed

tests/Parser/CreateStatementTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public function createProvider(): array
3131
['parser/parseCreateProcedure'],
3232
['parser/parseCreateProcedure1'],
3333
['parser/parseCreateProcedure2'],
34+
['parser/parseCreateProcedure3'],
35+
['parser/parseCreateProcedure4'],
3436
['parser/parseCreateSchema'],
3537
['parser/parseCreateSchemaErr'],
3638
['parser/parseCreateTable'],
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
DELIMITER $$
2+
CREATE DEFINER=`user`@`localhost` PROCEDURE `multiDBqueryRun_V1`(IN `query` TEXT, IN `table_name_var` VARCHAR(255), IN `columns_used_var` TEXT, IN `where_text_var` TEXT, IN `separator_value_var` VARCHAR(255)) COMMENT 'Query: SingleDB → MultiDB (All DBs) + run it' NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY INVOKER BEGIN
3+
SET @TABLE_NAME = table_name_var;
4+
SET @WHERE_TEXT = where_text_var;
5+
SET @COLUMNS_USED = columns_used_var;
6+
SET @MULTIDB_QUERY = CONCAT('SELECT "$MULTIDB" FROM `$MULTIDB`.', @TABLE_NAME, @WHERE_TEXT);
7+
8+
-- EXECUTION --
9+
CREATE TEMPORARY TABLE `MULTIDB_TEMP_DB_TBL_COLS` AS
10+
SELECT * FROM (
11+
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
12+
FROM INFORMATION_SCHEMA.COLUMNS
13+
WHERE
14+
TABLE_SCHEMA NOT IN('mysql', 'test', 'tmp', 'information_schema', 'sys', 'performance_schema') AND
15+
TABLE_NAME = @TABLE_NAME AND
16+
FIND_IN_SET(COLUMN_NAME, @COLUMNS_USED)
17+
) tbl
18+
GROUP BY
19+
TABLE_SCHEMA,
20+
TABLE_NAME;
21+
22+
SELECT GROUP_CONCAT(REPLACE(@MULTIDB_QUERY, '$MULTIDB', CONCAT('', TABLE_SCHEMA, '')) SEPARATOR "\nUNION ALL\n")
23+
INTO @stmt_sql
24+
FROM `MULTIDB_TEMP_DB_TBL_COLS`;
25+
26+
PREPARE stmt FROM @stmt_sql;
27+
EXECUTE stmt;
28+
DEALLOCATE PREPARE stmt;
29+
END

0 commit comments

Comments
 (0)