Task Summary
An operator's answer cannot be compared against anything until there is a way to get one. This step adds OpExecHarness: it builds the physical operator a descriptor describes, feeds it the rows of a JSONL file per input port, and writes what each output port produced back out, schema in a sidecar because JSONL carries values alone and cannot say a column is an integer rather than a number.
The tests that need a Python interpreter are tagged and split into a job that provisions one, so the job that does not stays as fast as it was.
Second of the twenty-one steps listed in #8325. It stands on its own: it touches no code from the export itself.
Task Summary
An operator's answer cannot be compared against anything until there is a way to get one. This step adds
OpExecHarness: it builds the physical operator a descriptor describes, feeds it the rows of a JSONL file per input port, and writes what each output port produced back out, schema in a sidecar because JSONL carries values alone and cannot say a column is an integer rather than a number.The tests that need a Python interpreter are tagged and split into a job that provisions one, so the job that does not stays as fast as it was.
Second of the twenty-one steps listed in #8325. It stands on its own: it touches no code from the export itself.