You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hudi.apache.org by "yihua (via GitHub)" <gi...@apache.org> on 2026/07/07 18:11:36 UTC

[PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

yihua opened a new pull request, #19218:
URL: https://github.com/apache/hudi/pull/19218

   ### Describe the issue this Pull Request addresses
   
   The Hudi-specific surface of the extended SQL parser has thin unit coverage. This adds a focused ScalaTest suite for the parts that are Hudi-owned and survive across Spark versions: the index DDL commands (CREATE / DROP / SHOW / REFRESH INDEX) and the Hudi column types (BLOB, VECTOR). This is test-only and adds no production code.
   
   ### Summary and Changelog
   
   Adds `TestExtendedSqlParserCoverage` under `hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/`, which already runs on every Spark version leg. The suite is intentionally scoped to the Hudi-specific parser surface only; it does not touch general query/DML parsing and does not add time-travel tests (those are already covered by `TestTimeTravelTable`).
   
   - Index DDL is asserted on the parsed logical plan directly (`spark.sessionState.sqlParser.parsePlan`), since `CreateIndex`, `DropIndex`, `HoodieShowIndexes`, and `RefreshIndex` are Hudi-owned plan classes that are stable across Spark versions. Each test asserts the plan class plus the index name and target table.
   - Column types (BLOB, VECTOR) are asserted through the catalog schema (`catalog.getTableMetadata(TableIdentifier(t)).schema`) rather than on `CreateTable` plan fields, because those fields differ between Spark 3.5 (`tableSchema: StructType`) and 4.x (`columns: Seq[ColumnDefinition]`). The catalog schema check stays version-agnostic.
   
   No code was copied.
   
   ### Impact
   
   None. Test-only change; no public API or user-facing behavior change.
   
   ### Risk Level
   
   low
   
   Test-only addition. The suite avoids matching on version-specific plan fields and only asserts on Hudi-owned plan classes and the version-agnostic catalog schema, so it passes across the supported Spark versions.
   
   ### Documentation Update
   
   none
   
   ### Contributor's checklist
   
   - [ ] Read through [contributor's guide](https://hudi.apache.org/contribute/how-to-contribute)
   - [ ] Enough context is provided in the sections above
   - [ ] Adequate tests were added if applicable
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19218:
URL: https://github.com/apache/hudi/pull/19218#discussion_r3546271871


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.hudi.common.schema.{HoodieSchema, HoodieSchemaType}
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+import org.apache.spark.sql.types.{ArrayType, BlobType, FloatType}
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  // parsePlan is purely syntactic and never consults the catalog, so the index-DDL
+  // tests below parse against table names that are never created.
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {

Review Comment:
   Good catch - BLOB/VECTOR are covered by `TestCreateTable`/`TestBlobDataType`, and create/drop/show by `TestIndexSyntax`. Went one step further than narrowing: dropped the suite entirely and added the missing refresh-index assertions to `TestIndexSyntax`'s "Test Create/Drop/Show/Refresh Index" test, which promised refresh in its title but never exercised it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4910274113

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 5f9adeaefb85ebb0156eb21632b975ff02562f3f Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19218:
URL: https://github.com/apache/hudi/pull/19218#discussion_r3545389946


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, b blob) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "b"))

Review Comment:
   Resolved.



##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, b blob) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "b"))
+  }
+
+  test("Test parse a VECTOR column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, v vector(3)) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "v"))

Review Comment:
   Resolved.



##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")

Review Comment:
   Resolved.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4916226990

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 5f9adeaefb85ebb0156eb21632b975ff02562f3f Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366) 
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4918036493

   Scoping note: this PR changed shape during review. The original `TestExtendedSqlParserCoverage` suite duplicated existing coverage (BLOB/VECTOR create-table and `hudi_type` assertions in `TestCreateTable`/`TestBlobDataType`; create/drop/show index parse+resolution in `TestIndexSyntax`), so it was dropped.
   
   The net change as of the current head is just: add refresh-index parse+resolution assertions to `TestIndexSyntax`'s "Test Create/Drop/Show/Refresh Index" test - the only index DDL statement that had no coverage (the test title promised it but never exercised it).


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19218:
URL: https://github.com/apache/hudi/pull/19218#discussion_r3544542537


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, b blob) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "b"))

Review Comment:
   Coverage strength: the test is titled "parse a BLOB column type", but asserting only that a column named `b` exists would pass even if `blob` mapped to the wrong type -- so it does not actually verify the type parsed. A BLOB column carries `TYPE_METADATA_FIELD == HoodieSchemaType.BLOB.name()` (and dataType `BlobType()`), like `TestCreateTable`'s BLOB test asserts. Checking that instead of just the name makes this real coverage, e.g. `schema.find(_.name == "b").get.metadata.getString(HoodieSchema.TYPE_METADATA_FIELD) == HoodieSchemaType.BLOB.name()` (adds two imports).



