@@ -363,6 +363,13 @@ func explainShowQuery(sb *strings.Builder, n *ast.ShowQuery, indent string) {
363363 showType = "Tables"
364364 }
365365
366+ // SHOW CREATE DATABASE has special output format
367+ if n .ShowType == ast .ShowCreateDB && n .From != "" {
368+ fmt .Fprintf (sb , "%sShowCreateDatabaseQuery %s (children 1)\n " , indent , n .From )
369+ fmt .Fprintf (sb , "%s Identifier %s\n " , indent , n .From )
370+ return
371+ }
372+
366373 // SHOW CREATE TABLE has special output format with database and table identifiers
367374 if n .ShowType == ast .ShowCreate && (n .Database != "" || n .From != "" ) {
368375 // Format: ShowCreateTableQuery database table (children 2)
@@ -383,11 +390,19 @@ func explainShowQuery(sb *strings.Builder, n *ast.ShowQuery, indent string) {
383390 return
384391 }
385392
393+ // SHOW TABLES FROM database - include database as child
394+ if n .ShowType == ast .ShowTables && n .From != "" {
395+ fmt .Fprintf (sb , "%sShowTables (children 1)\n " , indent )
396+ fmt .Fprintf (sb , "%s Identifier %s\n " , indent , n .From )
397+ return
398+ }
399+
386400 fmt .Fprintf (sb , "%sShow%s\n " , indent , showType )
387401}
388402
389403func explainUseQuery (sb * strings.Builder , n * ast.UseQuery , indent string ) {
390- fmt .Fprintf (sb , "%sUse %s\n " , indent , n .Database )
404+ fmt .Fprintf (sb , "%sUseQuery %s (children %d)\n " , indent , n .Database , 1 )
405+ fmt .Fprintf (sb , "%s Identifier %s\n " , indent , n .Database )
391406}
392407
393408func explainDescribeQuery (sb * strings.Builder , n * ast.DescribeQuery , indent string ) {
@@ -422,6 +437,19 @@ func explainDescribeQuery(sb *strings.Builder, n *ast.DescribeQuery, indent stri
422437 }
423438}
424439
440+ func explainExistsTableQuery (sb * strings.Builder , n * ast.ExistsQuery , indent string ) {
441+ // EXISTS TABLE/DATABASE/DICTIONARY query
442+ name := n .Table
443+ if n .Database != "" {
444+ name = n .Database + " " + n .Table
445+ }
446+ fmt .Fprintf (sb , "%sExistsTableQuery %s (children %d)\n " , indent , name , 2 )
447+ if n .Database != "" {
448+ fmt .Fprintf (sb , "%s Identifier %s\n " , indent , n .Database )
449+ }
450+ fmt .Fprintf (sb , "%s Identifier %s\n " , indent , n .Table )
451+ }
452+
425453func explainDataType (sb * strings.Builder , n * ast.DataType , indent string , depth int ) {
426454 // If type has parameters, expand them as children
427455 if len (n .Parameters ) > 0 {
0 commit comments