// ForEachRow Node Implementation
//
// NOTE: ForEachRow is implemented directly in interpreter.rs (not as a modular NodeImpl)
// because it requires stack-based execution to handle iteration over database result rows.
//
// The interpreter implementation (interpreter.rs:526):
// 1. Evaluates the "rows" input (from QueryRows or similar)
// 2. Converts the Rows value to an array using as_array()
// 3. Pushes an ExecutionFrame::ForEachArray onto the execution stack
// 4. The stack frame manages:
//    - Current iteration counter
//    - Loop body execution (via "body" exec pin)
//    - Current row output (via "row" data pin of type Row)
//    - Index output (via "index" data pin)
//    - Completion (via "completed" exec pin when done)
//
// This approach allows iterating over potentially large result sets efficiently
// without recursion, and enables future features like break/continue.
//
// See interpreter.rs execute_node() for the full implementation.

pub struct ForEachRowNode;

impl super::super::framework::NodeDescription for ForEachRowNode {
    fn description(&self) -> &str {
        "Iterates through each row of a database query result. Implementation is in interpreter.rs using stack-based execution."
    }
}