##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, b blob) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "b"))
+  }
+
+  test("Test parse a VECTOR column type into the catalog schema") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, v vector(3)) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val schema = spark.sessionState.catalog.getTableMetadata(TableIdentifier(tableName)).schema
+    assert(schema.exists(_.name == "v"))

Review Comment:
   Same as the BLOB test: this passes as long as a column `v` exists, regardless of its type. This is the first SQL create-table VECTOR coverage, so it is worth making the assertion count: a `vector(3)` column carries `TYPE_METADATA_FIELD == "VECTOR(3)"` (canonical form, FLOAT default dropped) and a dataType of `ArrayType(FloatType, containsNull = false)`. Asserting one of those actually pins that `vector(3)` parsed to the VECTOR type.



##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    spark.sql(
+      s"""
+         |create table $tableName (id int, name string) using hudi
+         |tblproperties(primaryKey = 'id')
+         |""".stripMargin)
+
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")

Review Comment:
   Minor (coverage-neutral): `parsePlan` is purely syntactic and never consults the catalog, so the `create table` setup above is unused in all four index-DDL parse tests (CREATE/DROP/SHOW/REFRESH) -- the parse yields the same `UnresolvedRelation` whether or not the table exists. Dropping it makes these run faster and reads more clearly as parse-only tests.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4916174024

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "UNKNOWN",
       "url" : "TBD",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 5f9adeaefb85ebb0156eb21632b975ff02562f3f Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366) 
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous commented on code in PR #19218:
URL: https://github.com/apache/hudi/pull/19218#discussion_r3546271871


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.hudi.common.schema.{HoodieSchema, HoodieSchemaType}
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+import org.apache.spark.sql.types.{ArrayType, BlobType, FloatType}
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  // parsePlan is purely syntactic and never consults the catalog, so the index-DDL
+  // tests below parse against table names that are never created.
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {

Review Comment:
   Good catch - you are right on all four: BLOB/VECTOR are covered by `TestCreateTable`/`TestBlobDataType`, and create/drop/show by `TestIndexSyntax`. Went one step further than narrowing: dropped the suite entirely and added the missing refresh-index assertions to `TestIndexSyntax`'s "Test Create/Drop/Show/Refresh Index" test, which promised refresh in its title but never exercised it.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4917892619

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "UNKNOWN",
       "url" : "TBD",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   * 90ed05171448ad2d018c2b09bf4bb6377d3a9508 UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4918523301

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     }, {
       "hash" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396",
       "triggerID" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   * 90ed05171448ad2d018c2b09bf4bb6377d3a9508 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395) 
   * b5bbb7830b0e86a50e2b63887834f15101370ce3 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4907166496

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "UNKNOWN",
       "url" : "TBD",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 5f9adeaefb85ebb0156eb21632b975ff02562f3f UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4907212574

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 5f9adeaefb85ebb0156eb21632b975ff02562f3f Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4918675012

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     }, {
       "hash" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396",
       "triggerID" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * 90ed05171448ad2d018c2b09bf4bb6377d3a9508 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395) 
   * b5bbb7830b0e86a50e2b63887834f15101370ce3 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4917050564

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "wombatu-kun (via GitHub)" <gi...@apache.org>.
wombatu-kun commented on code in PR #19218:
URL: https://github.com/apache/hudi/pull/19218#discussion_r3545384105


