Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
6bdaa5e
[FLINK-40045][runtime-web] Upgrade d3-flame-graph to v5 (#28601)
spuru9 Jul 7, 2026
0b16dd3
[FLINK-40032][runtime-web] Migrate web-dashboard eslint to v9 (flat c…
spuru9 Jul 2, 2026
20216e4
[FLINK-39715][table] Sync SQL and table api behavior for queries with…
snuyanzin Jul 7, 2026
eafba3b
[FLINK-36334][tests] Enable TraversableSerializerUpgradeTest
SteveStevenpoor Jul 7, 2026
ba41c1f
[FLINK-40039][table] Fix `CTAS`/`RTAS` when used with set-semantic PTFs
raminqaf Jul 7, 2026
3e3e270
[FLINK-39923][state] Fix RocksDB Statistics native memory leak (#28489)
leekeiabstraction Jul 7, 2026
a1dcc9d
[FLINK-40090][docs] Modernize cryptography export notice in distribut…
MartijnVisser Jul 8, 2026
f584601
[FLINK-40096][table] Migrate `EXPLAIN` `CTAS`/`RTAS` Explain tests to…
raminqaf Jul 9, 2026
7f770b8
[FLINK-40076][tests] Fix race in RescaleTimelineITCase.testRecordNonT…
MartijnVisser Jul 5, 2026
4aff729
[hotfix] Report END_OF_INPUT from multiple-input processor when all i…
rkhachatryan Jun 29, 2026
c09a21c
[FLINK-39520][network] Decouple LocalInputChannel recovery wiring fro…
1996fanrui May 21, 2026
0076de5
[FLINK-39520][checkpoint] Extract AbstractInputChannelRecoveredStateH…
1996fanrui Jul 5, 2026
ed2a5d4
[FLINK-39520][network] Add InputGate#getChannel(InputChannelInfo)
1996fanrui Jul 5, 2026
8cd1c0e
[FLINK-39520][network] Additive logging overload; widen releaseAllRes…
1996fanrui Jul 5, 2026
3c1e1d9
[FLINK-40084][build] maven-shade-plugin does not respect multi releas…
snuyanzin Jul 9, 2026
1ebd43c
[FLINK-40099] Fix flaky YARNSessionFIFOSecuredITCase by verifying Ker…
raminqaf Jul 8, 2026
f9d81b2
[FLINK-39583][table-planner] Normalize Calcite correl variables for m…
ferenc-csaky Jul 9, 2026
913207b
[FLINK-39191][runtime-web] Upgrade monaco-editor to 0.55.1 (#27745)
gkomlossi Jul 9, 2026
8b7ebca
[FLINK-40112][table-planner] Report changelog mode mismatch instead o…
gustavodemorais Jul 10, 2026
4732a52
[FLINK-40111][table-planner] Fall back to retract for a keyless sink …
gustavodemorais Jul 10, 2026
4afea38
[FLINK-39521][test] Temporarily remove during-recovery flag from ITCa…
1996fanrui Jul 5, 2026
6265c89
[FLINK-39521][network] BufferManager: gate credit notification behind…
1996fanrui Jul 5, 2026
f615ff7
[FLINK-39521][network] Add RecoverableInputChannel contract and recov…
1996fanrui Jul 5, 2026
5a2151f
[FLINK-39521][network] LocalInputChannel: push-based recovery state
1996fanrui Jul 5, 2026
9cb272e
[FLINK-39521][network] RemoteInputChannel: push-based recovery state
1996fanrui Jul 5, 2026
e480c74
[FLINK-39521][network] Convert recovered channels via the push interf…
1996fanrui Jul 5, 2026
bf14146
[FLINK-39521][network] Propagate needsRecovery in PartitionRequest; s…
1996fanrui Jul 5, 2026
c2f0c12
[FLINK-39521][network] CheckpointedInputGate: consume EndOfFetchedCha…
1996fanrui Jul 5, 2026
1a5f868
[hotfix] Use `systemPropertyVariables` instead of `systemProperties`
snuyanzin Jul 11, 2026
b464b33
[FLINK-40109] Verify Kerberos keytab logs after the YARN application …
MartijnVisser Jul 9, 2026
bfad2e8
[FLINK-40125][ci] Add auto cancel for concurrently running jobs
snuyanzin Jul 12, 2026
9d52f18
[hotfix][runtime-web] Fix savepointPath query parameter in JarService…
spuru9 Jul 13, 2026
eaeefdd
[FLINK-34423][ci] Make `tools/ci/compile_ci.sh` not necessarily rely …
snuyanzin Jul 13, 2026
21b47b9
[FLINK-40124][ci] Do not store cache on every run if no dependency ch…
snuyanzin Jul 13, 2026
f5bb04d
[FLINK-40035][runtime-web] Add Vitest smoke tests for the web-dashboard
spuru9 Jul 2, 2026
486f529
[FLINK-39783][table] Translate LATERAL SNAPSHOT to LateralSnapshotJoi…
fhueske Jul 13, 2026
c404d7b
[FLINK-40036][tests] Support custom MockEnvironment in multi-input ha…
geeknarrator Jul 13, 2026
d8ba8aa
[FLINK-40134][ci] Bump maven-rat-plugin to 0.17
snuyanzin Jul 14, 2026
d769c08
[FLINK-40086][runtime] Adds error handling to newly added preCompleti…
XComp Jul 9, 2026
e9540ae
[FLINK-39781][table] Add LateralSnapshotJoinOperator with two-phase L…
fhueske Jul 14, 2026
edba490
[FLINK-40067][tests] Fix race in RescaleTimelineITCase.testRescaleTer…
MartijnVisser Jul 3, 2026
7f707f3
[FLINK-40095][table-planner] Fix JSON aggregation functions failing i…
xuyangzhong Jul 15, 2026
47abc18
[FLINK-40113][checkpoint] Reject restore when operators on a keyed ve…
rionmonster Jul 13, 2026
3f5129b
[FLINK-39784][table] Forbid SNAPSHOT outside a LATERAL context (#28674)
fhueske Jul 15, 2026
435062c
[FLINK-40088][tests] Tolerate HTTP-level responses in RestClientITCas…
MartijnVisser Jul 7, 2026
9b60890
[FLINK-39943][table] Fix nullability of IS JSON functions (#28741)
fhueske Jul 15, 2026
76e7898
[FLINK-37925][table] Support casting from `VARIANT` to primitive types
raminqaf Jul 15, 2026
5004b5b
[hotfix][table] Fix compilation with jdk11
snuyanzin Jul 15, 2026
0505c8b
Add GEOGRAPHY logical type model
gkalashyan-akv May 22, 2026
48e0255
[FLINK-xxxxx] Add SQL geography construction/functions
gkalashyan-akv Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions .github/actions/job_init/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ inputs:
description: "Runs tools/azure-pipelines/free_disk_space.sh to remove unneeded pre-installed software from the runner (only works for jobs that run directly on the host, not in a container)."
required: false
default: "false"
outputs:
maven-cache-hit:
description: "Whether the Maven package cache was restored via an exact key match. Callers should only save a new cache when this is not 'true'."
value: ${{ steps.maven-cache-restore.outputs.cache-hit }}
maven-cache-key:
description: "The cache key computed for the Maven package cache, for use by a caller's own explicit save step (placed after Maven has actually run)."
value: ${{ steps.maven-cache-key.outputs.key }}
runs:
using: "composite"
steps:
Expand Down Expand Up @@ -105,14 +112,20 @@ runs:
echo "namespace=${ns}" >> "${GITHUB_OUTPUT}"
echo "Cache namespace: ${ns}"

- name: "Setup Maven package cache"
- name: "Compute Maven package cache key"
if: ${{ inputs.maven_repo_folder != '' }}
uses: actions/cache@v5
id: maven-cache-key
shell: bash
run: echo "key=${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}" >> "${GITHUB_OUTPUT}"

- name: "Restore Maven package cache"
if: ${{ inputs.maven_repo_folder != '' }}
id: maven-cache-restore
uses: actions/cache/restore@v6
with:
path: ${{ inputs.maven_repo_folder }}
key: ${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
key: ${{ steps.maven-cache-key.outputs.key }}
restore-keys: |
${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}-
${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-
${{ runner.os }}-maven-

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/community-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ on:
schedule:
- cron: '00 00,08,16 * * *'

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

# Same permission as stale Github action
permissions:
issues: write
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ on:
- cron: '0 0 * * *' # Deploy every day
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

jobs:
build-documentation:
if: github.repository == 'apache/flink'
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/nightly-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
if: github.repository == 'apache/flink'
permissions:
actions: write
concurrency:
group: ${{ github.workflow }}-${{ matrix.branch }}
cancel-in-progress: true
strategy:
matrix:
branch:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ name: "Nightly (beta)"
on:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: read-all

jobs:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ on:
default: 20
type: number

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

permissions:
issues: write
pull-requests: write
Expand Down
36 changes: 35 additions & 1 deletion .github/workflows/template.flink-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ jobs:
persist-credentials: false

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -123,6 +124,15 @@ jobs:
# use minimum here because we only need these artifacts to speed up the build
retention-days: 1

# Only saves when the restore in job_init wasn't an exact hit, i.e. pom.xml actually
# changed since the last save for this namespace - avoids re-uploading an unchanged cache.
- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

packaging:
name: "Test packaging/licensing"
needs: compile
Expand All @@ -145,6 +155,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand All @@ -166,7 +177,14 @@ jobs:
- name: "Test"
working-directory: ${{ env.CONTAINER_LOCAL_WORKING_DIR }}
run: |
${{ inputs.environment }} ./tools/ci/compile_ci.sh || exit $?
${{ inputs.environment }} ./tools/ci/compile_ci.sh -Dmaven.clean.skip=true || exit $?

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

test:
name: "Test (module: ${{ matrix.module }})"
Expand Down Expand Up @@ -212,6 +230,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -315,6 +334,13 @@ jobs:
if: ${{ !cancelled() && (failure() || steps.docker-cache.outputs.cache-hit != 'true') }}
run: ./tools/azure-pipelines/cache_docker_images.sh save

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

e2e:
name: "E2E (group ${{ matrix.group }})"
needs: compile
Expand Down Expand Up @@ -353,6 +379,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -446,3 +473,10 @@ jobs:
- name: "Save Docker images to Cache"
if: ${{ !cancelled() && (failure() || steps.docker-cache.outputs.cache-hit != 'true') }}
run: ./tools/azure-pipelines/cache_docker_images.sh save

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}
2 changes: 1 addition & 1 deletion .github/workflows/template.pre-compile-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ jobs:
if: (success() || failure())
uses: "./.github/actions/run_mvn"
with:
maven-parameters: "org.apache.rat:apache-rat-plugin:check -N"
maven-parameters: "-T1C org.apache.rat:apache-rat-plugin:check -N"
8 changes: 7 additions & 1 deletion docs/content.zh/docs/sql/reference/data-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -1515,6 +1515,12 @@ without requiring upfront schema definition. For example, if a new field is adde
can be directly incorporated into the `VARIANT` data without modifying the table schema. This is
particularly useful in dynamic environments where schemas may evolve over time.

A primitive-valued `VARIANT` can be converted to a scalar type with `CAST` or `TRY_CAST`. Numeric
targets are lenient: a variant holding any numeric value casts to any numeric type, so a JSON integer
such as `PARSE_JSON('42')` casts to `INT` or `BIGINT`. Other targets require the stored value to be of
the matching kind. When the value cannot be converted, `CAST` fails the job and `TRY_CAST` returns
`NULL`. Use the `JSON_STRING` function to obtain the JSON string representation of a `VARIANT`.

**Declaration**

{{< tabs "25c30432-8460-441d-a036-9416d8202882" >}}
Expand Down Expand Up @@ -1729,7 +1735,7 @@ COALESCE(TRY_CAST('non-number' AS INT), 0) --- 结果返回数字 0 的 INT 格
| `ROW` | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | !³ | N | N | N | N |
| `STRUCTURED` | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | !³ | N | N | N |
| `RAW` | Y | ! | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | Y⁴ | N | N |
| `VARIANT` | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
| `VARIANT` | N | ! | ! | ! | ! | ! | ! | ! | ! | ! | ! | N | ! | ! | N | N | N | N | N | N | N | Y | N |
| `BITMAP` | Y | Y⁷ | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |

备注:
Expand Down
8 changes: 7 additions & 1 deletion docs/content/docs/sql/reference/data-types.md
Original file line number Diff line number Diff line change
Expand Up @@ -1523,6 +1523,12 @@ without requiring upfront schema definition. For example, if a new field is adde
can be directly incorporated into the `VARIANT` data without modifying the table schema. This is
particularly useful in dynamic environments where schemas may evolve over time.

A primitive-valued `VARIANT` can be converted to a scalar type with `CAST` or `TRY_CAST`. Numeric
targets are lenient: a variant holding any numeric value casts to any numeric type, so a JSON integer
such as `PARSE_JSON('42')` casts to `INT` or `BIGINT`. Other targets require the stored value to be of
the matching kind. When the value cannot be converted, `CAST` fails the job and `TRY_CAST` returns
`NULL`. Use the `JSON_STRING` function to obtain the JSON string representation of a `VARIANT`.

**Declaration**

{{< tabs "25c30432-8460-441d-a036-9416d8202882" >}}
Expand Down Expand Up @@ -1738,7 +1744,7 @@ The matrix below describes the supported cast pairs, where "Y" means supported,
| `ROW` | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | !³ | N | N | N | N |
| `STRUCTURED` | Y | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | !³ | N | N | N |
| `RAW` | Y | ! | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | Y⁴ | N | N |
| `VARIANT` | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |
| `VARIANT` | N | ! | ! | ! | ! | ! | ! | ! | ! | ! | ! | N | ! | ! | N | N | N | N | N | N | N | Y | N |
| `BITMAP` | Y | Y⁷ | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N | N |

Notes:
Expand Down
7 changes: 6 additions & 1 deletion docs/data/sql_functions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -952,7 +952,6 @@ json:
'"abc"' IS JSON
-- FALSE
'abc' IS JSON
NULL IS JSON

-- TRUE
'1' IS JSON SCALAR
Expand All @@ -967,6 +966,12 @@ json:
'{}' IS JSON ARRAY
-- TRUE
'{}' IS JSON OBJECT

-- NULL
NULL IS JSON
NULL IS JSON SCALAR
NULL IS JSON OBJECT
NULL IS JSON ARRAY
```
- sql: JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ])
table: STRING.jsonExists(STRING path [, JsonExistsOnError onError])
Expand Down
7 changes: 6 additions & 1 deletion docs/data/sql_functions_zh.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,6 @@ json:
'"abc"' IS JSON
-- FALSE
'abc' IS JSON
NULL IS JSON

-- TRUE
'1' IS JSON SCALAR
Expand All @@ -1096,6 +1095,12 @@ json:
'{}' IS JSON ARRAY
-- TRUE
'{}' IS JSON OBJECT

-- NULL
NULL IS JSON
NULL IS JSON SCALAR
NULL IS JSON OBJECT
NULL IS JSON ARRAY
```
- sql: JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ])
table: STRING.jsonExists(STRING path [, JsonExistsOnError onError])
Expand Down
1 change: 1 addition & 0 deletions docs/static/generated/rest_v1_sql_gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,7 @@ components:
- DESCRIPTOR
- VARIANT
- BITMAP
- GEOGRAPHY
OpenSessionRequestBody:
type: object
properties:
Expand Down
1 change: 1 addition & 0 deletions docs/static/generated/rest_v2_sql_gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,7 @@ components:
- DESCRIPTOR
- VARIANT
- BITMAP
- GEOGRAPHY
OpenSessionRequestBody:
type: object
properties:
Expand Down
1 change: 1 addition & 0 deletions docs/static/generated/rest_v3_sql_gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@ components:
- DESCRIPTOR
- VARIANT
- BITMAP
- GEOGRAPHY
OpenSessionRequestBody:
type: object
properties:
Expand Down
1 change: 1 addition & 0 deletions docs/static/generated/rest_v4_sql_gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ components:
- DESCRIPTOR
- VARIANT
- BITMAP
- GEOGRAPHY
OpenSessionRequestBody:
type: object
properties:
Expand Down
43 changes: 25 additions & 18 deletions flink-dist/src/main/flink-bin/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,29 @@ If you have any questions, ask on our Mailing lists:
user@flink.apache.org
dev@flink.apache.org

This distribution includes cryptographic software. The country in
which you currently reside may have restrictions on the import,
possession, use, and/or re-export to another country, of
encryption software. BEFORE using any encryption software, please
This distribution includes cryptographic software. The country in
which you currently reside may have restrictions on the import,
possession, use, and/or re-export to another country, of
encryption software. BEFORE using any encryption software, please
check your country's laws, regulations and policies concerning the
import, possession, or use, and re-export of encryption software, to
see if this is permitted. See <http://www.wassenaar.org/> for more
information.

The U.S. Government Department of Commerce, Bureau of Industry and
Security (BIS), has classified this software as Export Commodity
Control Number (ECCN) 5D002.C.1, which includes information security
software using or performing cryptographic functions with asymmetric
algorithms. The form and manner of this Apache Software Foundation
distribution makes it eligible for export under the License Exception
ENC Technology Software Unrestricted (TSU) exception (see the BIS
Export Administration Regulations, Section 740.13) for both object
code and source code.

import, possession, or use, and re-export of encryption software, to
see if this is permitted. See http://www.wassenaar.org for
more information.

The Apache Software Foundation has classified this software as Export
Commodity Control Number (ECCN) 5D002, which includes information
security software using or performing cryptographic functions with
asymmetric algorithms. The form and manner of this Apache Software
Foundation distribution makes it eligible for export under the
"publicly available" Section 742.15(b) exemption (see the BIS Export
Administration Regulations, Section 742.15(b)) for both object code
and source code.

The following provides more details on the included cryptographic
software:

* Apache Flink uses the built-in Java TLS/SSL (JSSE) libraries to
secure network communication (RPC, REST, blob transfer, and
connector traffic). Alternatively, the OpenSSL-based SSL engine
can be enabled (security.ssl.provider: OPENSSL), using the
flink-shaded-netty-tcnative packaging of OpenSSL/BoringSSL.
Loading