From bb338ef9a551bd61a2efabaea51221569dc5f78e Mon Sep 17 00:00:00 2001 From: chenjianjin <2322485950@qq.com> Date: Thu, 13 Aug 2026 12:59:57 +0800 Subject: [PATCH] fix: support SQL Server CREATE INDEX INCLUDE columns --- src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 4 ++++ .../net/sf/jsqlparser/statement/create/CreateIndexTest.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index f1711daaf..5da3aa181 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -10507,6 +10507,7 @@ CreateIndex CreateIndex(): CreateIndex createIndex = new CreateIndex(); Table table = null; List colNames; + List includeColumns; String indexType; Index index = null; List parameter = new ArrayList(); @@ -10535,6 +10536,9 @@ CreateIndex CreateIndex(): ) ) colNames = IndexColumnsWithParamsList() + [ includeColumns=ColumnsNamesList() + { tailParameters.add("INCLUDE (" + String.join(", ", includeColumns) + ")"); } + ] ( LOOKAHEAD(2) parameter=CreateParameter() { tailParameters.addAll(parameter); } )* { index.setColumns(colNames); diff --git a/src/test/java/net/sf/jsqlparser/statement/create/CreateIndexTest.java b/src/test/java/net/sf/jsqlparser/statement/create/CreateIndexTest.java index 2096b9730..40b7504f7 100644 --- a/src/test/java/net/sf/jsqlparser/statement/create/CreateIndexTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/create/CreateIndexTest.java @@ -174,4 +174,9 @@ public void testCreateIndexVisibility() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("CREATE INDEX idx_a ON t1 (a) INVISIBLE", true); assertSqlCanBeParsedAndDeparsed("CREATE INDEX idx_a ON t1 (a) VISIBLE", true); } + + @Test + public void testCreateIndexIncludeIssue2459() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("CREATE INDEX idx_a ON t1 (a) INCLUDE (b, c)"); + } }