##########
hudi-spark-datasource/hudi-spark/src/test/scala/org/apache/spark/sql/hudi/command/index/TestExtendedSqlParserCoverage.scala:
##########
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.hudi.command.index
+
+import org.apache.hudi.common.schema.{HoodieSchema, HoodieSchemaType}
+
+import org.apache.spark.sql.catalyst.TableIdentifier
+import org.apache.spark.sql.catalyst.analysis.UnresolvedRelation
+import org.apache.spark.sql.catalyst.plans.logical.{CreateIndex, DropIndex, HoodieShowIndexes, RefreshIndex}
+import org.apache.spark.sql.hudi.common.HoodieSparkSqlTestBase
+import org.apache.spark.sql.types.{ArrayType, BlobType, FloatType}
+
+/**
+ * Coverage for the Hudi-specific surface of the extended SQL parser: index DDL
+ * (CREATE / DROP / SHOW / REFRESH INDEX) and Hudi column types (BLOB, VECTOR).
+ *
+ * Index DDL is asserted on the parsed logical plan directly, since those plan
+ * classes are Hudi-owned and stable across Spark versions. Column types are
+ * asserted through the catalog schema, which stays version-agnostic even though
+ * the CreateTable plan fields differ between Spark 3.5 and 4.x.
+ */
+class TestExtendedSqlParserCoverage extends HoodieSparkSqlTestBase {
+
+  // parsePlan is purely syntactic and never consults the catalog, so the index-DDL
+  // tests below parse against table names that are never created.
+  private def parse(sql: String) = spark.sessionState.sqlParser.parsePlan(sql)
+
+  private def tableName(plan: org.apache.spark.sql.catalyst.plans.logical.LogicalPlan): Seq[String] =
+    plan.children.head.asInstanceOf[UnresolvedRelation].multipartIdentifier
+
+  test("Test parse CREATE INDEX into a CreateIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"create index idx_name on $tableName using bloom (name)")
+    assertResult(classOf[CreateIndex].getName)(plan.getClass.getName)
+    val createIndex = plan.asInstanceOf[CreateIndex]
+    assertResult("idx_name")(createIndex.indexName)
+    assertResult("bloom")(createIndex.indexType)
+    assert(this.tableName(createIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse DROP INDEX into a DropIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"drop index idx_name on $tableName")
+    assertResult(classOf[DropIndex].getName)(plan.getClass.getName)
+    val dropIndex = plan.asInstanceOf[DropIndex]
+    assertResult("idx_name")(dropIndex.indexName)
+    assert(this.tableName(dropIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse SHOW INDEXES into a HoodieShowIndexes plan") {
+    val tableName = generateTableName
+    val plan = parse(s"show indexes from $tableName")
+    assertResult(classOf[HoodieShowIndexes].getName)(plan.getClass.getName)
+    assert(this.tableName(plan).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse REFRESH INDEX into a RefreshIndex plan") {
+    val tableName = generateTableName
+    val plan = parse(s"refresh index idx_name on $tableName")
+    assertResult(classOf[RefreshIndex].getName)(plan.getClass.getName)
+    val refreshIndex = plan.asInstanceOf[RefreshIndex]
+    assertResult("idx_name")(refreshIndex.indexName)
+    assert(this.tableName(refreshIndex).last.equalsIgnoreCase(tableName))
+  }
+
+  test("Test parse a BLOB column type into the catalog schema") {

Review Comment:
   This BLOB test (and the VECTOR test below) reproduces coverage that `TestCreateTable` and `TestBlobDataType` already provide: same create-table into the catalog, same `hudi_type` metadata and `dataType` assertions. The CREATE/DROP/SHOW index tests likewise overlap `TestIndexSyntax`, which parses the same DDL and asserts the index name, type, and options. REFRESH INDEX is the only case with no existing coverage. Consider narrowing this suite to the genuinely new gap (REFRESH INDEX parse), or, if the intent is a parse-only layer distinct from those suites, note that so the overlap reads as deliberate.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4918172175

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     }, {
       "hash" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "status" : "UNKNOWN",
       "url" : "TBD",
       "triggerID" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   * 90ed05171448ad2d018c2b09bf4bb6377d3a9508 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395) 
   * b5bbb7830b0e86a50e2b63887834f15101370ce3 UNKNOWN
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "voonhous (via GitHub)" <gi...@apache.org>.
voonhous merged PR #19218:
URL: https://github.com/apache/hudi/pull/19218


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4918053492

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "PENDING",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * ffc943cd7b560f612c8a7d7c25137d85fa7f98fd Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393) 
   * 90ed05171448ad2d018c2b09bf4bb6377d3a9508 Azure: [PENDING](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] test(spark): add extended SQL parser coverage for index DDL and Hudi column types [hudi]

Posted by "hudi-bot (via GitHub)" <gi...@apache.org>.
hudi-bot commented on PR #19218:
URL: https://github.com/apache/hudi/pull/19218#issuecomment-4919135852

   <!--
   Meta data
   {
     "version" : 1,
     "metaDataEntries" : [ {
       "hash" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15366",
       "triggerID" : "5f9adeaefb85ebb0156eb21632b975ff02562f3f",
       "triggerType" : "PUSH"
     }, {
       "hash" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15393",
       "triggerID" : "ffc943cd7b560f612c8a7d7c25137d85fa7f98fd",
       "triggerType" : "PUSH"
     }, {
       "hash" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "status" : "DELETED",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15395",
       "triggerID" : "90ed05171448ad2d018c2b09bf4bb6377d3a9508",
       "triggerType" : "PUSH"
     }, {
       "hash" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "status" : "SUCCESS",
       "url" : "https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396",
       "triggerID" : "b5bbb7830b0e86a50e2b63887834f15101370ce3",
       "triggerType" : "PUSH"
     } ]
   }-->
   ## CI report:
   
   * b5bbb7830b0e86a50e2b63887834f15101370ce3 Azure: [SUCCESS](https://dev.azure.com/apachehudi/a1a51da7-8592-47d4-88dc-fd67bed336bb/_build/results?buildId=15396) 
   
   <details>
   <summary>Bot commands</summary>
     @hudi-bot supports the following commands:
   
    - `@hudi-bot run azure` re-run the last Azure build
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@hudi.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org