Skip to content

[#10302] fix(spark-connector): handle Hive default partition token in SHOW PARTITIONS#11290

Merged
diqiu50 merged 1 commit into
apache:mainfrom
mchades:fix-10302-show-partitions-null-partition
May 29, 2026
Merged

[#10302] fix(spark-connector): handle Hive default partition token in SHOW PARTITIONS#11290
diqiu50 merged 1 commit into
apache:mainfrom
mchades:fix-10302-show-partitions-null-partition

Conversation

@mchades
Copy link
Copy Markdown
Contributor

@mchades mchades commented May 28, 2026

What changes were proposed in this pull request?

This PR fixes SHOW PARTITIONS failure in Spark connector when a Hive partition value is null and represented as the default Hive partition token for non-string partition columns.

Changes include:

  • Treat __HIVE_DEFAULT_PARTITION__ and HIVE_DEFAULT_PARTITION as null in SparkPartitionUtils.getSparkPartitionValue(...).
  • Add unit assertions in TestSparkPartitionUtils to verify token-to-null conversion.
  • Extend Hive integration test coverage in SparkHiveCatalogIT.testManagePartitionTable with a null INT partition scenario for SHOW PARTITIONS.

Why are the changes needed?

SHOW PARTITIONS could throw UnsupportedOperationException / NumberFormatException by trying to parse Hive default partition tokens (for null values) as numeric types.

Fix: #10302

Does this PR introduce any user-facing change?

Yes. SHOW PARTITIONS now works for Hive tables containing null values in non-string partition columns.

How was this patch tested?

  • ./gradlew :spark-connector:spark-common:test --tests org.apache.gravitino.spark.connector.utils.TestSparkPartitionUtils
  • ./gradlew :spark-connector:spark-3.5:test --tests org.apache.gravitino.spark.connector.integration.test.hive.SparkHiveCatalogIT35.testManagePartitionTable -PskipDockerTests=false
  • ./gradlew :spark-connector:spark-3.4:test --tests org.apache.gravitino.spark.connector.integration.test.hive.SparkHiveCatalogIT34.testManagePartitionTable -PskipDockerTests=false
  • ./gradlew :spark-connector:spark-3.3:test --tests org.apache.gravitino.spark.connector.integration.test.hive.SparkHiveCatalogIT33.testManagePartitionTable -PskipDockerTests=false

@mchades mchades requested review from diqiu50 and roryqi May 28, 2026 14:40
@github-actions
Copy link
Copy Markdown

Code Coverage Report

Overall Project 66.54% +0.13% 🟢
Files changed 75.43% 🟢

Module Coverage
aliyun 1.72% 🔴
api 46.82% 🟢
authorization-common 85.96% 🟢
aws 3.66% 🔴
azure 2.47% 🔴
catalog-common 10.04% 🔴
catalog-fileset 80.33% 🟢
catalog-glue 66.08% 🟢
catalog-hive 79.55% 🟢
catalog-jdbc-clickhouse 80.02% 🟢
catalog-jdbc-common 45.31% 🟢
catalog-jdbc-doris 80.28% 🟢
catalog-jdbc-hologres 54.03% 🟢
catalog-jdbc-mysql 79.23% 🟢
catalog-jdbc-oceanbase 78.38% 🟢
catalog-jdbc-postgresql 82.29% 🟢
catalog-jdbc-starrocks 78.51% 🟢
catalog-kafka 77.01% 🟢
catalog-lakehouse-generic 44.89% 🟢
catalog-lakehouse-hudi 79.1% 🟢
catalog-lakehouse-iceberg 85.73% 🟢
catalog-lakehouse-paimon 79.29% 🟢
catalog-model 77.72% 🟢
cli 44.51% 🟢
client-java 77.94% +0.14% 🟢
common 49.99% 🟢
core 82.36% 🟢
filesystem-hadoop3 76.97% 🟢
flink 0.0% 🔴
flink-common 41.37% 🟢
flink-runtime 0.0% 🔴
gcp 14.12% 🔴
hadoop-common 10.39% 🔴
hive-metastore-common 53.26% 🟢
iceberg-common 54.98% 🟢
iceberg-rest-server 69.99% -0.58% 🟢
idp-basic 89.36% -1.23% 🟢
integration-test-common 0.0% 🔴
jobs 66.17% 🟢
lance-common 20.83% 🔴
lance-rest-server 60.27% 🟢
lineage 53.02% 🟢
optimizer 82.95% 🟢
optimizer-api 21.95% 🔴
server 85.1% -1.18% 🟢
server-common 72.85% -0.03% 🟢
spark 32.79% 🔴
spark-common 39.75% +3.3% 🔴
trino-connector 39.44% 🔴
Files
Module File Coverage
client-java GravitinoClientBase.java 83.53% 🟢
iceberg-rest-server IcebergAuthorizationMetadata.java 100.0% 🟢
IcebergViewRenameOperations.java 93.75% 🟢
IcebergTableOperations.java 79.9% 🟢
IcebergMetadataAuthorizationMethodInterceptor.java 75.81% 🟢
IcebergViewOperations.java 71.05% 🟢
BaseMetadataAuthorizationMethodInterceptor.java 53.12% 🔴
LoadTableAuthzHandler.java 0.0% 🔴
idp-basic IdpUserGroupManager.java 100.0% 🟢
AlreadyExistsException.java 100.0% 🟢
IdpGroupMetaBaseSQLProvider.java 100.0% 🟢
IdpUserMetaBaseSQLProvider.java 100.0% 🟢
IdpGroupMetaH2Provider.java 100.0% 🟢
IdpUserMetaH2Provider.java 100.0% 🟢
IdpGroupMetaPostgreSQLProvider.java 100.0% 🟢
IdpUserMetaPostgreSQLProvider.java 100.0% 🟢
IdpUserMetaService.java 96.43% 🟢
IdpGroupMetaService.java 95.12% 🟢
IdpUserMetaSQLProviderFactory.java 92.31% 🟢
IdpGroupMetaSQLProviderFactory.java 90.91% 🟢
IdpRESTUtils.java 80.0% 🟢
IdpSQLExceptionConverter.java 73.68% 🟢
NotFoundException.java 50.0% 🔴
IdpRESTFeature.java 50.0% 🔴
IdpUser.java 46.67% 🔴
IdpGroupMetaMapper.java 0.0% 🔴
IdpUserMetaMapper.java 0.0% 🔴
IdpBasicBinder.java 0.0% 🔴
server TableOperations.java 97.22% 🟢
GravitinoInterceptionService.java 58.76% 🔴
AuthorizeExecutorFactory.java 25.0% 🔴
LoadTableAuthorizationExecutor.java 0.0% 🔴
server-common AuthorizationExpression.java 0.0% 🔴
AuthorizationExpressionConstants.java 0.0% 🔴
spark-common SparkPartitionUtils.java 88.89% 🟢

Copy link
Copy Markdown
Contributor

@diqiu50 diqiu50 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@diqiu50 diqiu50 merged commit 636288c into apache:main May 29, 2026
32 of 33 checks passed
@mchades mchades deleted the fix-10302-show-partitions-null-partition branch May 29, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug report] Show partitions fails when partition column is empty and non-string type

2 participants