

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1<!--2Licensed to the Apache Software Foundation (ASF) under one3or more contributor license agreements. See the NOTICE file4distributed with this work for additional information5regarding copyright ownership. The ASF licenses this file6to you under the Apache License, Version 2.0 (the7"License"); you may not use this file except in compliance8with the License. You may obtain a copy of the License at910 http://www.apache.org/licenses/LICENSE-2.01112Unless required by applicable law or agreed to in writing,13software distributed under the License is distributed on an14"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY15KIND, either express or implied. See the License for the16specific language governing permissions and limitations17under the License.18-->1920# flink-table-runtime2122Contains classes required by TaskManagers for execution of table programs. Implements runtime operators, built-in functions, and code generation support. Bundles janino (Java compiler for code generation) and flink-shaded-jsonpath.2324## Key Directory Structure2526- `functions/scalar/` — Scalar function implementations (47+)27- `functions/aggregate/` — Aggregate function implementations28- `functions/table/` — Table function implementations29- `functions/ptf/` — Process table function implementations30- `functions/ml/` — Machine learning function implementations31- `operators/` — Runtime operators organized by type:32 - `join/` (hash, sort-merge, lookup, temporal, interval, delta, adaptive, stream/multi-join)33 - `aggregate/` (group, window)34 - `window/` (TVF windows, group windows)35 - `deduplicate/`, `rank/`, `sort/`36 - `sink/`, `source/`37 - `correlate/` (including `async/` for async table functions)38 - `calc/`, `match/`, `over/`, `process/`, `ml/`, `search/`3940## Common Change Patterns4142### Adding a built-in function4344Base classes by function type:4546- **Scalar:** Extend `BuiltInScalarFunction` in `functions/scalar/`47- **Table:** Extend `BuiltInTableFunction` in `functions/table/`48- **Aggregate:** Extend `BuiltInAggregateFunction` in `functions/aggregate/`49- **Process Table Function:** Extend `BuiltInProcessTableFunction` in `functions/ptf/`5051All are constructed from `BuiltInFunctionDefinition#specialize(SpecializedContext)` and work on internal data structures by default.5253Some functions also require custom code generators in the planner (e.g., `JsonCallGen.scala` for JSON functions). Simple scalar functions typically don't need planner changes; the planner handles them uniformly through the function definition.5455### Adding a runtime operator5657- **1 or 2 inputs:** Extend `TableStreamOperator<RowData>` (which extends `AbstractStreamOperator<OUT>`) and implement `OneInputStreamOperator<RowData, RowData>` or `TwoInputStreamOperator<RowData, RowData, RowData>`58- **3+ inputs:** Extend `AbstractStreamOperatorV2` and implement `MultipleInputStreamOperator` (see `StreamingMultiJoinOperator`)59- `TableStreamOperator` provides watermark tracking (`currentWatermark`), memory size computation, and a `ContextImpl` for timer services6061### Async operators and runners6263- **Key-ordered async execution:** `operators/join/lookup/keyordered/` contains async execution controller infrastructure (`AecRecord`, `Epoch`, `EpochManager`, `KeyAccountingUnit`, `RecordsBuffer`) for ordering guarantees in async lookup joins64- **Async correlate:** `operators/correlate/async/` for async table function support65- **Runner abstraction:** `AbstractFunctionRunner` and `AbstractAsyncFunctionRunner` provide base classes for code-generated function invocations (used by lookup join, ML predict, vector search runners)6667### State serializer migrations6869- When modifying state serializers, create a `TypeSerializerSnapshot` with version bumping70- Migration test resources follow naming: `migration-flink-<version>-<backend>-<variant>-snapshot`71- Rescaling tests verify state redistribution across parallelism changes (see `SinkUpsertMaterializerMigrationTest`, `SinkUpsertMaterializerRescalingTest`)7273## Testing Patterns7475- **Harness tests:** Use `OneInputStreamOperatorTestHarness<RowData, RowData>` with `RowDataHarnessAssertor` for output validation. See `operators/join/LookupJoinHarnessTest.java` as a reference.76- **Test utilities:** `StreamRecordUtils.insertRecord()` for test records, `RowDataHarnessAssertor` for assertions77- **Operator test base classes:** Module has dedicated base classes per operator type (e.g., `TemporalTimeJoinOperatorTestBase`, `Int2HashJoinOperatorTestBase`, `WindowAggOperatorTestBase`)78- **State migration tests:** Use snapshot files per Flink version and state backend type to verify forward/backward compatibility79
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| apache/flinkAGENTS.md · 26k | AGENTS.md | setupbuildtestlint-format+9 | 50/100 | today | |
| apache/flinkflink-table/flink-table-planner/AGENTS.md · 26k | AGENTS.md | buildteststylearch+1 | 61/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| n8n-io/n8npackages/@n8n/agents/AGENTS.md · 201k | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| duckduckgo/content-scope-scriptsspecial-pages/AGENTS.md · 70 | AGENTS.md | buildteststylearch+3 | 100/100 | 14 days ago | |
| deepseek-ai/deepseek-harnessnative/landlock-run/AGENTS.md · 104k | AGENTS.md | setupteststylearch+3 | 100/100 | today | |
| code-yeongyu/oh-my-openagentpackages/web/AGENTS.md · 68k | AGENTS.md | setupbuildtestlint-format+6 | 100/100 | 13 days ago | |
| TryGhost/Ghoste2e/AGENTS.md · 55k | AGENTS.md | setupteststylearch+2 | 100/100 | today | |
| vllm-project/vllmAGENTS.md · 89k | AGENTS.md | setuptestlint-formatstyle+5 | 100/100 | 14 days ago | |
| mui/material-uiAGENTS.md · 99k | AGENTS.md | setupbuildtestlint-format+9 | 100/100 | 14 days ago | |
| elastic/elasticsearchx-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/AGENTS.md · 78k | AGENTS.md | buildtestlint-formatstyle+2 | 100/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/apache-flink-flink-table-flink-table-runtime-agents)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.