Bug Report: vtgate panics on WITH clause followed by a parenthesized query
Author: mhamza15Created Jul 1, 2026Updated Sep 15, 2026
LabelsType: BugComponent: Query Serving
Overview of the Issue
Sending a statement where a WITH clause is directly followed by a parenthesized query expression — e.g. WITH x AS (SELECT 1) (SELECT * FROM x) — panics vtgate's query-serving goroutine.
Reproduction Steps
- Bring up the local example cluster (
examples/compose/101_initial_cluster.sh). - Run the query through vtgate:
$ mysql -h vtgate -P 15306 --table -vvv commerce
--------------
select * from customer
--------------
Empty set (0.01 sec)
--------------
with x as (select 1) (select * from x)
--------------
ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during queryFor comparison, vanilla MySQL 8.4 accepts the same statement as valid syntax:
mysql> with x as (select 1) (select * from x);
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)Binary Version
vtgate version Version: 25.0.0-SNAPSHOT (Git revision c5681340153a8ad0199c166294be841d1c2f3b4e branch 'main') built on Wed Jul 1 23:52:48 UTC 2026 using go1.26.2 linux/arm64Operating System and Environment details
AllLog Fragments
2026-07-01 23:56:03.569 UTC ERR mysql/server.go:386 mysql_server caught panic:
runtime error: invalid memory address or nil pointer dereference
sql.y:733 (0xafabd7)
vitess.io/vitess/go/vt/sqlparser/parser.go:57 (0xa96cf3)
vitess.io/vitess/go/vt/sqlparser/parser.go:79 (0xa96ebb)
vitess.io/vitess/go/vt/vtgate/executor.go:1692 (0x122fa0b)
vitess.io/vitess/go/vt/vtgate/executor.go:1250 (0x122d057)
vitess.io/vitess/go/vt/vtgate/plan_execute.go:122 (0x1231953)
vitess.io/vitess/go/vt/vtgate/vtgate.go:599 (0x12559d3)
vitess.io/vitess/go/vt/vtgate/plugin_mysql_server.go:320 (0x12350b3)
vitess.io/vitess/go/mysql/conn.go:1640 (0xcab283)
vitess.io/vitess/go/mysql/server.go:565 (0xcc1a4b)Source: vitessio/vitess