Skip to content

Conversation

@manuzhang
Copy link
Member

No description provided.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request modernizes the codebase by replacing traditional switch statements with switch expressions, introduced in Java 14 and made standard in Java 17. The change improves code readability and conciseness by eliminating verbose break statements and directly returning values from switch cases.

Changes:

  • Converted switch statements to switch expressions across the entire codebase
  • Updated cases to use arrow (->) syntax instead of colon (:) syntax
  • Replaced break statements and explicit returns with yield expressions where multi-line case blocks are needed
  • Maintained all existing logic and behavior while reducing code verbosity

Reviewed changes

Copilot reviewed 178 out of 178 changed files in this pull request and generated no comments.

Show a summary per file
File Description
spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/data/TestHelpers.java Converted primitive value retrieval switch to expression
spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/data/RandomData.java Converted two primitive type handling switches to expressions
spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/actions/TestRewritePositionDeleteFilesAction.java Converted record creation switch to expression
spark/v4.1/spark/src/test/java/org/apache/iceberg/spark/TestChangelogIterator.java Converted row type conversion switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/StructInternalRow.java Converted array data conversion switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/SparkRowLevelOperationBuilder.java Converted three switches (build, mode, isolationLevel) to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/SparkMicroBatchStream.java Converted snapshot processing switch to expression with yield for complex cases
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/BaseRowReader.java Converted file format handling switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/source/BaseBatchReader.java Converted batch iterable creation switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/vectorized/VectorizedSparkOrcReaders.java Converted ORC primitive reader switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkPlannedAvroReader.java Converted two Avro reader switches to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetWriters.java Converted two Parquet writer switches to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkParquetReaders.java Converted decimal reader switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcWriter.java Converted ORC writer primitive handling switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkOrcReader.java Converted ORC reader primitive handling switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/data/SparkAvroWriter.java Converted two Avro writer switches to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteTablePathSparkAction.java Converted two file format switches (reader/writer) to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/RewriteManifestsSparkAction.java Converted manifest content switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/actions/BaseSparkAction.java Converted manifest file reading switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteUtil.java Converted distribution mode switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkWriteConf.java Converted four switches (compression codecs, distribution modes) to expressions
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkV2Filters.java Converted predicate filtering switch to expression
spark/v4.1/spark/src/main/java/org/apache/iceberg/spark/SparkFilters.java Converted filter checking switch to expression
snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeIdentifier.java Converted identifier string conversion switch to expression
snowflake/src/main/java/org/apache/iceberg/snowflake/SnowflakeCatalog.java Converted two namespace handling switches to expressions
snowflake/src/main/java/org/apache/iceberg/snowflake/NamespaceHelpers.java Converted two identifier conversion switches to expressions
parquet/src/test/java/org/apache/iceberg/parquet/TestVariantMetrics.java Converted variant value increment switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/VariantWriterBuilder.java Converted two decimal writer switches to expressions
parquet/src/main/java/org/apache/iceberg/parquet/VariantReaderBuilder.java Converted two variant reader switches to expressions
parquet/src/main/java/org/apache/iceberg/parquet/ParquetValueWriters.java Converted position delete getter switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/ParquetValueReaders.java Converted two reader switches (decimal, timestamp) to expressions
parquet/src/main/java/org/apache/iceberg/parquet/ParquetUtil.java Converted int type check switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/ParquetMetrics.java Converted two bound truncation switches to expressions
parquet/src/main/java/org/apache/iceberg/parquet/ParquetConversions.java Converted two conversion switches to expressions
parquet/src/main/java/org/apache/iceberg/parquet/ParquetCodecFactory.java Converted compression codec cache key switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/ParquetAvroWriter.java Converted two primitive writer switches to expressions
parquet/src/main/java/org/apache/iceberg/parquet/ParquetAvroValueReaders.java Converted decimal reader switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/PageIterator.java Converted page iterator factory switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/MessageTypeToType.java Converted primitive type conversion switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/ColumnWriter.java Converted column writer factory switch to expression
parquet/src/main/java/org/apache/iceberg/parquet/ColumnIterator.java Converted column iterator factory switch to expression
parquet/src/main/java/org/apache/iceberg/data/parquet/GenericParquetWriter.java Converted time unit conversion switch to expression
parquet/src/main/java/org/apache/iceberg/data/parquet/GenericParquetReaders.java Converted two reader switches (time, timestamp) to expressions
parquet/src/main/java/org/apache/iceberg/data/parquet/BaseParquetWriter.java Converted two primitive writer switches to expressions
orc/src/main/java/org/apache/iceberg/orc/OrcMetrics.java Converted bound truncation switch to expression
orc/src/main/java/org/apache/iceberg/orc/ExpressionToSearchArgument.java Converted three switches (NaN getter, type, literal) to expressions
orc/src/main/java/org/apache/iceberg/orc/EstimateOrcAvgWidthVisitor.java Converted width estimation switch to expression
orc/src/main/java/org/apache/iceberg/data/orc/GenericOrcWriters.java Converted position delete getter switch to expression
orc/src/main/java/org/apache/iceberg/data/orc/GenericOrcReader.java Converted two type handling switches to expressions
nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java Converted API version switch to expression
mr/src/main/java/org/apache/iceberg/mr/mapreduce/IcebergInputFormat.java Converted file format switch to expression
kafka-connect (multiple files) Converted various switches to expressions across data conversion, transform, and event classes
flink/v2.1/flink (multiple files) Converted numerous switches to expressions across source, sink, data, and maintenance components
data/src/test/java and data/src/main/java Converted file format and delete handling switches to expressions
core/src/test/java and core/src/main/java Converted extensive switches across REST, expressions, types, transforms, avro, metadata, and catalog classes
aws/src/main/java/org/apache/iceberg/aws/AwsClientFactories.java Converted HTTP client type switch to expression
arrow/src/main/java (multiple files) Converted switches to expressions in Arrow reader and accessor classes
api/src/test/java and api/src/main/java Converted switches to expressions in utility, expression, transform, type, and variant classes

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@manuzhang manuzhang marked this pull request as ready for review January 29, 2026 09:07
@manuzhang manuzhang requested a review from pvary January 29, 2026 15:17
@pvary
Copy link
Contributor

pvary commented Jan 30, 2026

Created a dev discussion thread to see the communities opinion about introducing sweeping changes: https://lists.apache.org/thread/k2cg9v6rxs8lb74qbok166k68h1r0f3k

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants