Missing space before UNION when building CREATE VIEW
還沒有人認領這個 Issue。
評估
研究方向
從 CreateStatement::build() 開始,透過 PhpMyAdmin\SqlParser\Parser 使用 SQL 範例重現問題。驗證重新建立 CREATE VIEW 時會保留結尾 UNION 主體前的空白,並產生有效的 SQL,而不是 3union all。
由索引模型根據 Issue 內容生成。
描述
Summary
When CreateStatement::build() reconstructs a CREATE VIEW ... AS SELECT ... UNION ...
statement, the output misses the whitespace between the built SELECT and the
trailing body tokens. Result: invalid SQL such as ... WHERE 3 = 3union all (...).
This was previously reported downstream in phpMyAdmin:
- phpmyadmin/phpmyadmin#19692
- phpmyadmin/phpmyadmin#18515 (same bug, older)
Reproduction
use PhpMyAdmin\SqlParser\Parser;
$sql = "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER "
. "VIEW `v1` AS select 1 AS `a` where 3 = 3 union all (select 2 AS `a`)";
echo (new Parser($sql))->statements[0]->build();
Actual output:
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT 1 AS `a` WHERE 3 = 3union all (select 2 AS `a`)
(note: 3 = 3union all — no space).
Expected: a space before union all, producing valid SQL.
Environment
- Library version: current
master(headf440917e) - PHP: 8.4
- 主要語言
- PHP
- 星號
- 485
- 分支
- 119
- PR 合併指標
- 30 天內沒有已合併 PR
貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
phpmyadmin/sql-parser 的其他 Issue
-
難度 3/5 1-2 天 新手友好度 55/100
phpmyadmin/sql-parser#666 ·
-
難度 3/5 1-2 天 新手友好度 65/100
phpmyadmin/sql-parser#662 · 2 個 reaction ·
-
kind/support
難度 3/5 1-2 天 新手友好度 45/100
phpmyadmin/sql-parser#653 · 1 個 reaction ·
-
難度 3/5 1-2 天 新手友好度 70/100
phpmyadmin/sql-parser#649 ·
-
bug
難度 3/5 1-2 天 新手友好度 25/100
phpmyadmin/sql-parser#643 · 1 則留言 ·
查看 phpmyadmin/sql-parser 的全部 Issue
相似的 Issue
-
sync-en
難度 1/5 1-3 小時 新手友好度 85/100
-
難度 1/5 1 小時以內 新手友好度 90/100
-
難度 2/5 1-3 小時 新手友好度 68/100
getgrav/grav-plugin-api#45 ·
-
難度 2/5 1-3 小時 新手友好度 78/100
RSS-Bridge/rss-bridge#5098 ·
-
難度 2/5 1-3 小時 新手友好度 68/100
phingofficial/phing#2025 ·