I am blocked on getting a test (testComplexQuery3) to work that contains a
row of a couple int columns plus a map column where that map contains 2
additional int fields.
Rows just containing simple integer fields work. Next step is let a column
of the top level row be a map that is a pair of additional fields, and
that's failing.

The test fails in the assert here:

@Override
public void endArrayValue() {
  assert state == State.IN_ROW;  // FAILS HERE WITH State.IDLE
  for (AbstractObjectWriter writer : writers) {
    writer.events().endArrayValue();
  }
}

(That is at line 306 of AbstractTupleWriter.java)

This recursively calls endArrayValue on the child writers, and the
state of the first of these is IDLE, not IN_ROW, so it fails the
assert.

This must mean I am doing something wrong with the setup/creation of
the metadata for the map column (line 193 of
DrillDaffodilSchemaVisitor.java) ...

and/or creating and populating the data for this map column (line 177
of DaffodilDrillInfosetOutputter.java).

Any insights would be helpful.

The PR is here: https://github.com/apache/drill/pull/2836

My fork is here: https://github.com/mbeckerle/drill/tree/daffodil-2835
(that's branch daffodil-2835)

Note this fork works with the current 3.7.0-SNAPSHOT version of Apache
Daffodil, but the features in Daffodil it needs are not yet in an
"official" release.

On Linux, in daffodil 'sbt publishM2' before rebuilding drill should
do it once you have everything installed needed to build daffodil (See
BUILD.md in Daffodil).

Mike Beckerle
Apache Daffodil PMC | daffodil.apache.org
OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
Owl Cyber Defense | www.owlcyberdefense.com

Reply via email to