Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for deserializing list-encoded JSON structs [#6558] #6643

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Oct 29, 2024

  1. Add support for deserializing list-encoded JSON structs [apache#6558]

    Currently, a StructArray can only be deserialized from a JSON object
    (e.g. `{a: 1, b: "c"}`), but some services (e.g. Presto and Trino)
    encode ROW types as JSON lists (e.g. `[1, "c"]`) because this is more
    compact, and the schema is known.
    
    This PR adds the ability to parse JSON lists into StructArrays, if the
    StructParseMode is set to ListOnly.  In ListOnly mode, object-encoded
    structs raise an error.  Setting to ObjectOnly (the default) has the
    original parsing behavior.
    
    Some notes/questions/points for discussion:
    1. I've made a JsonParseMode struct instead of a bool flag for two
       reasons.  One is that it's self-descriptive (what would `true` be?),
       and the other is that it allows a future Mixed mode that could
       deserialize either.  The latter isn't currently requested by anyone.
    2. I kept the error messages as similar to the old messages as possible.
       I considered having more specific error messages (like "Encountered a
       '[' when parsing a Struct, but the StructParseMode is ObjectOnly" or
       similar), but wanted to hear opinions before I went that route.
    3. I'm not attached to any name/code-style/etc, so happy to modify to
       fit local conventions.
    
    Fixes apache#6558
    jagill committed Oct 29, 2024
    Configuration menu
    Copy the full SHA
    7181f92 View commit details
    Browse the repository at this point in the history