The GitHub Actions job "Required Checks" on 
texera.git/feat/loop-variable-refs-backend has succeeded.
Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).

Head commit for run:
08921b278c8233d3622d7e2a6d805d7d435abf32 / Xinyuan Lin <[email protected]>
feat(amber): bind $K loop-variable references in operators

A property of an operator inside a loop block (LoopStart ... LoopEnd) may
name a loop variable as `$K`. The frontend keeps sending the literal
string whatever the property's type; the backend binds it in three steps.

Parse. LogicalOp is now a StateReferencing descriptor, with a
`stateReferences` sidecar (JSON pointer -> variable name) that the
property panel never shows. StateReferenceModule, registered on
JSONUtils.objectMapper and on the workflow-compiling-service mapper, adds
a Jackson problem handler: when a whole-string `$name` cannot be converted
to an integral, floating-point or boolean property, it returns the
placeholder 0 / 0.0 / false and records the value's pointer, relative to
the operator, in the operator's sidecar. A thin wrapper around each
concrete StateReferencing deserializer opens that recording frame. An
object that a polymorphic type deserializer hands over mid-way is first
copied into a buffer of its own, because Jackson replays the fields before
a late type id from a buffer whose parse context copies the first field's
value, not the object. String properties keep the literal, and any other
target (an enum, ...) keeps Jackson's ordinary error.

Compile. WorkflowCompiler works out which operators lie inside a loop
block (LoopBlockMembership, the frontend's block walk) and makes the
sidecar final before the physical plan serializes it into the executor's
descString. Inside a block it adds every whole-string `$name` of the
operator's JSON. Outside every block a string such as "$AAPL" stays the
literal it is on main, and a typed placeholder is a compile error naming
the property and the variable. Inside a block, an operator whose executor
runs generated code, or with an input fed from outside the block, is a
compile error too.

Worker. ExecFactory hands out a LateBoundExecutor when the descString's
sidecar is not empty. It merges the values of the state messages it
receives, a later one winning so that an inner loop's variable shadows an
outer one, and forwards each message. Once every referenced variable has
arrived it patches the placeholders, coerced to their JSON type, builds
the real executor through the normal factory path and opens it; every
later call goes to that executor, which is never rebound. A tuple before
then is an error naming the missing variables.

Closes #8635

Report URL: https://github.com/apache/texera/actions/runs/35806164265

With regards,
GitHub Actions via GitBox

Reply via email to