Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
da0ad6a
OpenAPI: Promote the S3 signing endpoint to the main spec (#15450)
adutra Mar 31, 2026
ee1878f
API, Core: Introduce foundational types for V4 manifest support (#15049)
anoopj Apr 1, 2026
8504800
Spark 4.1: Fix async microbatch plan bugs (#15670)
RjLi13 Apr 1, 2026
fd21d66
GCS: Throw NotFoundException for nonexisting input GCS file (#15734)
findinpath Apr 1, 2026
05d7ece
Spark 4.1: Control merge schema evolution by table property (#15825)
szehon-ho Apr 1, 2026
6103dab
Remove v4 references from javadocs (#15851)
anoopj Apr 1, 2026
ff298a6
BigQuery: Fix dependency leak into runtime Jars (#15655)
rambleraptor Apr 1, 2026
d204e5e
Spec: Fix typos and stray formatting in gcm-stream-spec and puffin-sp…
thswlsqls Apr 1, 2026
88d5538
Docs: Fix stale version label and missing integrations in mkdocs-dev.…
thswlsqls Apr 1, 2026
245637a
Build: Add runtime dependency guard for bundled artifacts (#15855)
RussellSpitzer Apr 1, 2026
e8b6191
Aliyun: Remove leaked transitive dependencies. (#15858)
rdblue Apr 2, 2026
3e22f85
Docs: Fix missing semicolons in Java API Quickstart imports (#15864)
atsuyam Apr 2, 2026
1a2a8a5
Spark (4.0, 3.5): Set data file sort_order_id in manifest for writes …
jbewing Apr 2, 2026
3550bce
Core: Upgrade Jetty to 12.1.5 (#10837)
nastra Apr 3, 2026
9a939d6
Build: bump shadow-gradle-plugin to 9.4.1 (#15835)
MaxNevermind Apr 3, 2026
775f55b
Build: Bump mkdocs-redirects from 1.2.2 to 1.2.3 (#15885)
dependabot[bot] Apr 5, 2026
4575b6a
Build: Bump astral-sh/setup-uv from 7.6.0 to 8.0.0 (#15888)
dependabot[bot] Apr 5, 2026
cc90c0e
Build: Bump org.openapitools:openapi-generator-gradle-plugin (#15886)
dependabot[bot] Apr 5, 2026
85cd18d
Build: Bump com.google.cloud:libraries-bom from 26.78.0 to 26.79.0 (#…
dependabot[bot] Apr 5, 2026
c6ff39a
Build: Bump software.amazon.awssdk:bom from 2.42.18 to 2.42.23 (#15890)
dependabot[bot] Apr 5, 2026
a18ae8a
Build: Bump jetty from 12.1.5 to 12.1.7 (#15887)
dependabot[bot] Apr 5, 2026
b25cb52
Build: Bump io.netty:netty-buffer from 4.2.10.Final to 4.2.12.Final (…
dependabot[bot] Apr 5, 2026
ec2de91
AWS: Add chunked encoding configuration for S3 requests (#15242)
plusplusjiajia Apr 5, 2026
e1a2713
Core : Make REST scan planning poll timeout configurable (#15863)
rahulsmahadev Apr 7, 2026
6687084
Spark 4.1: Add runtime-deps.txt. (#15860)
rdblue Apr 10, 2026
9586899
Update documentation on Spark migrate procedure (#15874)
wypoon Apr 10, 2026
1b27a58
Docs: Add Hive Metastore schema validation warnings for schema evolut…
jackylee-ch Apr 10, 2026
4c21592
Build: Fix zizmor and Spark 4.1 runtime-deps CI failures (#15937)
huaxingao Apr 10, 2026
9242be6
Revert "Build: bump shadow-gradle-plugin to 9.4.1 (#15835)" (#15941)
nastra Apr 11, 2026
7e4aa89
AWS, Core: Switch Jetty to use new Compression API for GZIP (#15043)
nastra Apr 11, 2026
b156f34
pass dockerhub token the safely (#15940)
dhruvarya-db Apr 12, 2026
e4d1533
API: Include size unit in avg/max value size fields (#15939)
nastra Apr 12, 2026
5bfabc3
Build: Bump datamodel-code-generator from 0.55.0 to 0.56.0 (#15949)
dependabot[bot] Apr 12, 2026
3a6863d
Build: Bump jetty from 12.1.7 to 12.1.8 (#15951)
dependabot[bot] Apr 12, 2026
72c993c
Build: Bump software.amazon.awssdk:bom from 2.42.23 to 2.42.28 (#15952)
dependabot[bot] Apr 12, 2026
beef60d
API: Fix TableIdentifier.toLowerCase to use Locale.ROOT for namespace…
Govindarajan-D Apr 13, 2026
0ed7f77
Flink: Fix checkArgument message for flink streaming (#15907)
genxiong7 Apr 13, 2026
56092bc
Parquet: Fix NPE in ParquetAvroWriter when schema contains variant ty…
nssalian Apr 13, 2026
3f18cd4
Kafka Connect: Fix source offset tracking when SMTs modify the record…
kumarpritam863 Apr 13, 2026
2a6f127
Core: Expose MetricsConfig.from method with 3-parameter version (#15819)
ebyhr Apr 13, 2026
5d1840c
Docs: Add Sail to integration and vendor (#15920)
lonless9 Apr 14, 2026
8808f77
ADLS: Throw NotFoundException for inexistent input file (#15806)
findinpath Apr 14, 2026
87c7434
Build: Ban toLowerCase/toUpperCase without locale (#15960)
ebyhr Apr 14, 2026
ffb095d
API, Core: Move stats classes to core as package-private (#15971)
nastra Apr 14, 2026
5e3c284
API: Relax partition name check when source column is dropped (#15967)
RussellSpitzer Apr 14, 2026
dfe16c1
Core, API, Spark: Add FileContent.fromId (#15953)
anoopj Apr 15, 2026
893528c
Fix typos in javadoc/comment: 'intialize', 'seperated' (#15978)
MukundaKatta Apr 15, 2026
b710f47
Build: Fix codeql-action version comment to match pinned SHA (#15985)
rmoff Apr 15, 2026
3e56b52
Core: Add fromId to EntryStatus and ManifestEntry.Status (#15983)
anoopj Apr 15, 2026
fa4e978
ci: remove zizmor ignore for allowlist-check, pin to main (#15987)
kevinjqliu Apr 15, 2026
304c00f
Spec: Add 404 response for config endpoint (#15746)
oguzhanunlu Apr 15, 2026
4414526
Core: Optimize RoaringPositionBitmap.setRange with native range API (…
Baunsgaard Apr 15, 2026
8f30d83
Core: Introduce default values in RESTCatalogProperties (#15873)
gaborkaszab Apr 15, 2026
9418842
Hive encryption nits (#14659)
smaheshwar-pltr Apr 15, 2026
20ca6c3
Update Rust status on the site (#15709)
CTTY Apr 16, 2026
0babf7d
Core: Fix StructLikeWrapper.equals exception with mismatched partitio…
ebyhr Apr 16, 2026
46c1101
API: Fix FileRange validation to reject negative offset/length (#15926)
barry3406 Apr 16, 2026
74acec7
Docs: Replace deprecated 'compile' with 'implementation' in Gradle sn…
yadavay-amzn Apr 16, 2026
1a6a488
Build: Ignore `.githooks` (#15909)
manuzhang Apr 16, 2026
f0cf4de
Docs: Document that positionDeleteWriteBuilder is for format-version …
lilei1128 Apr 16, 2026
f2ed6a9
AWS: Close custom AwsCredentialsProvider in RESTSigV4AuthSession (#15…
XJDKC Apr 16, 2026
dde712e
Data: Clean engineProjection in BaseFormatModelTests (#15995)
Guosmilesmile Apr 16, 2026
7897d57
Flink: Add passthroughRecords option to DynamicIcebergSink (#15433)
sqd Apr 17, 2026
ecbe8a8
Build: set zizmor min-severity and min-confidence to medium (#16001)
kevinjqliu Apr 17, 2026
53fde56
Docs: Add Apache Hive 4.2 to website (#15998)
okumin Apr 17, 2026
8f1f483
Flink: Set generator parallelism to match input in DynamicIcebergSink…
sachinnn99 Apr 17, 2026
69d7bfa
Docs: Sync Go implementation status with iceberg-go (#16021)
tanmayrauth Apr 18, 2026
54cdbcd
Build: Bump mkdocs-rss-plugin from 1.17.9 to 1.18.1 (#16036)
dependabot[bot] Apr 19, 2026
f66305a
Flink 2.1: Fix forward-writer chaining regression in DynamicIcebergSi…
drexler-sky Apr 19, 2026
3111ba5
Build: Bump com.azure:azure-sdk-bom from 1.3.5 to 1.3.6 (#16037)
dependabot[bot] Apr 19, 2026
c66bd68
Build: Bump at.yawk.lz4:lz4-java from 1.10.4 to 1.11.0 (#16038)
dependabot[bot] Apr 19, 2026
9205427
Build: Bump com.google.errorprone:error_prone_annotations (#16039)
dependabot[bot] Apr 19, 2026
55f8923
Build: Bump docker/build-push-action from 7.0.0 to 7.1.0 (#16041)
dependabot[bot] Apr 19, 2026
bfccee9
Build: Bump org.roaringbitmap:RoaringBitmap from 1.6.13 to 1.6.14 (#1…
dependabot[bot] Apr 19, 2026
4983954
Build: Bump software.amazon.awssdk:bom from 2.42.28 to 2.42.33 (#16040)
dependabot[bot] Apr 19, 2026
f984c28
Flink: Backport add passthroughRecords option to DynamicIcebergSink (…
sqd Apr 20, 2026
a8b7ba6
Core: Expose HostnameVerificationPolicy in TLSConfigurer (#15500)
adutra Apr 20, 2026
bbd1212
Add .factorypath to .gitignore (#16067)
wangyum Apr 21, 2026
d4db77b
Spark: Replace deprecated registerTempTable with createOrReplaceTempV…
drexler-sky Apr 21, 2026
1f0579f
AWS: Add proxy system property and environment variable configuration…
mervyn-lobo Apr 21, 2026
a675f88
Kafka Connect: Do not fail if no partitions assigned (#15955)
kumarpritam863 Apr 21, 2026
5dae5fc
Core: Use Stream overload for reading response in HTTPClient (#15648)
alpbeysir Apr 21, 2026
017ba2f
Spark: Fix RoaringBitmap version in runtime-deps.txt (#16076)
ebyhr Apr 22, 2026
4a31e51
Core: Use Idiomatic ThreadLocal cleanup in CommitMetadata (#15284) (#…
yadavay-amzn Apr 22, 2026
5f80bc3
Spark: fix delete from branch for canDeleteWhere where it does not re…
yingjianwu98 Apr 22, 2026
844a0ab
Kafka Connect: Support VARIANT when record convert (#15283)
seokyun-ha-toss Apr 22, 2026
c5a0963
REST Spec: Clarify identifier uniqueness across tables and views (#15…
stevenzwu Apr 23, 2026
2e153ca
Spark 3.4, 3.5, 4.0: Include snapshotId and branch in SparkTable equa…
bharos Apr 23, 2026
a4386b9
Core, Spark: Verify that TRUNCATE removes orphaned DVs (#16078)
nastra Apr 23, 2026
1d5463f
API: Implement notStartsWith bounds check in StrictMetricsEvaluator (…
bharos Apr 23, 2026
52092cd
Core: Add implementations of v4 TrackedFile interfaces (#15854)
anoopj Apr 23, 2026
8f61167
Validate manifest sequence numbers are equal during inheritance (#16091)
anoopj Apr 23, 2026
0e4f447
Data: Add TCK tests for metrics collection in BaseFormatModelTests (#…
Guosmilesmile Apr 24, 2026
f475ccb
ORC: Fix connection leak in OrcIterable (#16086)
deniskuzZ Apr 24, 2026
57b7c2b
API: Use column bounds to evaluate startsWith in StrictMetricsEvaluat…
bharos Apr 24, 2026
8c217a3
Flink: Fix watermark value which should be min timestamp minus one (#…
shanzi Apr 24, 2026
03347ff
Data: Add TCK tests for Metadata Columns in BaseFormatModelTests (#15…
Guosmilesmile Apr 24, 2026
a287f09
Build: Check runtime deps baseline for all engine versions in CI (#16…
RussellSpitzer Apr 24, 2026
65faa6f
Runtimes, Bundles: Add runtime-deps.txt files to track dependencies (…
kevinjqliu Apr 24, 2026
f29a182
GCP Bundle: Remove JSR 305 (#16106)
rdblue Apr 25, 2026
3d4c6e0
test: add ns1/ns2 to RCK view test namespace purge list (#16050)
0xMALVEE Apr 25, 2026
f7ca134
Build: Bump zizmorcore/zizmor-action from 0.5.2 to 0.5.3 (#16122)
dependabot[bot] Apr 26, 2026
dd93aac
Build: Bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (#16121)
dependabot[bot] Apr 26, 2026
180e399
Build: Bump org.xerial:sqlite-jdbc from 3.51.3.0 to 3.53.0.0 (#16120)
dependabot[bot] Apr 26, 2026
22918cf
Build: Bump github/codeql-action from 4.35.1 to 4.35.2 (#16118)
dependabot[bot] Apr 26, 2026
c213f5e
Build: Bump bouncycastle from 1.82 to 1.84 (#16117)
dependabot[bot] Apr 26, 2026
5acbb7a
Build: Bump guava from 33.5.0-jre to 33.6.0-jre (#16116)
dependabot[bot] Apr 26, 2026
bd7096e
Build: Bump mkdocs-rss-plugin from 1.18.1 to 1.19.0 (#16113)
dependabot[bot] Apr 26, 2026
bac514a
Flink 2.1: Remove flink-metrics-dropwizard from runtime (#16093)
rdblue Apr 26, 2026
afb7519
AWS Bundle: Exclude logging dependencies (#16105)
rdblue Apr 27, 2026
2a61580
Spark 4.1: Parameterize TestDeleteFrom with format-version (#16098)
nastra Apr 27, 2026
1b733ed
Core: Fix RejectedExecutionException in InMemoryLockManager when mult…
manuzhang Apr 27, 2026
b809dcd
Core, Catalogs: Add support for unique table locations via catalog pr…
davseitsev Apr 27, 2026
8d05083
Parquet: Add write.parquet.page-version table property (#15700)
hcrosse Apr 27, 2026
836bca9
Flink: RewriteDataFile support dynamic filter (#15865)
Guosmilesmile Apr 27, 2026
b0f022f
Flink:Backport RewriteDataFile support dynamic filter (#16132)
Guosmilesmile Apr 27, 2026
4e118e3
Spark 4.1: Update LICENSE and NOTICE for 1.11. (#16104)
rdblue Apr 28, 2026
9bd214e
Arrow: Align vectorized reader handling of unsigned Parquet integers …
drexler-sky Apr 28, 2026
57409fa
Core: Fix child AuthSession inheriting parent's expiresAtMillis (#15999)
bharos Apr 28, 2026
d71583f
Spark, Hive: Fix snapshot procedure for tables with Variant columns (…
nssalian Apr 28, 2026
dd45bd9
Flink: Bundle flink-metrics-dropwizard in runtime jar (#16126)
mxm Apr 28, 2026
4880f5b
Flink 2.1: Update LICENSE for 1.11. (#16102)
rdblue Apr 28, 2026
9b139c9
Spark: Carry over changes to LICENSE and NOTICE in older Spark versio…
rdblue Apr 28, 2026
b0df3ca
Build: Bump software.amazon.awssdk:bom from 2.42.33 to 2.42.36 (#16151)
ebyhr Apr 29, 2026
099ef47
Core: Validate v2 deletes against concurrent format upgrade (#16146)
dramaticlly Apr 29, 2026
8ac7030
Build: Bump com.google.cloud:libraries-bom from 26.79.0 to 26.80.0 (#…
ebyhr Apr 29, 2026
c81534f
Flink: Backport: Bundle flink-metrics-dropwizard in runtime jar (#16141)
mxm Apr 29, 2026
f0ba022
Spark 3.5: Backport Async Micro Batch Planner to 3.5 (#15992)
RjLi13 Apr 29, 2026
df00c15
Spark 4.0: Backport Aync Micro Batch Planner Feature (#15876)
RjLi13 Apr 29, 2026
b07435b
Site: Remove Iceberg Summit 2026 section as the event has passed (#16…
talatuyarer Apr 30, 2026
6869adb
Core: Add builders for v4 structs (#16092)
anoopj Apr 30, 2026
54c6433
Flink: Fix JdbcLockFactory to allow ClientPoolImpl connection retry (…
yadavay-amzn Apr 30, 2026
1bdbed7
Flink: SQL: Make Dynamic sink options to be configurable in SQL (#15780)
swapna267 Apr 30, 2026
0dab08c
Flink: Apply LICENSE changes to older Flink versions. (#16159)
rdblue Apr 30, 2026
3dd5c14
Flink: Add Nanosecond Precision Support for Flink-Iceberg Integration…
talatuyarer Apr 30, 2026
96d556b
Spark 4.1: Migrate SparkWriteBuilder to SupportsOverwriteV2 (#16164)
drexler-sky Apr 30, 2026
185da6b
Core: Avoid unnecessary manifest scanning during snapshot expiration …
hemanthboyina Apr 30, 2026
6ce5026
AWS: Fix stale LICENSE entry for Parquet, clarify failsafe attributio…
kevinjqliu Apr 30, 2026
3f14731
Open API: Remove runtime Jar from build and deploy (#16163)
rdblue May 1, 2026
53f1f1a
Spark 3.4, 3.5, 4.0: Migrate SparkWriteBuilder to SupportsOverwriteV2…
drexler-sky May 1, 2026
737f043
Build: Bump datamodel-code-generator from 0.56.0 to 0.56.1 (#16114)
dependabot[bot] May 2, 2026
128f656
AWS: remove extra/staled LICENSE entry bundled by Parquet (#16180)
kevinjqliu May 2, 2026
7628389
Core: Propagate server error message in failed remote scan planning r…
singhpk234 May 2, 2026
6d7ab33
Core: Surface failed scan planning even when server omits error paylo…
singhpk234 May 3, 2026
1c1aaf0
Build: Bump openapi-spec-validator from 0.8.4 to 0.8.5 (#16200)
dependabot[bot] May 3, 2026
bd96c74
Build: Bump testcontainers from 2.0.4 to 2.0.5 (#16201)
dependabot[bot] May 3, 2026
d69d92c
Build: Bump nessie from 0.107.4 to 0.107.5 (#16202)
dependabot[bot] May 3, 2026
8537152
Build: Bump org.apache.httpcomponents.client5:httpclient5 (#16204)
dependabot[bot] May 3, 2026
33e173c
Build: Bump software.amazon.awssdk:bom from 2.42.36 to 2.42.41 (#16206)
ebyhr May 4, 2026
334dd95
Core, AWS: Adapt code to S3 signing endpoint promotion (#15451)
adutra May 4, 2026
f2e7a65
AWS, GCP: add Kryo round-trip regression test for refreshed storage c…
laserninja May 4, 2026
3a98658
Docs: Move catalog properties to catalog section (#15848)
gaborkaszab May 4, 2026
5486857
Docs: Document general REST catalog properties (#15871)
gaborkaszab May 4, 2026
2d54125
Spark: Support TimestampNTZ in SparkZOrderUDF (#15778)
milleniax May 4, 2026
7830efe
Spark: Add unknown type support to Spark 3.4 and 3.5 (#16066)
Kurtiscwright May 5, 2026
0841cde
Sink connector crashes on timestamps with fractional seconds and colo…
soumyajit-sahu May 5, 2026
2f6606a
Flink: Backport: Dynamic sink options to be configurable in SQL (#16209)
swapna267 May 5, 2026
0011a85
Spark: Migrate RollBackStageTable to use SupportsDeleteV2 (#16211)
drexler-sky May 6, 2026
da5ffce
Fix for vectorized builder variant handling (#16087)
nssalian May 6, 2026
dcdeb27
Flink: Define Joda Time in libs.versions.toml file (#16191)
talatuyarer May 6, 2026
680d850
Flink: Do not ship optional flink-metrics-dropwizard dependency (#16155)
mxm May 6, 2026
0bae050
Build: Correct actions/labeler version comment to v6.0.1 (#16225)
mxm May 6, 2026
ef077f4
Core: Fix JdbcCatalog & InMemoryCatalog to prevent dropping parent na…
sagib1 May 6, 2026
b84b37f
Core: Replace string-based schema projection with selection on field-…
dramaticlly May 6, 2026
d7cb799
Flink: Backport removal of optional flink-metrics-dropwizard dependen…
kevinjqliu May 6, 2026
0d2707e
Docs: Add missing v3 data types to status page (#16228)
manuzhang May 6, 2026
b7ef9f1
CI: Use specific patch versions in workflow action comments (#16229)
kevinjqliu May 6, 2026
e2a119c
Spark: Support writing shredded variant in Iceberg-Spark (#14297)
aihuaxu May 6, 2026
400ba92
AWS: Fix LICENSE/NOTICE compliance for aws-bundle (#16196)
kevinjqliu May 6, 2026
334269c
Azure: Fix LICENSE, NOTICE, and runtime-deps for azure-bundle (#16181)
kevinjqliu May 6, 2026
e4028bf
GCP: Fix LICENSE, NOTICE, and runtime-deps for gcp-bundle (#16182)
kevinjqliu May 6, 2026
86823e5
Spark: Fix LICENSE/NOTICE compliance for all versions of spark-runtim…
kevinjqliu May 6, 2026
0f657ed
Flink: Fix LICENSE/NOTICE compliance for all versions of flink-runtim…
kevinjqliu May 6, 2026
05b2df1
Flink: Backport add Nanosecond Precision Support for Flink-Iceberg In…
talatuyarer May 7, 2026
153237b
Flink: Backport add Nanosecond Precision Support for Flink-Iceberg In…
pvary May 7, 2026
9ec1b93
Spark: Backport support writing shredded variant in Iceberg-Spark (#1…
pvary May 7, 2026
f767dad
Flink: Backport add Nanosecond Precision Support for Flink-Iceberg In…
pvary May 7, 2026
17fc6da
API, Core: Handle 404 from /v1/config for missing warehouses (#16059)
oguzhanunlu May 7, 2026
57b1211
Spark: backport PR #15512 to v3.4, v3.5, v4.0 for WAP branch delete f…
stevenzwu May 7, 2026
77e7dbb
ORC: Add _row_id and _last_updated_sequence_number raeder in Orc to s…
Guosmilesmile May 8, 2026
b7e65c9
Core: Add test to validate we can't delete map value during schema ev…
mukund-thakur May 8, 2026
299f7be
OpenAPI, Core: Disambiguate the intent of REFS snapshot mode (#16252)
gaborkaszab May 8, 2026
4efbda3
Add Oracle as an Iceberg vendor (#16251)
thisismiller May 8, 2026
b84d446
Spec: Update formatting in tables to use material content tabs (#14656)
amogh-jahagirdar May 8, 2026
9b8bde4
ORC: Backport add _row_id and _last_updated_sequence_number raeder in…
pvary May 8, 2026
e7a5a87
Azure: Avoid depending on KeyWrapAlgorithm in AzureProperties (#16186)
ebyhr May 8, 2026
fce2504
CI: Add PR title check workflow (#16101)
manuzhang May 9, 2026
1a8fa1e
Docs: Document CATALOG_* env vars in iceberg-rest-fixture README (#16…
rexminnis May 9, 2026
c147796
Docs: Update Oracle vendor description (#16261)
thisismiller May 9, 2026
1edde6c
Build: Bump jackson-bom from 2.21.2 to 2.21.3 (#16269)
dependabot[bot] May 10, 2026
d9b6f00
Build: Bump joda-time:joda-time from 2.5 to 2.14.2 (#16270)
dependabot[bot] May 10, 2026
70ed5d9
Build: Bump junit-platform from 1.14.3 to 1.14.4 (#16272)
dependabot[bot] May 10, 2026
3451154
Build: Bump github/codeql-action from 4.35.2 to 4.35.3 (#16275)
dependabot[bot] May 10, 2026
a6a0b81
Build: Bump junit from 5.14.3 to 5.14.4 (#16271)
dependabot[bot] May 10, 2026
68bab74
Build: Bump io.grpc:grpc-netty-shaded from 1.80.0 to 1.81.0 (#16277)
huaxingao May 11, 2026
6364aaa
Data: Add TCK tests for Schema Evolution in BaseFormatModelTests (#1…
Guosmilesmile May 11, 2026
0e0e795
Build: Bump org.openapitools:openapi-generator-gradle-plugin from 7.2…
huaxingao May 11, 2026
a505c28
Merge branch 'main' into rk/upstream
robert3005 May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .baseline/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,11 @@
<property name="format" value="^\s*(public\s+)?(abstract\s+)?class\s+[A-Za-z0-9]*Test(\s|&lt;)"/>
<property name="message" value="Test class names should start with 'Test' prefix, not end with 'Test' suffix. Example: 'TestNewFeature' instead of 'NewFeatureTest'"/>
</module>
<module name="RegexpSinglelineJava">
<property name="ignoreComments" value="true"/>
<property name="format" value="String::to(Lower|Upper)Case"/>
<property name="message" value="Use toLowerCase(Locale)/toUpperCase(Locale) instead of no-arg versions or method references. Prefer Locale.ROOT for locale-insensitive operations."/>
</module>
<module name="IllegalToken">
<property name="tokens" value="LITERAL_ASSERT"/>
</module>
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/api-binary-compatibility.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
revapi:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# fetch-depth of zero ensures that the tags are pulled in and we're not in a detached HEAD state
# revapi depends on the tags, specifically the tag from git describe, to find the relevant override
Expand All @@ -55,15 +55,15 @@ jobs:
# See https://github.com/actions/checkout/issues/124
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: 17
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: |
echo "Using the old version tag, as per git describe, of $(git describe)";
- run: ./gradlew revapi --rerun-tasks
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand Down
5 changes: 2 additions & 3 deletions .github/workflows/asf-allowlist-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ jobs:
asf-allowlist-check:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Intentionally unpinned to always use the latest allowlist from the ASF.
- uses: apache/infrastructure-actions/allowlist-check@main # zizmor: ignore[unpinned-uses]
- uses: apache/infrastructure-actions/allowlist-check@4e9c961f587f72b170874b6f5cd4ac15f7f26eb8 # main
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,16 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/init@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
uses: github/codeql-action/analyze@e46ed2cbd01164d986452f91f178727624ae40d7 # v4.35.3
with:
category: "/language:actions"
16 changes: 8 additions & 8 deletions .github/workflows/delta-conversion-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,17 +80,17 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: ./gradlew -DsparkVersions=3.5 -DscalaVersion=2.12 -DkafkaVersions= -DflinkVersions= :iceberg-delta-lake:check -Pquick=true -x javadoc
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand All @@ -106,17 +106,17 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: ./gradlew -DsparkVersions=3.5 -DscalaVersion=2.13 -DkafkaVersions= -DflinkVersions= :iceberg-delta-lake:check -Pquick=true -x javadoc
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: 3.x
- name: Build Iceberg documentation
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/flink-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,17 +84,17 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: ./gradlew -DsparkVersions= -DkafkaVersions= -DflinkVersions=${{ matrix.flink }} :iceberg-flink:iceberg-flink-${{ matrix.flink }}:check :iceberg-flink:iceberg-flink-runtime-${{ matrix.flink }}:check -Pquick=true -x javadoc -DtestParallelism=auto
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/hive-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,17 +81,17 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: ./gradlew -DsparkVersions= -DflinkVersions= -DkafkaVersions= -Pquick=true :iceberg-mr:check -x javadoc
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand Down
33 changes: 23 additions & 10 deletions .github/workflows/java-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,17 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: ./gradlew check -DsparkVersions= -DflinkVersions= -DkafkaVersions= -Pquick=true -x javadoc
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand All @@ -100,14 +100,14 @@ jobs:
matrix:
jvm: [17, 21]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: ./gradlew -DallModules build -x test -x javadoc -x integrationTest

build-javadoc:
Expand All @@ -117,12 +117,25 @@ jobs:
matrix:
jvm: [17, 21]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: ./gradlew -Pquick=true javadoc

check-runtime-deps:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: 17
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: ./gradlew checkAllRuntimeDeps -q -DallModules=true
10 changes: 5 additions & 5 deletions .github/workflows/jmh-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ jobs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
foundlabel: ${{ steps.set-matrix.outputs.foundlabel }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.repo }}
ref: ${{ github.event.inputs.ref }}
Expand Down Expand Up @@ -94,16 +94,16 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
repository: ${{ github.event.inputs.repo }}
ref: ${{ github.event.inputs.ref }}
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: 17
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts

- name: Run Benchmark
Expand All @@ -113,7 +113,7 @@ jobs:
BENCHMARK: ${{ matrix.benchmark }}
run: ./gradlew -DsparkVersions=${SPARK_VERSION} -DscalaVersion=${SCALA_VERSION} :iceberg-spark:iceberg-spark-${SPARK_VERSION}_${SCALA_VERSION}:jmh -PjmhIncludeRegex=${BENCHMARK} -PjmhOutputPath=benchmark/${BENCHMARK}.txt

- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ always() }}
with:
name: benchmark-${{ matrix.benchmark }}
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/kafka-connect-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,14 +81,14 @@ jobs:
env:
SPARK_LOCAL_IP: localhost
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: zulu
java-version: ${{ matrix.jvm }}
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 # zizmor: ignore[cache-poisoning] -- cache writes are restricted to the default branch by setup-gradle
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5.0.2
- run: echo -e "$(ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1)\t$(hostname -f) $(hostname -s)" | sudo tee -a /etc/hosts
- run: |
./gradlew -DsparkVersions= -DflinkVersions= -DkafkaVersions=3 \
Expand All @@ -97,7 +97,7 @@ jobs:
:iceberg-kafka-connect:iceberg-kafka-connect:check \
:iceberg-kafka-connect:iceberg-kafka-connect-runtime:check \
-Pquick=true -x javadoc
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: failure()
with:
name: test logs
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ jobs:
triage:
runs-on: ubuntu-slim
steps:
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
with:
sync-labels: true
2 changes: 1 addition & 1 deletion .github/workflows/license-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ jobs:
rat:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- run: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/open-api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ jobs:
runs-on: ubuntu-slim

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
enable-cache: false
- name: Install dependencies
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/pr-title-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 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.
name: PR Title Check

on:
pull_request:
types: [opened, edited, reopened]

concurrency:
group: pr-title-${{ github.event.pull_request.number }}
cancel-in-progress: true

permissions: {}

jobs:
check-pr-title:
runs-on: ubuntu-slim
steps:
- name: Check PR Title
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
PATTERN='^[A-Za-z][A-Za-z0-9._+/&-]*: .+'
if ! echo "$PR_TITLE" | grep -Eq "$PATTERN"; then
echo "::error::PR title must follow 'Module: Description' format. Got: '$PR_TITLE'"
echo "Examples: 'Core: Fix ...', 'Spark: Add ...', 'API: Remove ...', 'Docs: Update ...'"
exit 1
fi

echo "PR title is valid: '$PR_TITLE'"
Loading
Loading