From 92d2c4a3cde9e2b9fabd2c829f4b3cace60c687e Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 30 Dec 2025 05:44:26 +0000 Subject: [PATCH] Add CREATE INDEX statement parsing and EXPLAIN output Add support for CREATE [UNIQUE] INDEX statements: - Add CreateIndexQuery AST type with IndexName, Table, and Columns fields - Parse CREATE INDEX and CREATE UNIQUE INDEX statements - Generate proper EXPLAIN AST output matching ClickHouse format This fixes over 1000 explain tests across: - 02813_create_index_noop (999 statements) - 02814_create_index_uniq_noop (1 statement) --- ast/ast.go | 12 + internal/explain/explain.go | 2 + internal/explain/statements.go | 35 + parser/parser.go | 82 +- .../02813_create_index_noop/metadata.json | 1003 +---------------- .../metadata.json | 6 +- 6 files changed, 129 insertions(+), 1011 deletions(-) diff --git a/ast/ast.go b/ast/ast.go index 5b21b172ce..d0f691e262 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -832,6 +832,18 @@ func (s *ShowCreateQuotaQuery) Pos() token.Position { return s.Position } func (s *ShowCreateQuotaQuery) End() token.Position { return s.Position } func (s *ShowCreateQuotaQuery) statementNode() {} +// CreateIndexQuery represents a CREATE INDEX statement. +type CreateIndexQuery struct { + Position token.Position `json:"-"` + IndexName string `json:"index_name"` + Table string `json:"table"` + Columns []Expression `json:"columns,omitempty"` +} + +func (c *CreateIndexQuery) Pos() token.Position { return c.Position } +func (c *CreateIndexQuery) End() token.Position { return c.Position } +func (c *CreateIndexQuery) statementNode() {} + // ----------------------------------------------------------------------------- // Expressions diff --git a/internal/explain/explain.go b/internal/explain/explain.go index aca386f530..0f5b0337db 100644 --- a/internal/explain/explain.go +++ b/internal/explain/explain.go @@ -149,6 +149,8 @@ func Node(sb *strings.Builder, node interface{}, depth int) { explainTruncateQuery(sb, n, indent) case *ast.CheckQuery: explainCheckQuery(sb, n, indent) + case *ast.CreateIndexQuery: + explainCreateIndexQuery(sb, n, indent, depth) // Types case *ast.DataType: diff --git a/internal/explain/statements.go b/internal/explain/statements.go index 186ab35aa8..4bda5e5ac7 100644 --- a/internal/explain/statements.go +++ b/internal/explain/statements.go @@ -960,3 +960,38 @@ func explainCheckQuery(sb *strings.Builder, n *ast.CheckQuery, indent string) { fmt.Fprintf(sb, "%s Set\n", indent) } } + +func explainCreateIndexQuery(sb *strings.Builder, n *ast.CreateIndexQuery, indent string, depth int) { + if n == nil { + fmt.Fprintf(sb, "%s*ast.CreateIndexQuery\n", indent) + return + } + + // CreateIndexQuery with two spaces before table name, always 3 children + fmt.Fprintf(sb, "%sCreateIndexQuery %s (children %d)\n", indent, n.Table, 3) + + // Child 1: Index name + fmt.Fprintf(sb, "%s Identifier %s\n", indent, n.IndexName) + + // Child 2: Index wrapper with columns + fmt.Fprintf(sb, "%s Index (children 1)\n", indent) + + // For single column, output as Identifier + // For multiple columns or if there are any special cases, output as Function tuple + if len(n.Columns) == 1 { + if ident, ok := n.Columns[0].(*ast.Identifier); ok { + fmt.Fprintf(sb, "%s Identifier %s\n", indent, ident.Name()) + } else { + // Non-identifier expression - wrap in tuple + fmt.Fprintf(sb, "%s Function tuple (children 1)\n", indent) + fmt.Fprintf(sb, "%s ExpressionList\n", indent) + } + } else { + // Multiple columns or empty - always Function tuple with ExpressionList + fmt.Fprintf(sb, "%s Function tuple (children 1)\n", indent) + fmt.Fprintf(sb, "%s ExpressionList\n", indent) + } + + // Child 3: Table name + fmt.Fprintf(sb, "%s Identifier %s\n", indent, n.Table) +} diff --git a/parser/parser.go b/parser/parser.go index 0694bce76d..1ec351e994 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -1247,12 +1247,25 @@ func (p *Parser) parseInsert() *ast.InsertQuery { return ins } -func (p *Parser) parseCreate() *ast.CreateQuery { - create := &ast.CreateQuery{ - Position: p.current.Pos, +func (p *Parser) parseCreate() ast.Statement { + pos := p.current.Pos + p.nextToken() // skip CREATE + + // Handle CREATE [UNIQUE] INDEX + if p.currentIs(token.INDEX) { + return p.parseCreateIndex(pos) + } + // Handle CREATE UNIQUE INDEX + if p.currentIs(token.IDENT) && strings.ToUpper(p.current.Value) == "UNIQUE" { + p.nextToken() // skip UNIQUE + if p.currentIs(token.INDEX) { + return p.parseCreateIndex(pos) + } } - p.nextToken() // skip CREATE + create := &ast.CreateQuery{ + Position: pos, + } // Handle OR REPLACE if p.currentIs(token.OR) { @@ -1328,6 +1341,67 @@ func (p *Parser) parseCreate() *ast.CreateQuery { return create } +func (p *Parser) parseCreateIndex(pos token.Position) *ast.CreateIndexQuery { + p.nextToken() // skip INDEX + + query := &ast.CreateIndexQuery{ + Position: pos, + } + + // Parse index name + query.IndexName = p.parseIdentifierName() + + // Skip IF NOT EXISTS if present + if p.currentIs(token.IF) { + p.nextToken() // IF + if p.currentIs(token.NOT) { + p.nextToken() // NOT + } + if p.currentIs(token.EXISTS) { + p.nextToken() // EXISTS + } + } + + // Expect ON + if p.currentIs(token.ON) { + p.nextToken() + } + + // Parse table name + query.Table = p.parseIdentifierName() + if p.currentIs(token.DOT) { + p.nextToken() + query.Table = p.parseIdentifierName() + } + + // Parse column list in parentheses + if p.currentIs(token.LPAREN) { + p.nextToken() // skip ( + + for !p.currentIs(token.RPAREN) && !p.currentIs(token.EOF) { + col := p.parseExpression(0) + query.Columns = append(query.Columns, col) + + // Skip ASC/DESC modifiers + if p.currentIs(token.ASC) || p.currentIs(token.DESC) { + p.nextToken() + } + + if p.currentIs(token.COMMA) { + p.nextToken() + } else { + break + } + } + + if p.currentIs(token.RPAREN) { + p.nextToken() // skip ) + } + } + + return query +} + func (p *Parser) parseCreateTable(create *ast.CreateQuery) { // Handle IF NOT EXISTS if p.currentIs(token.IF) { diff --git a/parser/testdata/02813_create_index_noop/metadata.json b/parser/testdata/02813_create_index_noop/metadata.json index 204ef27344..0967ef424b 100644 --- a/parser/testdata/02813_create_index_noop/metadata.json +++ b/parser/testdata/02813_create_index_noop/metadata.json @@ -1,1002 +1 @@ -{ - "explain_todo": { - "stmt10": true, - "stmt100": true, - "stmt1000": true, - "stmt101": true, - "stmt102": true, - "stmt103": true, - "stmt104": true, - "stmt105": true, - "stmt106": true, - "stmt107": true, - "stmt108": true, - "stmt109": true, - "stmt11": true, - "stmt110": true, - "stmt111": true, - "stmt112": true, - "stmt113": true, - "stmt114": true, - "stmt115": true, - "stmt116": true, - "stmt117": true, - "stmt118": true, - "stmt119": true, - "stmt12": true, - "stmt120": true, - "stmt121": true, - "stmt122": true, - "stmt123": true, - "stmt124": true, - "stmt125": true, - "stmt126": true, - "stmt127": true, - "stmt128": true, - "stmt129": true, - "stmt13": true, - "stmt130": true, - "stmt131": true, - "stmt132": true, - "stmt133": true, - "stmt134": true, - "stmt135": true, - "stmt136": true, - "stmt137": true, - "stmt138": true, - "stmt139": true, - "stmt14": true, - "stmt140": true, - "stmt141": true, - "stmt142": true, - "stmt143": true, - "stmt144": true, - "stmt145": true, - "stmt146": true, - "stmt147": true, - "stmt148": true, - "stmt149": true, - "stmt15": true, - "stmt150": true, - "stmt151": true, - "stmt152": true, - "stmt153": true, - "stmt154": true, - "stmt155": true, - "stmt156": true, - "stmt157": true, - "stmt158": true, - "stmt159": true, - "stmt16": true, - "stmt160": true, - "stmt161": true, - "stmt162": true, - "stmt163": true, - "stmt164": true, - "stmt165": true, - "stmt166": true, - "stmt167": true, - "stmt168": true, - "stmt169": true, - "stmt17": true, - "stmt170": true, - "stmt171": true, - "stmt172": true, - "stmt173": true, - "stmt174": true, - "stmt175": true, - "stmt176": true, - "stmt177": true, - "stmt178": true, - "stmt179": true, - "stmt18": true, - "stmt180": true, - "stmt181": true, - "stmt182": true, - "stmt183": true, - "stmt184": true, - "stmt185": true, - "stmt186": true, - "stmt187": true, - "stmt188": true, - "stmt189": true, - "stmt19": true, - "stmt190": true, - "stmt191": true, - "stmt192": true, - "stmt193": true, - "stmt194": true, - "stmt195": true, - "stmt196": true, - "stmt197": true, - "stmt198": true, - "stmt199": true, - "stmt2": true, - "stmt20": true, - "stmt200": true, - "stmt201": true, - "stmt202": true, - "stmt203": true, - "stmt204": true, - "stmt205": true, - "stmt206": true, - "stmt207": true, - "stmt208": true, - "stmt209": true, - "stmt21": true, - "stmt210": true, - "stmt211": true, - "stmt212": true, - "stmt213": true, - "stmt214": true, - "stmt215": true, - "stmt216": true, - "stmt217": true, - "stmt218": true, - "stmt219": true, - "stmt22": true, - "stmt220": true, - "stmt221": true, - "stmt222": true, - "stmt223": true, - "stmt224": true, - "stmt225": true, - "stmt226": true, - "stmt227": true, - "stmt228": true, - "stmt229": true, - "stmt23": true, - "stmt230": true, - "stmt231": true, - "stmt232": true, - "stmt233": true, - "stmt234": true, - "stmt235": true, - "stmt236": true, - "stmt237": true, - "stmt238": true, - "stmt239": true, - "stmt24": true, - "stmt240": true, - "stmt241": true, - "stmt242": true, - "stmt243": true, - "stmt244": true, - "stmt245": true, - "stmt246": true, - "stmt247": true, - "stmt248": true, - "stmt249": true, - "stmt25": true, - "stmt250": true, - "stmt251": true, - "stmt252": true, - "stmt253": true, - "stmt254": true, - "stmt255": true, - "stmt256": true, - "stmt257": true, - "stmt258": true, - "stmt259": true, - "stmt26": true, - "stmt260": true, - "stmt261": true, - "stmt262": true, - "stmt263": true, - "stmt264": true, - "stmt265": true, - "stmt266": true, - "stmt267": true, - "stmt268": true, - "stmt269": true, - "stmt27": true, - "stmt270": true, - "stmt271": true, - "stmt272": true, - "stmt273": true, - "stmt274": true, - "stmt275": true, - "stmt276": true, - "stmt277": true, - "stmt278": true, - "stmt279": true, - "stmt28": true, - "stmt280": true, - "stmt281": true, - "stmt282": true, - "stmt283": true, - "stmt284": true, - "stmt285": true, - "stmt286": true, - "stmt287": true, - "stmt288": true, - "stmt289": true, - "stmt29": true, - "stmt290": true, - "stmt291": true, - "stmt292": true, - "stmt293": true, - "stmt294": true, - "stmt295": true, - "stmt296": true, - "stmt297": true, - "stmt298": true, - "stmt299": true, - "stmt30": true, - "stmt300": true, - "stmt301": true, - "stmt302": true, - "stmt303": true, - "stmt304": true, - "stmt305": true, - "stmt306": true, - "stmt307": true, - "stmt308": true, - "stmt309": true, - "stmt31": true, - "stmt310": true, - "stmt311": true, - "stmt312": true, - "stmt313": true, - "stmt314": true, - "stmt315": true, - "stmt316": true, - "stmt317": true, - "stmt318": true, - "stmt319": true, - "stmt32": true, - "stmt320": true, - "stmt321": true, - "stmt322": true, - "stmt323": true, - "stmt324": true, - "stmt325": true, - "stmt326": true, - "stmt327": true, - "stmt328": true, - "stmt329": true, - "stmt33": true, - "stmt330": true, - "stmt331": true, - "stmt332": true, - "stmt333": true, - "stmt334": true, - "stmt335": true, - "stmt336": true, - "stmt337": true, - "stmt338": true, - "stmt339": true, - "stmt34": true, - "stmt340": true, - "stmt341": true, - "stmt342": true, - "stmt343": true, - "stmt344": true, - "stmt345": true, - "stmt346": true, - "stmt347": true, - "stmt348": true, - "stmt349": true, - "stmt35": true, - "stmt350": true, - "stmt351": true, - "stmt352": true, - "stmt353": true, - "stmt354": true, - "stmt355": true, - "stmt356": true, - "stmt357": true, - "stmt358": true, - "stmt359": true, - "stmt36": true, - "stmt360": true, - "stmt361": true, - "stmt362": true, - "stmt363": true, - "stmt364": true, - "stmt365": true, - "stmt366": true, - "stmt367": true, - "stmt368": true, - "stmt369": true, - "stmt37": true, - "stmt370": true, - "stmt371": true, - "stmt372": true, - "stmt373": true, - "stmt374": true, - "stmt375": true, - "stmt376": true, - "stmt377": true, - "stmt378": true, - "stmt379": true, - "stmt38": true, - "stmt380": true, - "stmt381": true, - "stmt382": true, - "stmt383": true, - "stmt384": true, - "stmt385": true, - "stmt386": true, - "stmt387": true, - "stmt388": true, - "stmt389": true, - "stmt39": true, - "stmt390": true, - "stmt391": true, - "stmt392": true, - "stmt393": true, - "stmt394": true, - "stmt395": true, - "stmt396": true, - "stmt397": true, - "stmt398": true, - "stmt399": true, - "stmt4": true, - "stmt40": true, - "stmt400": true, - "stmt401": true, - "stmt402": true, - "stmt403": true, - "stmt404": true, - "stmt405": true, - "stmt406": true, - "stmt407": true, - "stmt408": true, - "stmt409": true, - "stmt41": true, - "stmt410": true, - "stmt411": true, - "stmt412": true, - "stmt413": true, - "stmt414": true, - "stmt415": true, - "stmt416": true, - "stmt417": true, - "stmt418": true, - "stmt419": true, - "stmt42": true, - "stmt420": true, - "stmt421": true, - "stmt422": true, - "stmt423": true, - "stmt424": true, - "stmt425": true, - "stmt426": true, - "stmt427": true, - "stmt428": true, - "stmt429": true, - "stmt43": true, - "stmt430": true, - "stmt431": true, - "stmt432": true, - "stmt433": true, - "stmt434": true, - "stmt435": true, - "stmt436": true, - "stmt437": true, - "stmt438": true, - "stmt439": true, - "stmt44": true, - "stmt440": true, - "stmt441": true, - "stmt442": true, - "stmt443": true, - "stmt444": true, - "stmt445": true, - "stmt446": true, - "stmt447": true, - "stmt448": true, - "stmt449": true, - "stmt45": true, - "stmt450": true, - "stmt451": true, - "stmt452": true, - "stmt453": true, - "stmt454": true, - "stmt455": true, - "stmt456": true, - "stmt457": true, - "stmt458": true, - "stmt459": true, - "stmt46": true, - "stmt460": true, - "stmt461": true, - "stmt462": true, - "stmt463": true, - "stmt464": true, - "stmt465": true, - "stmt466": true, - "stmt467": true, - "stmt468": true, - "stmt469": true, - "stmt47": true, - "stmt470": true, - "stmt471": true, - "stmt472": true, - "stmt473": true, - "stmt474": true, - "stmt475": true, - "stmt476": true, - "stmt477": true, - "stmt478": true, - "stmt479": true, - "stmt48": true, - "stmt480": true, - "stmt481": true, - "stmt482": true, - "stmt483": true, - "stmt484": true, - "stmt485": true, - "stmt486": true, - "stmt487": true, - "stmt488": true, - "stmt489": true, - "stmt49": true, - "stmt490": true, - "stmt491": true, - "stmt492": true, - "stmt493": true, - "stmt494": true, - "stmt495": true, - "stmt496": true, - "stmt497": true, - "stmt498": true, - "stmt499": true, - "stmt5": true, - "stmt50": true, - "stmt500": true, - "stmt501": true, - "stmt502": true, - "stmt503": true, - "stmt504": true, - "stmt505": true, - "stmt506": true, - "stmt507": true, - "stmt508": true, - "stmt509": true, - "stmt51": true, - "stmt510": true, - "stmt511": true, - "stmt512": true, - "stmt513": true, - "stmt514": true, - "stmt515": true, - "stmt516": true, - "stmt517": true, - "stmt518": true, - "stmt519": true, - "stmt52": true, - "stmt520": true, - "stmt521": true, - "stmt522": true, - "stmt523": true, - "stmt524": true, - "stmt525": true, - "stmt526": true, - "stmt527": true, - "stmt528": true, - "stmt529": true, - "stmt53": true, - "stmt530": true, - "stmt531": true, - "stmt532": true, - "stmt533": true, - "stmt534": true, - "stmt535": true, - "stmt536": true, - "stmt537": true, - "stmt538": true, - "stmt539": true, - "stmt54": true, - "stmt540": true, - "stmt541": true, - "stmt542": true, - "stmt543": true, - "stmt544": true, - "stmt545": true, - "stmt546": true, - "stmt547": true, - "stmt548": true, - "stmt549": true, - "stmt55": true, - "stmt550": true, - "stmt551": true, - "stmt552": true, - "stmt553": true, - "stmt554": true, - "stmt555": true, - "stmt556": true, - "stmt557": true, - "stmt558": true, - "stmt559": true, - "stmt56": true, - "stmt560": true, - "stmt561": true, - "stmt562": true, - "stmt563": true, - "stmt564": true, - "stmt565": true, - "stmt566": true, - "stmt567": true, - "stmt568": true, - "stmt569": true, - "stmt57": true, - "stmt570": true, - "stmt571": true, - "stmt572": true, - "stmt573": true, - "stmt574": true, - "stmt575": true, - "stmt576": true, - "stmt577": true, - "stmt578": true, - "stmt579": true, - "stmt58": true, - "stmt580": true, - "stmt581": true, - "stmt582": true, - "stmt583": true, - "stmt584": true, - "stmt585": true, - "stmt586": true, - "stmt587": true, - "stmt588": true, - "stmt589": true, - "stmt59": true, - "stmt590": true, - "stmt591": true, - "stmt592": true, - "stmt593": true, - "stmt594": true, - "stmt595": true, - "stmt596": true, - "stmt597": true, - "stmt598": true, - "stmt599": true, - "stmt6": true, - "stmt60": true, - "stmt600": true, - "stmt601": true, - "stmt602": true, - "stmt603": true, - "stmt604": true, - "stmt605": true, - "stmt606": true, - "stmt607": true, - "stmt608": true, - "stmt609": true, - "stmt61": true, - "stmt610": true, - "stmt611": true, - "stmt612": true, - "stmt613": true, - "stmt614": true, - "stmt615": true, - "stmt616": true, - "stmt617": true, - "stmt618": true, - "stmt619": true, - "stmt62": true, - "stmt620": true, - "stmt621": true, - "stmt622": true, - "stmt623": true, - "stmt624": true, - "stmt625": true, - "stmt626": true, - "stmt627": true, - "stmt628": true, - "stmt629": true, - "stmt63": true, - "stmt630": true, - "stmt631": true, - "stmt632": true, - "stmt633": true, - "stmt634": true, - "stmt635": true, - "stmt636": true, - "stmt637": true, - "stmt638": true, - "stmt639": true, - "stmt64": true, - "stmt640": true, - "stmt641": true, - "stmt642": true, - "stmt643": true, - "stmt644": true, - "stmt645": true, - "stmt646": true, - "stmt647": true, - "stmt648": true, - "stmt649": true, - "stmt65": true, - "stmt650": true, - "stmt651": true, - "stmt652": true, - "stmt653": true, - "stmt654": true, - "stmt655": true, - "stmt656": true, - "stmt657": true, - "stmt658": true, - "stmt659": true, - "stmt66": true, - "stmt660": true, - "stmt661": true, - "stmt662": true, - "stmt663": true, - "stmt664": true, - "stmt665": true, - "stmt666": true, - "stmt667": true, - "stmt668": true, - "stmt669": true, - "stmt67": true, - "stmt670": true, - "stmt671": true, - "stmt672": true, - "stmt673": true, - "stmt674": true, - "stmt675": true, - "stmt676": true, - "stmt677": true, - "stmt678": true, - "stmt679": true, - "stmt68": true, - "stmt680": true, - "stmt681": true, - "stmt682": true, - "stmt683": true, - "stmt684": true, - "stmt685": true, - "stmt686": true, - "stmt687": true, - "stmt688": true, - "stmt689": true, - "stmt69": true, - "stmt690": true, - "stmt691": true, - "stmt692": true, - "stmt693": true, - "stmt694": true, - "stmt695": true, - "stmt696": true, - "stmt697": true, - "stmt698": true, - "stmt699": true, - "stmt7": true, - "stmt70": true, - "stmt700": true, - "stmt701": true, - "stmt702": true, - "stmt703": true, - "stmt704": true, - "stmt705": true, - "stmt706": true, - "stmt707": true, - "stmt708": true, - "stmt709": true, - "stmt71": true, - "stmt710": true, - "stmt711": true, - "stmt712": true, - "stmt713": true, - "stmt714": true, - "stmt715": true, - "stmt716": true, - "stmt717": true, - "stmt718": true, - "stmt719": true, - "stmt72": true, - "stmt720": true, - "stmt721": true, - "stmt722": true, - "stmt723": true, - "stmt724": true, - "stmt725": true, - "stmt726": true, - "stmt727": true, - "stmt728": true, - "stmt729": true, - "stmt73": true, - "stmt730": true, - "stmt731": true, - "stmt732": true, - "stmt733": true, - "stmt734": true, - "stmt735": true, - "stmt736": true, - "stmt737": true, - "stmt738": true, - "stmt739": true, - "stmt74": true, - "stmt740": true, - "stmt741": true, - "stmt742": true, - "stmt743": true, - "stmt744": true, - "stmt745": true, - "stmt746": true, - "stmt747": true, - "stmt748": true, - "stmt749": true, - "stmt75": true, - "stmt750": true, - "stmt751": true, - "stmt752": true, - "stmt753": true, - "stmt754": true, - "stmt755": true, - "stmt756": true, - "stmt757": true, - "stmt758": true, - "stmt759": true, - "stmt76": true, - "stmt760": true, - "stmt761": true, - "stmt762": true, - "stmt763": true, - "stmt764": true, - "stmt765": true, - "stmt766": true, - "stmt767": true, - "stmt768": true, - "stmt769": true, - "stmt77": true, - "stmt770": true, - "stmt771": true, - "stmt772": true, - "stmt773": true, - "stmt774": true, - "stmt775": true, - "stmt776": true, - "stmt777": true, - "stmt778": true, - "stmt779": true, - "stmt78": true, - "stmt780": true, - "stmt781": true, - "stmt782": true, - "stmt783": true, - "stmt784": true, - "stmt785": true, - "stmt786": true, - "stmt787": true, - "stmt788": true, - "stmt789": true, - "stmt79": true, - "stmt790": true, - "stmt791": true, - "stmt792": true, - "stmt793": true, - "stmt794": true, - "stmt795": true, - "stmt796": true, - "stmt797": true, - "stmt798": true, - "stmt799": true, - "stmt8": true, - "stmt80": true, - "stmt800": true, - "stmt801": true, - "stmt802": true, - "stmt803": true, - "stmt804": true, - "stmt805": true, - "stmt806": true, - "stmt807": true, - "stmt808": true, - "stmt809": true, - "stmt81": true, - "stmt810": true, - "stmt811": true, - "stmt812": true, - "stmt813": true, - "stmt814": true, - "stmt815": true, - "stmt816": true, - "stmt817": true, - "stmt818": true, - "stmt819": true, - "stmt82": true, - "stmt820": true, - "stmt821": true, - "stmt822": true, - "stmt823": true, - "stmt824": true, - "stmt825": true, - "stmt826": true, - "stmt827": true, - "stmt828": true, - "stmt829": true, - "stmt83": true, - "stmt830": true, - "stmt831": true, - "stmt832": true, - "stmt833": true, - "stmt834": true, - "stmt835": true, - "stmt836": true, - "stmt837": true, - "stmt838": true, - "stmt839": true, - "stmt84": true, - "stmt840": true, - "stmt841": true, - "stmt842": true, - "stmt843": true, - "stmt844": true, - "stmt845": true, - "stmt846": true, - "stmt847": true, - "stmt848": true, - "stmt849": true, - "stmt85": true, - "stmt850": true, - "stmt851": true, - "stmt852": true, - "stmt853": true, - "stmt854": true, - "stmt855": true, - "stmt856": true, - "stmt857": true, - "stmt858": true, - "stmt859": true, - "stmt86": true, - "stmt860": true, - "stmt861": true, - "stmt862": true, - "stmt863": true, - "stmt864": true, - "stmt865": true, - "stmt866": true, - "stmt867": true, - "stmt868": true, - "stmt869": true, - "stmt87": true, - "stmt870": true, - "stmt871": true, - "stmt872": true, - "stmt873": true, - "stmt874": true, - "stmt875": true, - "stmt876": true, - "stmt877": true, - "stmt878": true, - "stmt879": true, - "stmt88": true, - "stmt880": true, - "stmt881": true, - "stmt882": true, - "stmt883": true, - "stmt884": true, - "stmt885": true, - "stmt886": true, - "stmt887": true, - "stmt888": true, - "stmt889": true, - "stmt89": true, - "stmt890": true, - "stmt891": true, - "stmt892": true, - "stmt893": true, - "stmt894": true, - "stmt895": true, - "stmt896": true, - "stmt897": true, - "stmt898": true, - "stmt899": true, - "stmt9": true, - "stmt90": true, - "stmt900": true, - "stmt901": true, - "stmt902": true, - "stmt903": true, - "stmt904": true, - "stmt905": true, - "stmt906": true, - "stmt907": true, - "stmt908": true, - "stmt909": true, - "stmt91": true, - "stmt910": true, - "stmt911": true, - "stmt912": true, - "stmt913": true, - "stmt914": true, - "stmt915": true, - "stmt916": true, - "stmt917": true, - "stmt918": true, - "stmt919": true, - "stmt92": true, - "stmt920": true, - "stmt921": true, - "stmt922": true, - "stmt923": true, - "stmt924": true, - "stmt925": true, - "stmt926": true, - "stmt927": true, - "stmt928": true, - "stmt929": true, - "stmt93": true, - "stmt930": true, - "stmt931": true, - "stmt932": true, - "stmt933": true, - "stmt934": true, - "stmt935": true, - "stmt936": true, - "stmt937": true, - "stmt938": true, - "stmt939": true, - "stmt94": true, - "stmt940": true, - "stmt941": true, - "stmt942": true, - "stmt943": true, - "stmt944": true, - "stmt945": true, - "stmt946": true, - "stmt947": true, - "stmt948": true, - "stmt949": true, - "stmt95": true, - "stmt950": true, - "stmt951": true, - "stmt952": true, - "stmt953": true, - "stmt954": true, - "stmt955": true, - "stmt956": true, - "stmt957": true, - "stmt958": true, - "stmt959": true, - "stmt96": true, - "stmt960": true, - "stmt961": true, - "stmt962": true, - "stmt963": true, - "stmt964": true, - "stmt965": true, - "stmt966": true, - "stmt967": true, - "stmt968": true, - "stmt969": true, - "stmt97": true, - "stmt970": true, - "stmt971": true, - "stmt972": true, - "stmt973": true, - "stmt974": true, - "stmt975": true, - "stmt976": true, - "stmt977": true, - "stmt978": true, - "stmt979": true, - "stmt98": true, - "stmt980": true, - "stmt981": true, - "stmt982": true, - "stmt983": true, - "stmt984": true, - "stmt985": true, - "stmt986": true, - "stmt987": true, - "stmt988": true, - "stmt989": true, - "stmt99": true, - "stmt990": true, - "stmt991": true, - "stmt992": true, - "stmt993": true, - "stmt994": true, - "stmt995": true, - "stmt996": true, - "stmt997": true, - "stmt998": true, - "stmt999": true - } -} +{} diff --git a/parser/testdata/02814_create_index_uniq_noop/metadata.json b/parser/testdata/02814_create_index_uniq_noop/metadata.json index 1295a45747..0967ef424b 100644 --- a/parser/testdata/02814_create_index_uniq_noop/metadata.json +++ b/parser/testdata/02814_create_index_uniq_noop/metadata.json @@ -1,5 +1 @@ -{ - "explain_todo": { - "stmt3": true - } -} +{}