Awesome, thanks Robert!
Will work on updated the proposal around this. Also, @Chris Egerton
<fearthecel...@gmail.com> if you have any feedback about this, would be
much appreciated.

Cheers,
Jorge.

On Fri, 12 Aug 2022 at 18:45, Robert Yokota <rayok...@gmail.com> wrote:

> Hi Jorge,
>
> Yes, to escape a backtick I would recommend a backslash.
>
> For example, MySQL allows identifiers to be surrounded with single quotes,
> double quotes, or backticks, and they use backslash to escape.
>
> Jsonata went with primarily backticks as they are less common in strings
> that appear in JSON, and it seems to have worked nicely for them.
>
> Regards,
> Robert
>
> On Fri, Aug 12, 2022 at 10:01 AM Jorge Esteban Quilcate Otoya <
> quilcate.jo...@gmail.com> wrote:
>
> > Thanks Robert! And sorry for the late reply.
> >
> > That's a great catch and will require the current proposal to be updated.
> >
> > Using back-ticks is a good proposal. Though, the challenge we got is that
> > JSON allows really any character into attribute names, including
> > back-ticks.
> > I wonder what's the best approach to escape back-ticks then. Given that
> > those use-cases should be minimal we could fallback to backslash to
> escape
> > back-ticks?
> >
> > What do you think?
> >
> > Many thanks,
> > Jorge.
> >
> >
> > On Wed, 20 Jul 2022 at 23:03, Robert Yokota <rayok...@gmail.com> wrote:
> >
> > > Hi,
> > >
> > > I'm late to this thread, but would like to comment on the double
> > dot/double
> > > asterisk syntax.
> > >
> > > Unfortunately double dot is often used in JSON Path as a descendant
> > > selector, see https://www.ietf.org/id/draft-ietf-jsonpath-base-05.html
> > >
> > > I think a better notation would be to use backticks to quote any names
> > with
> > > a dot, such as  root.`child.with.dot`.  See Jsonata syntax for example:
> > > http://docs.jsonata.org/simple
> > >
> > > Robert
> > >
> > > On Wed, Jun 29, 2022 at 3:34 AM Jorge Esteban Quilcate Otoya <
> > > quilcate.jo...@gmail.com> wrote:
> > >
> > > > Thanks Chris! I have updated the KIP to include this fix.
> > > >
> > > > I will keep the array as a potential improvement at the moment, and
> out
> > > of
> > > > the scope of this KIP.
> > > >
> > > > Thanks,
> > > > Jorge.
> > > >
> > > > On Tue, 28 Jun 2022 at 23:19, Chris Egerton <fearthecel...@gmail.com
> >
> > > > wrote:
> > > >
> > > > > Hi Jorge,
> > > > >
> > > > > Apologies for the long delay, had my own KIP-related work to focus
> > on.
> > > > >
> > > > > I think it's fine to include array accesses but it's not a blocker.
> > I'm
> > > > +1
> > > > > either way. On that front though, I think the MaskField section
> might
> > > > need
> > > > > to be updated as it still mentions arrays and deep-scan?
> > > > >
> > > > > Cheers,
> > > > >
> > > > > Chris
> > > > >
> > > > > On Tue, Jun 28, 2022 at 4:38 PM Jorge Esteban Quilcate Otoya <
> > > > > quilcate.jo...@gmail.com> wrote:
> > > > >
> > > > > > Hi there,
> > > > > >
> > > > > > I have update the KIP to the previous state voted, including the
> > > > > > configuration change from `field.style` to
> `field.syntax.version`.
> > > > > >
> > > > > > I'll bump the vote thread as well to see if there's agreement on
> > > adding
> > > > > > this feature to Connect.
> > > > > >
> > > > > > Cheers,
> > > > > > Jorge.
> > > > > >
> > > > > > On Wed, 15 Jun 2022 at 23:02, Jorge Esteban Quilcate Otoya <
> > > > > > quilcate.jo...@gmail.com> wrote:
> > > > > >
> > > > > > > Thanks, Chris. Your feedback is much appreciated!
> > > > > > >
> > > > > > > I see how the current proposal might be underestimating some
> edge
> > > > > cases.
> > > > > > > I'm happy to move the design for deep-scan and multi-values to
> > > future
> > > > > > > developments related with this KIP and reduce its scope, though
> > > open
> > > > > for
> > > > > > > more feedback.
> > > > > > >
> > > > > > > Also, just to be sure, are you proposing also to not include
> > array
> > > > > access
> > > > > > > at this stage?
> > > > > > >
> > > > > > > Thanks,
> > > > > > > Jorge.
> > > > > > >
> > > > > > > On Tue, 14 Jun 2022 at 03:20, Chris Egerton <
> > > fearthecel...@gmail.com
> > > > >
> > > > > > > wrote:
> > > > > > >
> > > > > > >> Hi Jorge,
> > > > > > >>
> > > > > > >> I've done some more thinking and I hate to say it, but I think
> > the
> > > > > > syntax
> > > > > > >> does need to be expanded. Right now it's clear what "a.b"
> refers
> > > to
> > > > > and
> > > > > > >> what "a..b" refers to, but what about "a...b"? Is that
> referring
> > > to
> > > > > > >> subfield ".b" of field "a", or subfield "b" of field "a."?
> This
> > > gets
> > > > > > even
> > > > > > >> more complicated when thinking about fields whose names are
> > > > > exclusively
> > > > > > >> made up of dots.
> > > > > > >>
> > > > > > >> I'm also a little hesitant to mix the cases of multi-value
> paths
> > > and
> > > > > > deep
> > > > > > >> scans. What if you only want to access one subfield deep for
> an
> > > SMT,
> > > > > > >> instead of recursing through all the children of a given
> field?
> > > It's
> > > > > > akin
> > > > > > >> to the distinction between * and ** with file globbing
> patterns,
> > > and
> > > > > > there
> > > > > > >> could be a substantial performance difference if you have
> > > > > heavily-nested
> > > > > > >> fields.
> > > > > > >>
> > > > > > >> Ultimately, I think that if the proposed
> "field.syntax.version"
> > > > > property
> > > > > > >> sits well with people, it might be better to reduce the scope
> of
> > > the
> > > > > KIP
> > > > > > >> back to the original proposal and just focus on adding support
> > for
> > > > > > >> explicitly-specified nested values, with no multi-value paths
> > > > > > whatsoever,
> > > > > > >> knowing that we have an easy way to introduce new syntax and
> > > > features
> > > > > in
> > > > > > >> the future. (We could probably leave the "a...b" case for that
> > > next
> > > > > > >> version
> > > > > > >> too.)
> > > > > > >>
> > > > > > >> I was a huge fan of this KIP before we started trying to
> address
> > > > more
> > > > > > >> complex use cases, and although I don't want to write those
> > off, I
> > > > > think
> > > > > > >> we
> > > > > > >> may have bitten off more than we can chew in time for the
> 3.3.0
> > > > > release
> > > > > > >> and
> > > > > > >> would hate to see this KIP get delayed as a result.
> > > > > > >>
> > > > > > >> I'd be really curious to hear from Joshua and Tom on this
> front,
> > > > > though.
> > > > > > >> Is
> > > > > > >> it acceptable to move more incrementally here and settle on
> the
> > > > syntax
> > > > > > >> version property as our means of introducing new features, or
> is
> > > it
> > > > > > >> preferable to implement things monolithically and try to get
> > > > > everything
> > > > > > >> (or
> > > > > > >> at least, as much as possible) right the first time?
> > > > > > >>
> > > > > > >> Thanks again for your continued effort on this KIP!
> > > > > > >>
> > > > > > >> Cheers,
> > > > > > >>
> > > > > > >> Chris
> > > > > > >>
> > > > > > >> On Wed, Jun 8, 2022 at 5:41 PM Jorge Esteban Quilcate Otoya <
> > > > > > >> quilcate.jo...@gmail.com> wrote:
> > > > > > >>
> > > > > > >> > Thanks, Chris!
> > > > > > >> >
> > > > > > >> > Please, find my comments below:
> > > > > > >> >
> > > > > > >> > On Tue, 7 Jun 2022 at 04:39, Chris Egerton <
> > > > fearthecel...@gmail.com
> > > > > >
> > > > > > >> > wrote:
> > > > > > >> >
> > > > > > >> > > Hi Jorge,
> > > > > > >> > >
> > > > > > >> > > Thanks! Sorry for the delay; here are my thoughts:
> > > > > > >> > >
> > > > > > >> > > 1. Under the "Accessing multiple values by deep-scan"
> header
> > > > it's
> > > > > > >> stated
> > > > > > >> > > that "If deep-scan is used, it must have only one field
> > after
> > > > the
> > > > > > >> > asterisk
> > > > > > >> > > level.". However, in example 3 for the Cast SMT and other
> > > > examples
> > > > > > for
> > > > > > >> > > other SMTs, the spec contains a field of "*.child.k2",
> which
> > > > > appears
> > > > > > >> to
> > > > > > >> > > have two fields after the asterisk level. I may be
> > > > > misunderstanding
> > > > > > >> the
> > > > > > >> > > proposal, but it seems like the two contradict each other.
> > > > > > >> > >
> > > > > > >> >
> > > > > > >> > Thanks for catching this. I have clarified it by removing
> this
> > > > > > >> restriction.
> > > > > > >> > Also, have extended the deep-scan scenarios.
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > > 2. I'm a little unclear on why we need the special
> handling
> > > for
> > > > > > arrays
> > > > > > >> > > where, for an array field "a", the field name "a" can be
> > > treated
> > > > > as
> > > > > > >> > either
> > > > > > >> > > the array itself, or every element in the array. Is there
> a
> > > > reason
> > > > > > we
> > > > > > >> > can't
> > > > > > >> > > use the field name "a.*" to handle the latter case, and
> "a"
> > to
> > > > > > handle
> > > > > > >> the
> > > > > > >> > > former?
> > > > > > >> > >
> > > > > > >> >
> > > > > > >> > Agree, this is confusing. I like the `a.*` approach to
> access
> > > > array
> > > > > > >> items.
> > > > > > >> > I have added this to the proposal.
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > > 3. How would a user specify that they'd like to access a
> > field
> > > > > with
> > > > > > >> the
> > > > > > >> > > literal name "*"?
> > > > > > >> > >
> > > > > > >> >
> > > > > > >> > Good one. I'm proposing an approach similar to how it's
> > proposed
> > > > to
> > > > > > >> escape
> > > > > > >> > dots, with a double-asterisk. Curious on your thoughts
> around
> > > > this.
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > > 4. For the Cast SMT, do you think it might bite some
> people
> > if
> > > > > > fields
> > > > > > >> > that
> > > > > > >> > > can't be cast correctly are silently ignored? I'm
> imagining
> > > the
> > > > > case
> > > > > > >> > where
> > > > > > >> > > none of the fields in a multi-path expression can be cast
> > > > > correctly
> > > > > > >> and
> > > > > > >> > it
> > > > > > >> > > ends up eating half of someone's day to track down why
> their
> > > SMT
> > > > > > isn't
> > > > > > >> > > doing anything.
> > > > > > >> > >
> > > > > > >> >
> > > > > > >> > If I understand correctly, this challenge could be relevant
> > > across
> > > > > > SMTs.
> > > > > > >> > At the moment, most/all? SMTs just silently ignore.
> > > > > > >> > Was thinking about adding a flag `field.on.path.not.found`
> to
> > > > either
> > > > > > >> ignore
> > > > > > >> > or fail when no paths are found. What do your think?
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > > 5. For the ExtractField and ValueToKey SMTs, what happens
> > if a
> > > > > > >> deep-scan
> > > > > > >> > > field name is used, but only one field is found? Is the
> > > > resulting
> > > > > > >> field
> > > > > > >> > > still an array, or is it just the single field that was
> > found?
> > > > > (FWIW
> > > > > > >> I'm
> > > > > > >> > > leaning towards keeping it an array just to keep schemas
> > > > > consistent
> > > > > > >> in a
> > > > > > >> > > pipeline in case the number of fields found fluctuates
> > across
> > > > > > >> records.)
> > > > > > >> > >
> > > > > > >> > > Agree. Will clarify that an array is always produced even
> > for
> > > 1
> > > > > or 0
> > > > > > >> > fields are found.
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > > 6. (Nit) For the HeaderFrom SMT, it's stated that "As this
> > SMT
> > > > > > affects
> > > > > > >> > only
> > > > > > >> > > existing fields, additional configurations will not be
> > > > required.".
> > > > > > >> Given
> > > > > > >> > > the new "field.syntax.version" property, this part should
> > > > probably
> > > > > > be
> > > > > > >> > > removed.
> > > > > > >> > >
> > > > > > >> > Agree.
> > > > > > >> >
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > > 7. Is recursive descent intentionally excluded? That was
> an
> > > > > > important
> > > > > > >> > part
> > > > > > >> > > of Joshua's KIP and his feedback on this KIP; I think it's
> > > worth
> > > > > > >> pursuing
> > > > > > >> > > if we can.
> > > > > > >> > >
> > > > > > >> >
> > > > > > >> > My understanding from Joshua's feedback is that by including
> > > > support
> > > > > > for
> > > > > > >> > deep-scan, we are already covering the recursive
> > functionality.
> > > > > > Though,
> > > > > > >> I
> > > > > > >> > may be missing something.
> > > > > > >> >
> > > > > > >> > >
> > > > > > >> > >
> > > > > > >> > > Cheers,
> > > > > > >> > >
> > > > > > >> > > Chris
> > > > > > >> > >
> > > > > > >> > > On Tue, May 24, 2022 at 3:49 AM Jorge Esteban Quilcate
> > Otoya <
> > > > > > >> > > quilcate.jo...@gmail.com> wrote:
> > > > > > >> > >
> > > > > > >> > > > Thanks, Chris!
> > > > > > >> > > >
> > > > > > >> > > > I have updated the KIP with the rejected alternatives
> > > updated.
> > > > > > >> Also, I
> > > > > > >> > > have
> > > > > > >> > > > drafted the support for arrays and deep scans as part of
> > the
> > > > > > >> proposed
> > > > > > >> > > > notation to make it more complete, even though these can
> > be
> > > > > > >> implemented
> > > > > > >> > > in
> > > > > > >> > > > multiple PRs.
> > > > > > >> > > >
> > > > > > >> > > > Looking forward to your feedback.
> > > > > > >> > > >
> > > > > > >> > > > Cheers,
> > > > > > >> > > > Jorge.
> > > > > > >> > > >
> > > > > > >> > > > On Sat, 21 May 2022 at 17:39, Chris Egerton <
> > > > > > >> fearthecel...@gmail.com>
> > > > > > >> > > > wrote:
> > > > > > >> > > >
> > > > > > >> > > > > Hi Jorge,
> > > > > > >> > > > >
> > > > > > >> > > > > I really appreciate the effort you've made to simplify
> > the
> > > > > > syntax
> > > > > > >> and
> > > > > > >> > > > > feature set of a JSONPath-based approach as much as
> > > > possible.
> > > > > > I'm
> > > > > > >> > still
> > > > > > >> > > > > hesitant to continue with it, though.
> > > > > > >> > > > >
> > > > > > >> > > > > 1. The syntax is much less friendly. Just compare
> > > > > > >> "top.mid.bottom" to
> > > > > > >> > > > > "$['top']['mid']['bottom']"... not everyone uses
> > JSONPath
> > > or
> > > > > > even
> > > > > > >> > JSON,
> > > > > > >> > > > and
> > > > > > >> > > > > the learning curve for the former is going to be
> > steeper.
> > > > The
> > > > > > >> > examples
> > > > > > >> > > in
> > > > > > >> > > > > the new KIP draft you published demonstrate this
> pretty
> > > > well,
> > > > > > and
> > > > > > >> > this
> > > > > > >> > > is
> > > > > > >> > > > > without diving into the details of what escape syntax
> > > would
> > > > > look
> > > > > > >> > like.
> > > > > > >> > > > >
> > > > > > >> > > > > 2. The three new major features that this syntax adds
> > > (array
> > > > > > >> > accesses,
> > > > > > >> > > > deep
> > > > > > >> > > > > scans, and multi-value paths) could all be added
> pretty
> > > > easily
> > > > > > to
> > > > > > >> the
> > > > > > >> > > dot
> > > > > > >> > > > > notation syntax without introducing brackets and
> dollar
> > > > signs.
> > > > > > >> Array
> > > > > > >> > > > > accesses can be described using the same syntax as
> > > > struct/map
> > > > > > >> field
> > > > > > >> > > > access,
> > > > > > >> > > > > deep scans can be described using '*', and multi-value
> > > paths
> > > > > can
> > > > > > >> be
> > > > > > >> > > > > described by referencing the name of a field that's
> > > expected
> > > > > to
> > > > > > >> have
> > > > > > >> > > > > children. These are all top-of-the-head ideas and can
> > > > probably
> > > > > > be
> > > > > > >> > > > refined,
> > > > > > >> > > > > but hopefully they demonstrate that we can keep the
> > syntax
> > > > > > simple
> > > > > > >> > > without
> > > > > > >> > > > > sacrificing features. Of course, the question of
> leaving
> > > > room
> > > > > > for
> > > > > > >> > > future
> > > > > > >> > > > > features might arise... given that these are the
> > > > > out-of-the-box
> > > > > > >> SMTs
> > > > > > >> > > that
> > > > > > >> > > > > are likely to be the first that many people encounter,
> > I'd
> > > > err
> > > > > > on
> > > > > > >> the
> > > > > > >> > > > side
> > > > > > >> > > > > of simplicity and a gentle learning curve; if people
> > need
> > > to
> > > > > get
> > > > > > >> more
> > > > > > >> > > out
> > > > > > >> > > > > of transforms, the option to implement their own is
> > still
> > > > > there.
> > > > > > >> If
> > > > > > >> > we
> > > > > > >> > > > can
> > > > > > >> > > > > address 95% of use cases with something easy to use,
> > it's
> > > > not
> > > > > > >> worth
> > > > > > >> > > > making
> > > > > > >> > > > > the feature harder for everyone to use just to
> > accommodate
> > > > the
> > > > > > >> > > remaining
> > > > > > >> > > > > 5%.
> > > > > > >> > > > >
> > > > > > >> > > > > 3. The advantage of leveraging an existing syntax is
> > > > twofold:
> > > > > > >> users
> > > > > > >> > who
> > > > > > >> > > > are
> > > > > > >> > > > > already familiar with that syntax don't need to learn
> a
> > > new
> > > > > > >> syntax,
> > > > > > >> > and
> > > > > > >> > > > > maintainers of the syntax get to leverage existing
> > > libraries
> > > > > and
> > > > > > >> > > > > documentation for the syntax. With the current
> proposal,
> > > > > reusing
> > > > > > >> > > > libraries
> > > > > > >> > > > > is off the table, which means that we're going to have
> > to
> > > > > parse
> > > > > > >> this
> > > > > > >> > > > > ourselves (including all the escape syntax edge
> cases),
> > > and
> > > > we
> > > > > > >> won't
> > > > > > >> > be
> > > > > > >> > > > > able to automatically leverage new features added to
> > that
> > > > > > syntax.
> > > > > > >> And
> > > > > > >> > > > given
> > > > > > >> > > > > how stripped-down the syntax is in comparison to full
> > > > > JSONPath,
> > > > > > >> > there's
> > > > > > >> > > > > still going to be a learning curve for users who are
> > > already
> > > > > > >> familiar
> > > > > > >> > > > with
> > > > > > >> > > > > it, and we'll still have to document how Connect's
> > variant
> > > > of
> > > > > > >> > JSONPath
> > > > > > >> > > > > works either instead of or in addition to just linking
> > to
> > > a
> > > > > > >> > > > well-maintained
> > > > > > >> > > > > third-party docs site.
> > > > > > >> > > > >
> > > > > > >> > > > > On the topic of "field.path" and "include.path" vs.
> > > > > > >> "field.style", I
> > > > > > >> > > > > actually think that a single property per SMT is
> cleaner
> > > and
> > > > > > >> simpler.
> > > > > > >> > > > > Allowing users to mix and match styles within the same
> > SMT
> > > > > > config
> > > > > > >> > seems
> > > > > > >> > > > > like a recipe for confusion, and with a single
> property
> > > that
> > > > > > >> dictates
> > > > > > >> > > > field
> > > > > > >> > > > > syntax behavior, we leave the door open to change the
> > > > default
> > > > > > at a
> > > > > > >> > > later
> > > > > > >> > > > > date. We could even fully remove support for plain
> field
> > > > > > notation
> > > > > > >> at
> > > > > > >> > > some
> > > > > > >> > > > > point and still be able to retain the simple property
> > > names
> > > > of
> > > > > > >> > "field",
> > > > > > >> > > > > "include", etc. instead of forcing people to use
> > > > "field.path"
> > > > > > and
> > > > > > >> the
> > > > > > >> > > > like.
> > > > > > >> > > > > That said, the term "field.style" and the permitted
> > values
> > > > > might
> > > > > > >> be a
> > > > > > >> > > > > little ambiguous. One alternative, though a little
> > > > > heavy-handed,
> > > > > > >> is
> > > > > > >> > to
> > > > > > >> > > > > change it to "field.syntax.version" with permitted
> > values
> > > of
> > > > > > "V1"
> > > > > > >> > > > (default,
> > > > > > >> > > > > equivalent to "field.style = plain") and "V2"
> > (equivalent
> > > to
> > > > > > >> > > > "field.style =
> > > > > > >> > > > > nested"). This would leave us room in the future to
> make
> > > > > further
> > > > > > >> > > changes
> > > > > > >> > > > to
> > > > > > >> > > > > the syntax without having to come up with new names,
> > > > although
> > > > > it
> > > > > > >> does
> > > > > > >> > > > > sacrifice a little bit in that the permitted values
> are
> > no
> > > > > > longer
> > > > > > >> > > > > self-describing.
> > > > > > >> > > > >
> > > > > > >> > > > > Cheers,
> > > > > > >> > > > >
> > > > > > >> > > > > Chris
> > > > > > >> > > > >
> > > > > > >> > > > > On Sun, May 15, 2022 at 4:51 PM Jorge Esteban Quilcate
> > > > Otoya <
> > > > > > >> > > > > quilcate.jo...@gmail.com> wrote:
> > > > > > >> > > > >
> > > > > > >> > > > > > Thank you all for your feedback, and sorry for the
> > long
> > > > wait
> > > > > > >> for a
> > > > > > >> > > > reply.
> > > > > > >> > > > > >
> > > > > > >> > > > > > I would like to explore the idea of
> > > > JSONPath-inspired/subset
> > > > > > >> > > notation a
> > > > > > >> > > > > bit
> > > > > > >> > > > > > further:
> > > > > > >> > > > > >
> > > > > > >> > > > > > It will need to be a much-reduced version of
> JSONPath:
> > > > > > >> > > > > > - No full support for JsonPath therefore an
> additional
> > > > > > >> dependency.
> > > > > > >> > > > > > - All paths must start with '$'
> > > > > > >> > > > > > - No functions support or other operators allowed.
> > > > > > >> > > > > > - JsonPath dotted and square-bracket notations can
> be
> > > > > > supported
> > > > > > >> to
> > > > > > >> > > > avoid
> > > > > > >> > > > > > escaping dots or other characters: `$a.b.c` and
> > > > > > `$['a.b']['c']`
> > > > > > >> -
> > > > > > >> > or
> > > > > > >> > > we
> > > > > > >> > > > > > could only support the second one as it's more
> > complete.
> > > > > > >> > > > > > - Add support for arrays with `[<integer>]`, e.g.
> > > > `$a.[1].b`
> > > > > > >> > > > > > - Add support for multiple-value paths using array
> > > access
> > > > > > >> `$a.*.b`
> > > > > > >> > or
> > > > > > >> > > > > deep
> > > > > > >> > > > > > scan `$a..b`.
> > > > > > >> > > > > >     - Some SMTs that will benefit from this:
> > > `MaskField`,
> > > > > > >> `Cast`,
> > > > > > >> > > > > > `ReplaceField`.
> > > > > > >> > > > > > - We could introduce a `path[s]` config under the
> > > current
> > > > > > >> > > > configurations
> > > > > > >> > > > > to
> > > > > > >> > > > > > apply this feature so no compatibility issues are
> > > > > introduced:
> > > > > > >> e.g.
> > > > > > >> > > > > > `field.path`, `fields.paths`, `exclude.path`.
> > > > > > >> > > > > >
> > > > > > >> > > > > > With these,  100, 101, 102, and 103 will be
> > effectively
> > > > > > solved.
> > > > > > >> > > > > >
> > > > > > >> > > > > > The main challenge that I see at the moment is that
> by
> > > > being
> > > > > > >> JSON
> > > > > > >> > > > > > path-like, there may be some edge cases that I can't
> > > > foresee
> > > > > > at
> > > > > > >> the
> > > > > > >> > > > > moment,
> > > > > > >> > > > > > that could make this hard to implement, test, and
> > > maintain
> > > > > in
> > > > > > >> the
> > > > > > >> > > long
> > > > > > >> > > > > run.
> > > > > > >> > > > > >
> > > > > > >> > > > > > I'll appreciate your feedback on how this
> > JSONPath-based
> > > > > > >> > alternative
> > > > > > >> > > > > > compares to the dotted notation initially proposed,
> > and
> > > if
> > > > > it
> > > > > > >> > matches
> > > > > > >> > > > > your
> > > > > > >> > > > > > feedback.
> > > > > > >> > > > > > I have drafted a copy of the KIP to change the
> > examples
> > > to
> > > > > > >> JSONPath
> > > > > > >> > > > > > approach and validate some differences:
> > > > > > >> > > > > > https://cwiki.apache.org/confluence/x/9BihD
> > > > > > >> > > > > >
> > > > > > >> > > > > > About 104. I agreed with Chris. We can handle this
> as
> > > part
> > > > > of
> > > > > > a
> > > > > > >> new
> > > > > > >> > > > KIP.
> > > > > > >> > > > > >
> > > > > > >> > > > > > Thanks,
> > > > > > >> > > > > > Jorge.
> > > > > > >> > > > > >
> > > > > > >> > > > > > On Sun, 24 Apr 2022 at 17:27, Chris Egerton <
> > > > > > >> > fearthecel...@gmail.com
> > > > > > >> > > >
> > > > > > >> > > > > > wrote:
> > > > > > >> > > > > >
> > > > > > >> > > > > > > Hi Joshua,
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > I have a few reservations about using JsonPath
> > > notation
> > > > > > here.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > 1. There's likely to be a substantial performance
> > > > penalty
> > > > > > for
> > > > > > >> > > > > converting
> > > > > > >> > > > > > > between the Kafka Connect format and something
> that
> > a
> > > > > > JsonPath
> > > > > > >> > > > library
> > > > > > >> > > > > > > would understand.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > 2. The complexity of the feature will be
> > significantly
> > > > > > >> higher. It
> > > > > > >> > > > will
> > > > > > >> > > > > be
> > > > > > >> > > > > > > harder to test, document, and implement. There
> will
> > be
> > > > > many
> > > > > > >> more
> > > > > > >> > > edge
> > > > > > >> > > > > > cases
> > > > > > >> > > > > > > to consider and support, and we'll be on the hook
> to
> > > > > handle
> > > > > > >> any
> > > > > > >> > > bugs
> > > > > > >> > > > or
> > > > > > >> > > > > > > inconsistencies that arise, either as a result of
> > our
> > > > use
> > > > > of
> > > > > > >> the
> > > > > > >> > > > > JsonPath
> > > > > > >> > > > > > > library we choose, or as a result of bugs in that
> > > > library.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > 3. It's not clear that JsonPath is superior or
> even
> > > > > suitable
> > > > > > >> for
> > > > > > >> > > some
> > > > > > >> > > > > of
> > > > > > >> > > > > > > the SMTs proposed here. What would be the
> advantages
> > > of
> > > > > > >> JsonPath
> > > > > > >> > > with
> > > > > > >> > > > > the
> > > > > > >> > > > > > > InsertField or HoistField SMTs?
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > I also don't think that adding dot notation is
> > > > unfriendly
> > > > > to
> > > > > > >> > users;
> > > > > > >> > > > > many
> > > > > > >> > > > > > > have proposed this type of syntax in the past, and
> > > it's
> > > > > > >> > frequently
> > > > > > >> > > > used
> > > > > > >> > > > > > in
> > > > > > >> > > > > > > informal discussions to refer to nested fields. If
> > the
> > > > > > >> proposed
> > > > > > >> > > > syntax
> > > > > > >> > > > > > was
> > > > > > >> > > > > > > not already intuitive then a case against deciding
> > on
> > > > our
> > > > > > own
> > > > > > >> > might
> > > > > > >> > > > be
> > > > > > >> > > > > > more
> > > > > > >> > > > > > > convincing, but as things stand, simple dot
> notation
> > > is
> > > > > > likely
> > > > > > >> > > going
> > > > > > >> > > > to
> > > > > > >> > > > > > be
> > > > > > >> > > > > > > easier for users to understand than JsonPath
> syntax.
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Cheers,
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > Chris
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > On Fri, Apr 22, 2022 at 9:31 AM Joshua Grisham <
> > > > > > >> > > > grishamj...@gmail.com>
> > > > > > >> > > > > > > wrote:
> > > > > > >> > > > > > >
> > > > > > >> > > > > > > > Hello all!
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Sorry that I come a bit later to the party here,
> > > but I
> > > > > am
> > > > > > >> the
> > > > > > >> > one
> > > > > > >> > > > who
> > > > > > >> > > > > > > wrote
> > > > > > >> > > > > > > > KIP-683 [1] for recursive support (just simply
> > > looping
> > > > > > >> through
> > > > > > >> > > all
> > > > > > >> > > > > > child
> > > > > > >> > > > > > > > non-primitive structures for the same matching
> > > > name(s))
> > > > > > >> which
> > > > > > >> > is
> > > > > > >> > > a
> > > > > > >> > > > > > > slightly
> > > > > > >> > > > > > > > different way to try and solve a similar
> > requirement
> > > > --
> > > > > > >> > > > unfortunately
> > > > > > >> > > > > > at
> > > > > > >> > > > > > > > the time the dev community was not quite as
> active
> > > and
> > > > > > then
> > > > > > >> I
> > > > > > >> > > also
> > > > > > >> > > > > got
> > > > > > >> > > > > > > busy
> > > > > > >> > > > > > > > with work and just life in general so wasn't
> able
> > to
> > > > > > follow
> > > > > > >> up
> > > > > > >> > or
> > > > > > >> > > > > push
> > > > > > >> > > > > > > it.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > I do think it is a very good idea to have some
> > kind
> > > of
> > > > > > >> > path-like
> > > > > > >> > > > > > > expression
> > > > > > >> > > > > > > > to be able to specifically address a nested
> field,
> > > as
> > > > I
> > > > > > can
> > > > > > >> see
> > > > > > >> > > > that
> > > > > > >> > > > > > the
> > > > > > >> > > > > > > > simple "recursive" case could potentially result
> > in
> > > > > > >> unwanted or
> > > > > > >> > > > > > > unexpected
> > > > > > >> > > > > > > > behavior, plus there is the potential to
> > introduce a
> > > > bit
> > > > > > of
> > > > > > >> a
> > > > > > >> > > > > > performance
> > > > > > >> > > > > > > > hit to always loop through everything in cases
> > where
> > > > the
> > > > > > >> > > > > schemas/values
> > > > > > >> > > > > > > > might be quite large.
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > One thing I wanted to ask: instead of creating a
> > new
> > > > > "path
> > > > > > >> > > parser"
> > > > > > >> > > > > > > > including some bespoke or "borrowed" syntax, why
> > not
> > > > > just
> > > > > > >> use
> > > > > > >> > > > > something
> > > > > > >> > > > > > > > that already exists? Specifically here I am
> > thinking
> > > > > about
> > > > > > >> > > > JsonPath (
> > > > > > >> > > > > > > > https://github.com/json-path/JsonPath)
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > There is already quite nice support in JsonPath
> > for
> > > > > > handling
> > > > > > >> > > > special
> > > > > > >> > > > > > > > characters in field names, for handling
> different
> > > > > > >> non-primitive
> > > > > > >> > > > types
> > > > > > >> > > > > > > > (arrays etc), for handling multiple levels of
> > > nesting,
> > > > > etc
> > > > > > >> etc.
> > > > > > >> > > > > Would
> > > > > > >> > > > > > it
> > > > > > >> > > > > > > > be possible to instead to re-think this and
> maybe
> > > have
> > > > > > some
> > > > > > >> > kind
> > > > > > >> > > of
> > > > > > >> > > > > > > > JsonPath-based Schema selector / updater and/or
> > > > > > >> JsonPath-based
> > > > > > >> > > > Value
> > > > > > >> > > > > > > > selector / updater? Conceptually this feels like
> > it
> > > > > makes
> > > > > > >> sense
> > > > > > >> > > to
> > > > > > >> > > > > me,
> > > > > > >> > > > > > as
> > > > > > >> > > > > > > > from the top of my head it would be quite a
> > natural
> > > > fit
> > > > > to
> > > > > > >> map
> > > > > > >> > a
> > > > > > >> > > > Json
> > > > > > >> > > > > > > data
> > > > > > >> > > > > > > > structure to the Connect API data structure (and
> > you
> > > > > could
> > > > > > >> > > > > potentially
> > > > > > >> > > > > > > even
> > > > > > >> > > > > > > > try to leverage the existing Json-to-Connect
> > > > > > >> > > > serializer/deserializer
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > help out with this even in a more "out of the
> > > > > box"-feeling
> > > > > > >> kind
> > > > > > >> > > of
> > > > > > >> > > > > > way).
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Maybe also as Tom mentioned, this part (in my
> > > example,
> > > > > > this
> > > > > > >> > > > > > > JsonPath-based
> > > > > > >> > > > > > > > "thing") could even be a generic API that could
> be
> > > > used
> > > > > by
> > > > > > >> any
> > > > > > >> > > SMT,
> > > > > > >> > > > > > > > including used in custom ones built by the
> > > community.
> > > > > > Then
> > > > > > >> I
> > > > > > >> > > think
> > > > > > >> > > > > to
> > > > > > >> > > > > > > use
> > > > > > >> > > > > > > > a completely separate config property somehow
> > > related
> > > > to
> > > > > > >> "path"
> > > > > > >> > > (as
> > > > > > >> > > > > Tom
> > > > > > >> > > > > > > > also mentioned) would also make a lot of sense
> > here
> > > as
> > > > > > well.
> > > > > > >> > This
> > > > > > >> > > > > way,
> > > > > > >> > > > > > if
> > > > > > >> > > > > > > > you select based on "path" then this
> > JsonPath-based
> > > > API
> > > > > > >> would
> > > > > > >> > be
> > > > > > >> > > > > used,
> > > > > > >> > > > > > > > otherwise it could use something similar to the
> > > > existing
> > > > > > >> > > get-field
> > > > > > >> > > > > > based
> > > > > > >> > > > > > > > approach (which I guess could also be refactored
> > > into
> > > > > some
> > > > > > >> kind
> > > > > > >> > > of
> > > > > > >> > > > > > > utility
> > > > > > >> > > > > > > > / API as well if it made sense?)
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > And with that in mind, if this was the kind of
> > > > direction
> > > > > > to
> > > > > > >> go,
> > > > > > >> > > > then
> > > > > > >> > > > > a
> > > > > > >> > > > > > > > "recursive" capability like I pitched in KIP-683
> > > would
> > > > > > also
> > > > > > >> > > become
> > > > > > >> > > > > > > > unnecessary because you could easily write a
> > > JsonPath
> > > > > > >> > expression
> > > > > > >> > > > like
> > > > > > >> > > > > > > > "$..someRecuriveField" and it would do the same
> > > thing
> > > > > (on
> > > > > > >> top
> > > > > > >> > of
> > > > > > >> > > > > > anything
> > > > > > >> > > > > > > > else you would want to do that is already
> > supported
> > > by
> > > > > > >> > JsonPath).
> > > > > > >> > > > > Then
> > > > > > >> > > > > > we
> > > > > > >> > > > > > > > could also kill that older KIP and do a bit of
> > > > clean-up
> > > > > :)
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > [1] -
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-683%3A+Add+recursive+support+to+Connect+Cast+and+ReplaceField+transforms%2C+and+support+for+casting+complex+types+to+either+a+native+or+JSON+string
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Just some extra food for thought. All-in-all I
> > think
> > > > > this
> > > > > > >> is a
> > > > > > >> > > > super
> > > > > > >> > > > > > > great
> > > > > > >> > > > > > > > initiative!
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Best,
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Joshua
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > Den fre 22 apr. 2022 kl 14:50 skrev Chris
> Egerton
> > <
> > > > > > >> > > > > > > fearthecel...@gmail.com
> > > > > > >> > > > > > > > >:
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > > Hi Tom,
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > Thanks for taking a look at this, and for your
> > > > > > thoughtful
> > > > > > >> > > > comments.
> > > > > > >> > > > > > > I'll
> > > > > > >> > > > > > > > > leave it up to Jorge to address most of your
> > > > comments
> > > > > > but
> > > > > > >> I
> > > > > > >> > > > wanted
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > share
> > > > > > >> > > > > > > > > a couple quick thoughts I had regarding 103
> and
> > > 104.
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > 103. Like you, I was envisioning a possible
> > syntax
> > > > for
> > > > > > >> array
> > > > > > >> > > > access
> > > > > > >> > > > > > > that
> > > > > > >> > > > > > > > > used classic C-style brackets; e.g.,
> > `arr[index]`.
> > > > > > >> However, I
> > > > > > >> > > > > wonder
> > > > > > >> > > > > > if
> > > > > > >> > > > > > > > we
> > > > > > >> > > > > > > > > could keep things simple and use the same
> syntax
> > > > that
> > > > > > >> we're
> > > > > > >> > > > > proposing
> > > > > > >> > > > > > > for
> > > > > > >> > > > > > > > > nested field access? In other words, instead
> of
> > > > > > >> `arr[index]`,
> > > > > > >> > > > you'd
> > > > > > >> > > > > > > write
> > > > > > >> > > > > > > > > `arr.index`. It'd save us and users the
> headache
> > > of
> > > > > > >> reserving
> > > > > > >> > > > > > > characters
> > > > > > >> > > > > > > > > now that would need to be escaped even if
> their
> > > > > > unescaped
> > > > > > >> > > > brethren
> > > > > > >> > > > > > > aren't
> > > > > > >> > > > > > > > > used for anything, and also avoid the question
> > of
> > > > what
> > > > > > >> > exactly
> > > > > > >> > > we
> > > > > > >> > > > > > > should
> > > > > > >> > > > > > > > do
> > > > > > >> > > > > > > > > when we see a config that uses reserved
> > characters
> > > > > that
> > > > > > >> > aren't
> > > > > > >> > > > yet
> > > > > > >> > > > > > > > > supported (throwing an exception seems pretty
> > > > > unfriendly
> > > > > > >> for
> > > > > > >> > > new
> > > > > > >> > > > > > > users).
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > 104. This would probably be useful, but it
> would
> > > > come
> > > > > > with
> > > > > > >> > some
> > > > > > >> > > > > nasty
> > > > > > >> > > > > > > > > compatibility questions that would need to be
> > > > > addressed
> > > > > > if
> > > > > > >> > we'd
> > > > > > >> > > > > want
> > > > > > >> > > > > > > SMTs
> > > > > > >> > > > > > > > > that leverage this new API to be viable for
> > older
> > > > > > >> versions of
> > > > > > >> > > > > > Connect.
> > > > > > >> > > > > > > If
> > > > > > >> > > > > > > > > we package and distribute this feature as a
> > > library
> > > > > > >> (either
> > > > > > >> > via
> > > > > > >> > > > an
> > > > > > >> > > > > > > > entirely
> > > > > > >> > > > > > > > > new artifact, or as part of the existing
> > > > > > >> connect-transforms
> > > > > > >> > or
> > > > > > >> > > > > > > > connect-api
> > > > > > >> > > > > > > > > artifacts), then we'd have to either sidestep
> > the
> > > > > > existing
> > > > > > >> > > plugin
> > > > > > >> > > > > > > > isolation
> > > > > > >> > > > > > > > > logic [1] that basically makes it impossible
> for
> > > > > Connect
> > > > > > >> > > plugins
> > > > > > >> > > > to
> > > > > > >> > > > > > > ship
> > > > > > >> > > > > > > > > their own versions of Connect artifacts, or
> > issue
> > > a
> > > > > big
> > > > > > >> > warning
> > > > > > >> > > > to
> > > > > > >> > > > > > > people
> > > > > > >> > > > > > > > > that any SMT that uses this API won't work
> with
> > > any
> > > > > > older
> > > > > > >> > > > versions
> > > > > > >> > > > > of
> > > > > > >> > > > > > > > > Connect. There's also some other features we
> > might
> > > > > want
> > > > > > to
> > > > > > >> > add
> > > > > > >> > > in
> > > > > > >> > > > > an
> > > > > > >> > > > > > > > > SMT-utils library such as the existing,
> > internal,
> > > > > utils
> > > > > > >> that
> > > > > > >> > > > > Connect
> > > > > > >> > > > > > > uses
> > > > > > >> > > > > > > > > right now [2]. It may be worth exploring this
> > in a
> > > > > > >> separate
> > > > > > >> > KIP
> > > > > > >> > > > of
> > > > > > >> > > > > > its
> > > > > > >> > > > > > > > own.
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > [1] -
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/d480c4aa6e513e36050d8e067931de2270525d18/connect/runtime/src/main/java/org/apache/kafka/connect/runtime/isolation/PluginUtils.java#L46-L143
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > [2] -
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/kafka/tree/d480c4aa6e513e36050d8e067931de2270525d18/connect/transforms/src/main/java/org/apache/kafka/connect/transforms/util
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > Cheers,
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > Chris
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > On Fri, Apr 22, 2022 at 6:55 AM Tom Bentley <
> > > > > > >> > > tbent...@redhat.com
> > > > > > >> > > > >
> > > > > > >> > > > > > > wrote:
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > Thanks for the KIP, especially for the
> > examples
> > > > > which
> > > > > > >> are
> > > > > > >> > > > > > > super-clear.
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > 100. The name `field.style` isn't so clear
> for
> > > > > > something
> > > > > > >> > like
> > > > > > >> > > > > > > > > ReplaceField:
> > > > > > >> > > > > > > > > > it's not so obvious that field.style applies
> > to
> > > > > > >> `include`
> > > > > > >> > and
> > > > > > >> > > > > > > > `exclude`.
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > 101. The permitted values for `field.style`
> > > don't
> > > > > seem
> > > > > > >> > > terribly
> > > > > > >> > > > > > > > intuitive
> > > > > > >> > > > > > > > > > (to me anyway): the meaning of `plain` isn't
> > > very
> > > > > > >> > guessable.
> > > > > > >> > > > Why
> > > > > > >> > > > > > not
> > > > > > >> > > > > > > > > > `top-level` or `root` instead? Also `nested`
> > > could
> > > > > be
> > > > > > >> > > > > misconstrued
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > > mean
> > > > > > >> > > > > > > > > > nested-but-not-top-level, so perhaps
> > `recursive`
> > > > or
> > > > > > >> > > `cascading`
> > > > > > >> > > > > > might
> > > > > > >> > > > > > > > be
> > > > > > >> > > > > > > > > > better?
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > 102. I'm torn on whether making the
> > > interpretation
> > > > > of
> > > > > > >> > > existing
> > > > > > >> > > > > > > configs
> > > > > > >> > > > > > > > > like
> > > > > > >> > > > > > > > > > `field` be dependent on `field.style` is a
> > good
> > > > > idea.
> > > > > > I
> > > > > > >> can
> > > > > > >> > > see
> > > > > > >> > > > > > that
> > > > > > >> > > > > > > > it's
> > > > > > >> > > > > > > > > > the simplest thing to do, but it just feels
> a
> > > bit
> > > > > odd
> > > > > > >> that
> > > > > > >> > > > > > sometimes
> > > > > > >> > > > > > > > the
> > > > > > >> > > > > > > > > > `field` would actually be a path and have
> > > > different
> > > > > > >> > escaping
> > > > > > >> > > > > rules.
> > > > > > >> > > > > > > An
> > > > > > >> > > > > > > > > > alternative would be to come up with a
> > parallel
> > > > set
> > > > > of
> > > > > > >> > config
> > > > > > >> > > > > names
> > > > > > >> > > > > > > > (e.g.
> > > > > > >> > > > > > > > > > as well as "field" an SMT might support
> > "path")
> > > > > which
> > > > > > >> were
> > > > > > >> > > > > defined
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > > > always take paths, thus avoiding the
> > changeable
> > > > > > >> > > interpretation
> > > > > > >> > > > of
> > > > > > >> > > > > > the
> > > > > > >> > > > > > > > > > existing configs. The SMT's #configure()
> would
> > > > need
> > > > > to
> > > > > > >> > throw
> > > > > > >> > > in
> > > > > > >> > > > > the
> > > > > > >> > > > > > > > case
> > > > > > >> > > > > > > > > > that both configs were given. I can see that
> > > that
> > > > > > would
> > > > > > >> be
> > > > > > >> > > more
> > > > > > >> > > > > > work
> > > > > > >> > > > > > > in
> > > > > > >> > > > > > > > > > implementation, but it feels cleaner.
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > 103. I think in order to allow for
> supporting
> > > > arrays
> > > > > > in
> > > > > > >> a
> > > > > > >> > > later
> > > > > > >> > > > > KIP
> > > > > > >> > > > > > > > > (which
> > > > > > >> > > > > > > > > > certainly seems like it could be useful),
> we'd
> > > > want
> > > > > to
> > > > > > >> > > specify
> > > > > > >> > > > > the
> > > > > > >> > > > > > > > syntax
> > > > > > >> > > > > > > > > > now, even if it wasn't implemented under
> this
> > > KIP.
> > > > > > >> That's
> > > > > > >> > > > > because I
> > > > > > >> > > > > > > > don't
> > > > > > >> > > > > > > > > > think you can't exclude the possibility that
> > > > > > characters
> > > > > > >> > such
> > > > > > >> > > as
> > > > > > >> > > > > `[`
> > > > > > >> > > > > > > and
> > > > > > >> > > > > > > > > `]`
> > > > > > >> > > > > > > > > > appear in field names. So you'd have a
> > > > compatibility
> > > > > > >> > problem
> > > > > > >> > > if
> > > > > > >> > > > > > > people
> > > > > > >> > > > > > > > > > started using the features of this KIP to
> > access
> > > > > such
> > > > > > >> > fields,
> > > > > > >> > > > > only
> > > > > > >> > > > > > > for
> > > > > > >> > > > > > > > > > those characters to change their meaning
> > under a
> > > > > later
> > > > > > >> KIP.
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > 104. I also wonder whether making paths
> into a
> > > > > public
> > > > > > >> Java
> > > > > > >> > > API,
> > > > > > >> > > > > for
> > > > > > >> > > > > > > use
> > > > > > >> > > > > > > > > by
> > > > > > >> > > > > > > > > > 3rd party SMTs, would be valuable.
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > Thanks again,
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > Tom
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > On Wed, 20 Apr 2022 at 17:53, Chris Egerton
> <
> > > > > > >> > > > > > fearthecel...@gmail.com
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > > 💯 Thanks Jorge, LGTM!
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > > > On Wed, Apr 20, 2022, 12:40 Jorge Esteban
> > > > Quilcate
> > > > > > >> Otoya
> > > > > > >> > <
> > > > > > >> > > > > > > > > > > quilcate.jo...@gmail.com> wrote:
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > Thank you, Chris! Not possible without
> > your
> > > > > > >> feedback.
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > On Tue, 19 Apr 2022 at 23:04, Chris
> > Egerton
> > > <
> > > > > > >> > > > > > > > fearthecel...@gmail.com
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Thank you for sticking through this. I
> > > have
> > > > > one
> > > > > > >> small
> > > > > > >> > > > > remark
> > > > > > >> > > > > > > and
> > > > > > >> > > > > > > > > one
> > > > > > >> > > > > > > > > > > > small
> > > > > > >> > > > > > > > > > > > > clarification; assuming you agree with
> > me
> > > on
> > > > > > them
> > > > > > >> > then
> > > > > > >> > > > I'm
> > > > > > >> > > > > > > ready
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > > vote
> > > > > > >> > > > > > > > > > > > on
> > > > > > >> > > > > > > > > > > > > the KIP.
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > 1. InsertField: The
> > > > "field.on.missing.parent"
> > > > > > and
> > > > > > >> > > > > > > > > > > > "field.on.existing.field"
> > > > > > >> > > > > > > > > > > > > docs both mention a permitted value of
> > > > > "ingore";
> > > > > > >> this
> > > > > > >> > > > > should
> > > > > > >> > > > > > be
> > > > > > >> > > > > > > > > > > "ignore",
> > > > > > >> > > > > > > > > > > > > right?
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > Of course, one more typo :)
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > 2. InsertField: The examples are still
> > > > missing
> > > > > > the
> > > > > > >> > > > > > > "field.style"
> > > > > > >> > > > > > > > > > > property
> > > > > > >> > > > > > > > > > > > > from the configurations. They should
> all
> > > > > include
> > > > > > >> the
> > > > > > >> > > > > property
> > > > > > >> > > > > > > > > > > > > "transforms.smt1.field.style":
> "nested",
> > > > > > correct?
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > Yes, it is there. I think I know what
> you
> > > mean
> > > > > > now,
> > > > > > >> > seems
> > > > > > >> > > > > that
> > > > > > >> > > > > > > > > > Confluence
> > > > > > >> > > > > > > > > > > > is putting everything in one line when
> > it's
> > > in
> > > > > > >> separate
> > > > > > >> > > > lines
> > > > > > >> > > > > > in
> > > > > > >> > > > > > > > the
> > > > > > >> > > > > > > > > > > > editor.
> > > > > > >> > > > > > > > > > > > Hopefully, it's fixed now.
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Thanks again for working through this,
> > and
> > > > > > >> > > > congratulations
> > > > > > >> > > > > > on a
> > > > > > >> > > > > > > > > > > > > well-written KIP!
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > On Tue, Apr 19, 2022 at 2:06 PM Jorge
> > > > Esteban
> > > > > > >> > Quilcate
> > > > > > >> > > > > Otoya
> > > > > > >> > > > > > <
> > > > > > >> > > > > > > > > > > > > quilcate.jo...@gmail.com> wrote:
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > Thank you, Chris! I apply these
> > > > improvements
> > > > > > to
> > > > > > >> the
> > > > > > >> > > > KIP,
> > > > > > >> > > > > > let
> > > > > > >> > > > > > > me
> > > > > > >> > > > > > > > > > know
> > > > > > >> > > > > > > > > > > > how
> > > > > > >> > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > looks now.
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > On Mon, 11 Apr 2022 at 23:43, Chris
> > > > Egerton
> > > > > <
> > > > > > >> > > > > > > > > > fearthecel...@gmail.com
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > Wow, those examples are great! A
> few
> > > > more
> > > > > > >> > remarks,
> > > > > > >> > > > but
> > > > > > >> > > > > I
> > > > > > >> > > > > > > > think
> > > > > > >> > > > > > > > > > > we're
> > > > > > >> > > > > > > > > > > > > > > getting close:
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > 1. The examples differ across SMTs
> > > with
> > > > > the
> > > > > > >> name
> > > > > > >> > of
> > > > > > >> > > > the
> > > > > > >> > > > > > > > > > > > > newly-introduced
> > > > > > >> > > > > > > > > > > > > > > style property; some of them use
> > > > > > >> "field.style",
> > > > > > >> > and
> > > > > > >> > > > > some
> > > > > > >> > > > > > > use
> > > > > > >> > > > > > > > > > > > > > > "fields.style". I think for
> > > > consistency's
> > > > > > >> sake we
> > > > > > >> > > > > should
> > > > > > >> > > > > > > > stick
> > > > > > >> > > > > > > > > > with
> > > > > > >> > > > > > > > > > > > > just
> > > > > > >> > > > > > > > > > > > > > > "field.style"; otherwise it could
> be
> > > > > painful
> > > > > > >> for
> > > > > > >> > > > users
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > have
> > > > > > >> > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > remember
> > > > > > >> > > > > > > > > > > > > > > which to use.
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > Great catch. Agree, I fixed the
> config
> > > > names
> > > > > > to
> > > > > > >> > > > > > > `field.style`.
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > 2. Some of the examples are off:
> > > > > > >> > > > > > > > > > > > > > > - TimestampConverter: the input in
> > the
> > > > > > second
> > > > > > >> > > example
> > > > > > >> > > > > > > ("when
> > > > > > >> > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > names
> > > > > > >> > > > > > > > > > > > > > > include dots") doesn't contain a
> > field
> > > > > with
> > > > > > a
> > > > > > >> > > dotted
> > > > > > >> > > > > name
> > > > > > >> > > > > > > > > > > > > > > - ValueToKey: the config in the
> > third
> > > > > > example
> > > > > > >> > > ("when
> > > > > > >> > > > > > field
> > > > > > >> > > > > > > > > names
> > > > > > >> > > > > > > > > > > > > include
> > > > > > >> > > > > > > > > > > > > > > dots") should probably use
> > > > > > "parent..child.k2"
> > > > > > >> as
> > > > > > >> > > the
> > > > > > >> > > > > > > > > > > > > > > "transforms.smt1.fields" property
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > Fixed. Thanks!
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > 3. RE changes to InsertField:
> > > > > > >> > > > > > > > > > > > > > > - The InsertField SMT should also
> > come
> > > > > with
> > > > > > >> the
> > > > > > >> > new
> > > > > > >> > > > > > > > > "field.style"
> > > > > > >> > > > > > > > > > > > > > property
> > > > > > >> > > > > > > > > > > > > > > in order to preserve backwards
> > > > > > compatibility,
> > > > > > >> > > right?
> > > > > > >> > > > I
> > > > > > >> > > > > > > don't
> > > > > > >> > > > > > > > > see
> > > > > > >> > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > included in the example configs
> for
> > > that
> > > > > > one,
> > > > > > >> > just
> > > > > > >> > > > want
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > make
> > > > > > >> > > > > > > > > > > sure
> > > > > > >> > > > > > > > > > > > > > > - I don't know of any cases where
> we
> > > use
> > > > > > >> > snake_case
> > > > > > >> > > > for
> > > > > > >> > > > > > > > > property
> > > > > > >> > > > > > > > > > > > names
> > > > > > >> > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > Kafka; we should probably use
> > > > > > >> "on.missing.parent"
> > > > > > >> > > and
> > > > > > >> > > > > > > > > > > > > "on.existing.field"
> > > > > > >> > > > > > > > > > > > > > > as the new property names for
> > > > InsertField.
> > > > > > >> > > > > > > > > > > > > > > - Why is the "on_existing_field"
> (or
> > > > > > >> > > > > "on.existing.field")
> > > > > > >> > > > > > > > > > property
> > > > > > >> > > > > > > > > > > > only
> > > > > > >> > > > > > > > > > > > > > > applied when the field style is
> > > nested?
> > > > > > >> Couldn't
> > > > > > >> > it
> > > > > > >> > > > be
> > > > > > >> > > > > > > useful
> > > > > > >> > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > non-nested fields as well?
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > Great points! I have applied these
> > > > > suggestions
> > > > > > >> to
> > > > > > >> > the
> > > > > > >> > > > > KIP.
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > On Sat, Apr 9, 2022 at 12:40 PM
> > Jorge
> > > > > > Esteban
> > > > > > >> > > > Quilcate
> > > > > > >> > > > > > > Otoya
> > > > > > >> > > > > > > > <
> > > > > > >> > > > > > > > > > > > > > > quilcate.jo...@gmail.com> wrote:
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > Again, great feedback Chris.
> Much
> > > > > > >> appreciated.
> > > > > > >> > > > > > > > > > > > > > > > Added my comments below:
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > On Tue, 5 Apr 2022 at 20:22,
> Chris
> > > > > > Egerton <
> > > > > > >> > > > > > > > > > > > fearthecel...@gmail.com>
> > > > > > >> > > > > > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > Looking good! I have a few
> > > comments
> > > > > left
> > > > > > >> but
> > > > > > >> > > all
> > > > > > >> > > > > but
> > > > > > >> > > > > > > one
> > > > > > >> > > > > > > > or
> > > > > > >> > > > > > > > > > two
> > > > > > >> > > > > > > > > > > > are
> > > > > > >> > > > > > > > > > > > > > > > minor.
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > 1. The motivation section
> states
> > > > "This
> > > > > > >> KIP is
> > > > > > >> > > > aimed
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > > > include
> > > > > > >> > > > > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > nested structures on the
> > existing
> > > > > > SMTs...
> > > > > > >> and
> > > > > > >> > > to
> > > > > > >> > > > > > > include
> > > > > > >> > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > abstractions
> > > > > > >> > > > > > > > > > > > > > > > > to reuse this in future
> SMTs". A
> > > > good
> > > > > > >> > > > > implementation
> > > > > > >> > > > > > of
> > > > > > >> > > > > > > > > this
> > > > > > >> > > > > > > > > > > KIP
> > > > > > >> > > > > > > > > > > > > will
> > > > > > >> > > > > > > > > > > > > > > > > definitely isolate reusable
> > logic
> > > > > into a
> > > > > > >> > > separate
> > > > > > >> > > > > > > > > abstraction
> > > > > > >> > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > can
> > > > > > >> > > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > easily pulled in to the SMTs
> we
> > > want
> > > > > to
> > > > > > >> add
> > > > > > >> > > > nested
> > > > > > >> > > > > > > field
> > > > > > >> > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > to,
> > > > > > >> > > > > > > > > > > > > > > but
> > > > > > >> > > > > > > > > > > > > > > > > unless we plan on making this
> > kind
> > > > of
> > > > > > >> > > abstraction
> > > > > > >> > > > > > > > publicly
> > > > > > >> > > > > > > > > > > > > available
> > > > > > >> > > > > > > > > > > > > > as
> > > > > > >> > > > > > > > > > > > > > > > > some kind of utility method or
> > > class
> > > > > > that
> > > > > > >> > > > external
> > > > > > >> > > > > > SMT
> > > > > > >> > > > > > > > > > > developers
> > > > > > >> > > > > > > > > > > > > can
> > > > > > >> > > > > > > > > > > > > > > > > leverage, we can probably
> leave
> > > this
> > > > > > part
> > > > > > >> out
> > > > > > >> > > as
> > > > > > >> > > > > it's
> > > > > > >> > > > > > > > more
> > > > > > >> > > > > > > > > of
> > > > > > >> > > > > > > > > > > an
> > > > > > >> > > > > > > > > > > > > > > > > implementation detail.
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > Make sense, will leave this out
> of
> > > the
> > > > > > KIP.
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > 2. The Cast example is a
> little
> > > > > > >> misleading,
> > > > > > >> > > isn't
> > > > > > >> > > > > it?
> > > > > > >> > > > > > > It
> > > > > > >> > > > > > > > > > > > > demonstrates
> > > > > > >> > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > escape syntax for fields with
> > dot
> > > > > > >> literals in
> > > > > > >> > > > their
> > > > > > >> > > > > > > > names,
> > > > > > >> > > > > > > > > > but
> > > > > > >> > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > doesn't
> > > > > > >> > > > > > > > > > > > > > > > > demonstrate a way to actually
> > use
> > > > the
> > > > > > Cast
> > > > > > >> > (or
> > > > > > >> > > > any
> > > > > > >> > > > > > > other)
> > > > > > >> > > > > > > > > SMT
> > > > > > >> > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > access a
> > > > > > >> > > > > > > > > > > > > > > > > nested field in a record,
> which
> > is
> > > > the
> > > > > > >> whole
> > > > > > >> > > > point
> > > > > > >> > > > > of
> > > > > > >> > > > > > > the
> > > > > > >> > > > > > > > > > KIP.
> > > > > > >> > > > > > > > > > > I
> > > > > > >> > > > > > > > > > > > > like
> > > > > > >> > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > example of escape syntax but
> we
> > > > should
> > > > > > >> > probably
> > > > > > >> > > > > also
> > > > > > >> > > > > > > add
> > > > > > >> > > > > > > > > one
> > > > > > >> > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > > > field access.
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > Agree. I have added examples to
> > each
> > > > SMT
> > > > > > to
> > > > > > >> be
> > > > > > >> > > more
> > > > > > >> > > > > > clear
> > > > > > >> > > > > > > > > about
> > > > > > >> > > > > > > > > > > how
> > > > > > >> > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > > affects each function
> > > > > > >> > > > > > > > > > > > > > > > .
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > 3. With the InsertField SMT,
> I'm
> > > > > > wondering
> > > > > > >> > what
> > > > > > >> > > > the
> > > > > > >> > > > > > > > > specific
> > > > > > >> > > > > > > > > > > > > behavior
> > > > > > >> > > > > > > > > > > > > > > > will
> > > > > > >> > > > > > > > > > > > > > > > > be when some or all of the
> > "middle
> > > > > > layer"
> > > > > > >> > > nested
> > > > > > >> > > > > > fields
> > > > > > >> > > > > > > > are
> > > > > > >> > > > > > > > > > > > > missing.
> > > > > > >> > > > > > > > > > > > > > > For
> > > > > > >> > > > > > > > > > > > > > > > > example, if I have a record
> > with a
> > > > > value
> > > > > > >> of {
> > > > > > >> > > > "k1":
> > > > > > >> > > > > > > "v1 }
> > > > > > >> > > > > > > > > > and I
> > > > > > >> > > > > > > > > > > > > apply
> > > > > > >> > > > > > > > > > > > > > > > > InsertField with topic.field =
> > > > > > >> > n1.n2.n3.topic,
> > > > > > >> > > > what
> > > > > > >> > > > > > > will
> > > > > > >> > > > > > > > > > > happen?
> > > > > > >> > > > > > > > > > > > > Will
> > > > > > >> > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > updated value become { "k1":
> > "v1",
> > > > > > "n1": {
> > > > > > >> > > "n2":
> > > > > > >> > > > {
> > > > > > >> > > > > > > "n3":
> > > > > > >> > > > > > > > > > > "topic"
> > > > > > >> > > > > > > > > > > > > }}},
> > > > > > >> > > > > > > > > > > > > > > > will
> > > > > > >> > > > > > > > > > > > > > > > > an exception be thrown, or
> > > something
> > > > > > else?
> > > > > > >> > This
> > > > > > >> > > > > seems
> > > > > > >> > > > > > > > > > analogous
> > > > > > >> > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > command line mkdir command,
> > which
> > > > (at
> > > > > > >> least
> > > > > > >> > on
> > > > > > >> > > > some
> > > > > > >> > > > > > > > > operating
> > > > > > >> > > > > > > > > > > > > > systems)
> > > > > > >> > > > > > > > > > > > > > > > > fails by default if you try to
> > > > create
> > > > > a
> > > > > > >> new
> > > > > > >> > > > nested
> > > > > > >> > > > > > > > > directory
> > > > > > >> > > > > > > > > > > > where
> > > > > > >> > > > > > > > > > > > > > > > anything
> > > > > > >> > > > > > > > > > > > > > > > > but the last element in the
> path
> > > > > doesn't
> > > > > > >> > exist,
> > > > > > >> > > > but
> > > > > > >> > > > > > can
> > > > > > >> > > > > > > > be
> > > > > > >> > > > > > > > > > > > invoked
> > > > > > >> > > > > > > > > > > > > > > with a
> > > > > > >> > > > > > > > > > > > > > > > > flag that instructs it to go
> > ahead
> > > > and
> > > > > > >> create
> > > > > > >> > > all
> > > > > > >> > > > > > > levels
> > > > > > >> > > > > > > > of
> > > > > > >> > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > > > directory instead. I'm leaning
> > on
> > > > the
> > > > > > >> side of
> > > > > > >> > > > "just
> > > > > > >> > > > > > > > create
> > > > > > >> > > > > > > > > > > > > > everything"
> > > > > > >> > > > > > > > > > > > > > > > but
> > > > > > >> > > > > > > > > > > > > > > > > would be interested in your
> > > > thoughts,
> > > > > > and
> > > > > > >> > > either
> > > > > > >> > > > > way,
> > > > > > >> > > > > > > we
> > > > > > >> > > > > > > > > > should
> > > > > > >> > > > > > > > > > > > > > > probably
> > > > > > >> > > > > > > > > > > > > > > > > make sure the intended
> behavior
> > is
> > > > > > >> > well-defined
> > > > > > >> > > > > > before
> > > > > > >> > > > > > > > > > voting.
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > This is an interesting case,
> > thanks
> > > > for
> > > > > > >> > catching
> > > > > > >> > > > > this!
> > > > > > >> > > > > > > > > > > > > > > > The default behavior I see is to
> > > > create
> > > > > > >> parents
> > > > > > >> > > if
> > > > > > >> > > > > they
> > > > > > >> > > > > > > are
> > > > > > >> > > > > > > > > > > missing
> > > > > > >> > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > overwrite fields
> > > > > > >> > > > > > > > > > > > > > > > if they already exist.
> > > > > > >> > > > > > > > > > > > > > > > I'm planning to include the
> > > following
> > > > > two
> > > > > > >> flags
> > > > > > >> > > if
> > > > > > >> > > > > > there
> > > > > > >> > > > > > > > is a
> > > > > > >> > > > > > > > > > > need
> > > > > > >> > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > overwrite this behavior:
> > > > > > >> > > > > > > > > > > > > > > > - `on_missing_parent` =
> > > > (CREATE|IGNORE),
> > > > > > >> > > > > default=CREATE
> > > > > > >> > > > > > > > > > > > > > > > - `on_existing_field` =
> > > > > > (OVERWRITE|IGNORE),
> > > > > > >> > > > > > > > default=OVERWRITE
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > 4. Similarly, what will the
> > > behavior
> > > > > be
> > > > > > if
> > > > > > >> > any
> > > > > > >> > > of
> > > > > > >> > > > > the
> > > > > > >> > > > > > > > field
> > > > > > >> > > > > > > > > > > > > elements
> > > > > > >> > > > > > > > > > > > > > > > > specified with InsertField
> > already
> > > > > exist
> > > > > > >> in
> > > > > > >> > the
> > > > > > >> > > > > > record
> > > > > > >> > > > > > > > > value?
> > > > > > >> > > > > > > > > > > > Will
> > > > > > >> > > > > > > > > > > > > we
> > > > > > >> > > > > > > > > > > > > > > > just
> > > > > > >> > > > > > > > > > > > > > > > > overwrite them? What's the
> > > behavior
> > > > of
> > > > > > >> > > > InsertField
> > > > > > >> > > > > > > today
> > > > > > >> > > > > > > > > > under
> > > > > > >> > > > > > > > > > > > > > similar
> > > > > > >> > > > > > > > > > > > > > > > > circumstances?
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > The current behavior is to
> > overwrite
> > > > the
> > > > > > >> value.
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > On Thu, Mar 31, 2022 at 4:15
> PM
> > > > Jorge
> > > > > > >> Esteban
> > > > > > >> > > > > > Quilcate
> > > > > > >> > > > > > > > > Otoya
> > > > > > >> > > > > > > > > > <
> > > > > > >> > > > > > > > > > > > > > > > > quilcate.jo...@gmail.com>
> > wrote:
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > Thanks, Chris! Much
> > appreciated
> > > > all
> > > > > > the
> > > > > > >> > > > feedback
> > > > > > >> > > > > > > here.
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > 1. You nailed it setting the
> > > > design
> > > > > > goal
> > > > > > >> > > here:
> > > > > > >> > > > > "it
> > > > > > >> > > > > > > > > > shouldn't
> > > > > > >> > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > impossible
> > > > > > >> > > > > > > > > > > > > > > > > > to use this new feature for
> > any
> > > > > field
> > > > > > >> name,
> > > > > > >> > > no
> > > > > > >> > > > > > matter
> > > > > > >> > > > > > > > how
> > > > > > >> > > > > > > > > > > > > > convoluted.
> > > > > > >> > > > > > > > > > > > > > > > > It's
> > > > > > >> > > > > > > > > > > > > > > > > > fine if edge cases introduce
> > > > > > difficulty
> > > > > > >> > (such
> > > > > > >> > > > as
> > > > > > >> > > > > > > > > > > less-readable
> > > > > > >> > > > > > > > > > > > > > > > > > configurations), but it's
> not
> > > fine
> > > > > if
> > > > > > >> they
> > > > > > >> > > > can't
> > > > > > >> > > > > be
> > > > > > >> > > > > > > > > > addressed
> > > > > > >> > > > > > > > > > > > at
> > > > > > >> > > > > > > > > > > > > > > all."
> > > > > > >> > > > > > > > > > > > > > > > > > Back to the previous
> proposals
> > > > > (using
> > > > > > >> only
> > > > > > >> > > dots
> > > > > > >> > > > > as
> > > > > > >> > > > > > > > > > > separators)
> > > > > > >> > > > > > > > > > > > we
> > > > > > >> > > > > > > > > > > > > > > have
> > > > > > >> > > > > > > > > > > > > > > > 2
> > > > > > >> > > > > > > > > > > > > > > > > > alternatives:
> > > > > > >> > > > > > > > > > > > > > > > > > 1. escaping with backslashes
> > > > > > >> > > > > > > > > > > > > > > > > > 2. escaping with dots itself
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > I'll lean for alternative 2,
> > as
> > > > you
> > > > > > >> > proposed
> > > > > > >> > > > > > before.
> > > > > > >> > > > > > > > > Feels
> > > > > > >> > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > me
> > > > > > >> > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > backslashes have more
> > potential
> > > to
> > > > > > lead
> > > > > > >> to
> > > > > > >> > > > > > confusion
> > > > > > >> > > > > > > in
> > > > > > >> > > > > > > > > > JSON
> > > > > > >> > > > > > > > > > > > > > configs,
> > > > > > >> > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > CSV seems like a good
> > precedent
> > > to
> > > > > use
> > > > > > >> the
> > > > > > >> > > same
> > > > > > >> > > > > > > > character
> > > > > > >> > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > escape
> > > > > > >> > > > > > > > > > > > > > > > > itself.
> > > > > > >> > > > > > > > > > > > > > > > > > KIP is updated to reflect
> > this.
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > 2. Thanks! I'll add an
> > example,
> > > > and
> > > > > > >> stick
> > > > > > >> > > with
> > > > > > >> > > > > the
> > > > > > >> > > > > > > > > current
> > > > > > >> > > > > > > > > > > > > approach
> > > > > > >> > > > > > > > > > > > > > > > > > defining the style per
> > > individual
> > > > > > >> transform
> > > > > > >> > > > > > > > > configuration.
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > 3. Yes, thanks! KIP updated.
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > 4. Of course. KIP updated.
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > On Mon, 28 Mar 2022 at
> 21:59,
> > > > Chris
> > > > > > >> > Egerton <
> > > > > > >> > > > > > > > > > > > > > fearthecel...@gmail.com
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > Thanks for addressing my
> > > > comments;
> > > > > > the
> > > > > > >> > KIP
> > > > > > >> > > > > looks
> > > > > > >> > > > > > > > > > up-to-date
> > > > > > >> > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > pretty
> > > > > > >> > > > > > > > > > > > > > > > > > > readable now, and the
> > rejected
> > > > > > >> > alternatives
> > > > > > >> > > > > > section
> > > > > > >> > > > > > > > > does
> > > > > > >> > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > great
> > > > > > >> > > > > > > > > > > > > > > job
> > > > > > >> > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > outlining the discussion
> so
> > > far
> > > > > and
> > > > > > >> > > providing
> > > > > > >> > > > > > > context
> > > > > > >> > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > anyone
> > > > > > >> > > > > > > > > > > > > > > else
> > > > > > >> > > > > > > > > > > > > > > > > who
> > > > > > >> > > > > > > > > > > > > > > > > > > might want to join in.
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > 1. Thoughts on choice of
> > > > > delimiter:
> > > > > > >> > > > > > > > > > > > > > > > > > > - I like the optimization
> > for
> > > > > simple
> > > > > > >> > cases,
> > > > > > >> > > > > but I
> > > > > > >> > > > > > > > think
> > > > > > >> > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > new
> > > > > > >> > > > > > > > > > > > > > > > > proposal
> > > > > > >> > > > > > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > > > a little too restrictive.
> > What
> > > > if
> > > > > > >> > there's a
> > > > > > >> > > > > field
> > > > > > >> > > > > > > > whose
> > > > > > >> > > > > > > > > > > name
> > > > > > >> > > > > > > > > > > > > > > contains
> > > > > > >> > > > > > > > > > > > > > > > > all
> > > > > > >> > > > > > > > > > > > > > > > > > > of the permitted options
> > > > > (currently
> > > > > > >> just
> > > > > > >> > > ".",
> > > > > > >> > > > > > ",",
> > > > > > >> > > > > > > > and
> > > > > > >> > > > > > > > > > > "/")?
> > > > > > >> > > > > > > > > > > > > > > > > > > - If we expand the set of
> > > > > permitted
> > > > > > >> > > > delimiters
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > allow
> > > > > > >> > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > any
> > > > > > >> > > > > > > > > > > > > > > > > > > single-character string,
> > > > > > configuration
> > > > > > >> > > > > complexity
> > > > > > >> > > > > > > > will
> > > > > > >> > > > > > > > > > > > increase
> > > > > > >> > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > readability may decrease
> > > > > > >> > > > > > > > > > > > > > > > > > > - Also worth pointing out
> > that
> > > > > there
> > > > > > >> is
> > > > > > >> > > some
> > > > > > >> > > > > > > > convention
> > > > > > >> > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > doubling
> > > > > > >> > > > > > > > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > > > > > > delimiter character as an
> > > escape
> > > > > > >> > mechanism
> > > > > > >> > > > with
> > > > > > >> > > > > > > > formats
> > > > > > >> > > > > > > > > > > like
> > > > > > >> > > > > > > > > > > > > CSV
> > > > > > >> > > > > > > > > > > > > > > [1]
> > > > > > >> > > > > > > > > > > > > > > > > > > - Overall I think we may
> be
> > > > > > >> approaching
> > > > > > >> > the
> > > > > > >> > > > > > > > saturation
> > > > > > >> > > > > > > > > > > point
> > > > > > >> > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > productive
> > > > > > >> > > > > > > > > > > > > > > > > > > discussion on delimiter
> > syntax
> > > > so
> > > > > I
> > > > > > >> don't
> > > > > > >> > > > want
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > spend
> > > > > > >> > > > > > > > > > too
> > > > > > >> > > > > > > > > > > > > much
> > > > > > >> > > > > > > > > > > > > > > more
> > > > > > >> > > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > your time on it. I think
> the
> > > one
> > > > > > point
> > > > > > >> > I'd
> > > > > > >> > > > like
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > > leave
> > > > > > >> > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > now
> > > > > > >> > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > > > > > shouldn't be impossible to
> > use
> > > > > this
> > > > > > >> new
> > > > > > >> > > > feature
> > > > > > >> > > > > > for
> > > > > > >> > > > > > > > any
> > > > > > >> > > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > > name,
> > > > > > >> > > > > > > > > > > > > > > > no
> > > > > > >> > > > > > > > > > > > > > > > > > > matter how convoluted.
> It's
> > > fine
> > > > > if
> > > > > > >> edge
> > > > > > >> > > > cases
> > > > > > >> > > > > > > > > introduce
> > > > > > >> > > > > > > > > > > > > > difficulty
> > > > > > >> > > > > > > > > > > > > > > > > (such
> > > > > > >> > > > > > > > > > > > > > > > > > > as less-readable
> > > > configurations),
> > > > > > but
> > > > > > >> > it's
> > > > > > >> > > > not
> > > > > > >> > > > > > fine
> > > > > > >> > > > > > > > if
> > > > > > >> > > > > > > > > > they
> > > > > > >> > > > > > > > > > > > > can't
> > > > > > >> > > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > > > addressed at all.
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > 2.
> > > > > > >> > > > > > > > > > > > > > > > > > > The configuration style
> > where
> > > > you
> > > > > > >> define
> > > > > > >> > > > > > > > > > > > > "transforms.field.style"
> > > > > > >> > > > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > connector config, and then
> > > this
> > > > > > >> applies
> > > > > > >> > to
> > > > > > >> > > > all
> > > > > > >> > > > > > SMTs
> > > > > > >> > > > > > > > for
> > > > > > >> > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > connector,
> > > > > > >> > > > > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > > > very interesting. However,
> > it
> > > > > > doesn't
> > > > > > >> > > follow
> > > > > > >> > > > > > > > convention
> > > > > > >> > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > existing
> > > > > > >> > > > > > > > > > > > > > > > > > SMTs.
> > > > > > >> > > > > > > > > > > > > > > > > > > Right now, if you want to
> > > > > configure
> > > > > > an
> > > > > > >> > SMT,
> > > > > > >> > > > you
> > > > > > >> > > > > > > > define
> > > > > > >> > > > > > > > > > its
> > > > > > >> > > > > > > > > > > > name
> > > > > > >> > > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > connector config (for
> > example,
> > > > > > >> > > "transforms":
> > > > > > >> > > > > > > "smt1"),
> > > > > > >> > > > > > > > > and
> > > > > > >> > > > > > > > > > > > then
> > > > > > >> > > > > > > > > > > > > > > define
> > > > > > >> > > > > > > > > > > > > > > > > all
> > > > > > >> > > > > > > > > > > > > > > > > > > of the properties for that
> > SMT
> > > > in
> > > > > > the
> > > > > > >> > > > connector
> > > > > > >> > > > > > > > config
> > > > > > >> > > > > > > > > > > using
> > > > > > >> > > > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > > > > > namespacing
> > > > > > >> > > > > > > > > > > > > > > > > > > mechanism specific to that
> > SMT
> > > > > (for
> > > > > > >> > > example,
> > > > > > >> > > > > > > > > > > > > > > "transforms.smt1.prop1":
> > > > > > >> > > > > > > > > > > > > > > > > > > "val1"). That SMT then
> sees
> > > only
> > > > > the
> > > > > > >> > > > properties
> > > > > > >> > > > > > > > defined
> > > > > > >> > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > namespace,
> > > > > > >> > > > > > > > > > > > > > > > > > > with the prefix stripped
> > (for
> > > > > > example,
> > > > > > >> > > > "prop1":
> > > > > > >> > > > > > > > "val1")
> > > > > > >> > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > its
> > > > > > >> > > > > > > > > > > > > > > > > configure
> > > > > > >> > > > > > > > > > > > > > > > > > > [2] [3] method.
> > > > > > >> > > > > > > > > > > > > > > > > > > If we want to continue to
> > > follow
> > > > > > this
> > > > > > >> > > > > convention,
> > > > > > >> > > > > > > > then
> > > > > > >> > > > > > > > > > > > instead
> > > > > > >> > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > specifying
> > > > > "transforms.field.style"
> > > > > > >> in a
> > > > > > >> > > > > > connector
> > > > > > >> > > > > > > > > > config,
> > > > > > >> > > > > > > > > > > we
> > > > > > >> > > > > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > > > > > > expect
> > > > > > >> > > > > > > > > > > > > > > > > > > users to configure
> > > > > > >> > > > > > "transforms.<name>.field.style",
> > > > > > >> > > > > > > > for
> > > > > > >> > > > > > > > > > > each
> > > > > > >> > > > > > > > > > > > > SMT
> > > > > > >> > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > they
> > > > > > >> > > > > > > > > > > > > > > > > > > want to configure a field
> > > style
> > > > > for.
> > > > > > >> This
> > > > > > >> > > > would
> > > > > > >> > > > > > > > require
> > > > > > >> > > > > > > > > > > more
> > > > > > >> > > > > > > > > > > > > work
> > > > > > >> > > > > > > > > > > > > > > on
> > > > > > >> > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > part of the user, but
> would
> > be
> > > > > > >> simpler to
> > > > > > >> > > > > reason
> > > > > > >> > > > > > > > about
> > > > > > >> > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > easier
> > > > > > >> > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > implement.
> > > > > > >> > > > > > > > > > > > > > > > > > > If we want to explore an
> > > > > alternative
> > > > > > >> > where
> > > > > > >> > > > > users
> > > > > > >> > > > > > > can
> > > > > > >> > > > > > > > > > > specify
> > > > > > >> > > > > > > > > > > > > > global
> > > > > > >> > > > > > > > > > > > > > > > > > > properties that apply to
> all
> > > > > > >> transforms
> > > > > > >> > in
> > > > > > >> > > a
> > > > > > >> > > > > > > > connector
> > > > > > >> > > > > > > > > > > > config,
> > > > > > >> > > > > > > > > > > > > > then
> > > > > > >> > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > semantics for this need to
> > be
> > > > > > defined
> > > > > > >> in
> > > > > > >> > > the
> > > > > > >> > > > > KIP.
> > > > > > >> > > > > > > > This
> > > > > > >> > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > have
> > > > > > >> > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > include whether this will
> > > apply
> > > > > only
> > > > > > >> for
> > > > > > >> > > the
> > > > > > >> > > > > > > special
> > > > > > >> > > > > > > > > case
> > > > > > >> > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > "field.style" and possibly
> > > > > > >> > > "field.separator"
> > > > > > >> > > > > > > > properties
> > > > > > >> > > > > > > > > > or
> > > > > > >> > > > > > > > > > > if
> > > > > > >> > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > > > available more generally
> for
> > > > other
> > > > > > >> > > > properties,
> > > > > > >> > > > > > > > whether
> > > > > > >> > > > > > > > > it
> > > > > > >> > > > > > > > > > > > will
> > > > > > >> > > > > > > > > > > > > > > apply
> > > > > > >> > > > > > > > > > > > > > > > > only
> > > > > > >> > > > > > > > > > > > > > > > > > > for the SMTs outlined in
> the
> > > KIP
> > > > > or
> > > > > > if
> > > > > > >> > the
> > > > > > >> > > > > > > > > "field.style"
> > > > > > >> > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > possibly
> > > > > > >> > > > > > > > > > > > > > > > > > > "field.separator"
> properties
> > > > would
> > > > > > >> also
> > > > > > >> > be
> > > > > > >> > > > > passed
> > > > > > >> > > > > > > > into
> > > > > > >> > > > > > > > > > > custom
> > > > > > >> > > > > > > > > > > > > > SMTs
> > > > > > >> > > > > > > > > > > > > > > so
> > > > > > >> > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > they could choose to act
> on
> > > them
> > > > > if
> > > > > > >> > > > applicable,
> > > > > > >> > > > > > how
> > > > > > >> > > > > > > > > edge
> > > > > > >> > > > > > > > > > > > cases
> > > > > > >> > > > > > > > > > > > > > like
> > > > > > >> > > > > > > > > > > > > > > > > > having
> > > > > > >> > > > > > > > > > > > > > > > > > > an SMT named "field" in
> your
> > > > > > connector
> > > > > > >> > > config
> > > > > > >> > > > > > would
> > > > > > >> > > > > > > > be
> > > > > > >> > > > > > > > > > > > handled,
> > > > > > >> > > > > > > > > > > > > > > etc.
> > > > > > >> > > > > > > > > > > > > > > > > > > Either way, it might help
> to
> > > > have
> > > > > an
> > > > > > >> > > example
> > > > > > >> > > > in
> > > > > > >> > > > > > the
> > > > > > >> > > > > > > > KIP
> > > > > > >> > > > > > > > > > > > > outlining
> > > > > > >> > > > > > > > > > > > > > > how
> > > > > > >> > > > > > > > > > > > > > > > > one
> > > > > > >> > > > > > > > > > > > > > > > > > > of the to-be-augmented
> SMTs
> > > can
> > > > be
> > > > > > >> > > configured
> > > > > > >> > > > > > with
> > > > > > >> > > > > > > > this
> > > > > > >> > > > > > > > > > new
> > > > > > >> > > > > > > > > > > > > > feature
> > > > > > >> > > > > > > > > > > > > > > > > and a
> > > > > > >> > > > > > > > > > > > > > > > > > > before/after of how a
> record
> > > > value
> > > > > > >> would
> > > > > > >> > be
> > > > > > >> > > > > > > > transformed
> > > > > > >> > > > > > > > > > > with
> > > > > > >> > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > configuration.
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > 3. The docstring for the
> > > > > > >> > > > > "transforms.field.style"
> > > > > > >> > > > > > > > > > property
> > > > > > >> > > > > > > > > > > > > > mentions
> > > > > > >> > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > the permitted values are
> > > "plain"
> > > > > and
> > > > > > >> > > > "nested",
> > > > > > >> > > > > > but
> > > > > > >> > > > > > > > then
> > > > > > >> > > > > > > > > > > > > describes
> > > > > > >> > > > > > > > > > > > > > > > > > behavior
> > > > > > >> > > > > > > > > > > > > > > > > > > with a value of "root".
> > Should
> > > > > that
> > > > > > be
> > > > > > >> > > > "plain"
> > > > > > >> > > > > > > > instead?
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > 4. The docstring for the
> > > > > > >> > > > > > > "transforms.field.separator"
> > > > > > >> > > > > > > > > > > > property
> > > > > > >> > > > > > > > > > > > > > > > > > exclusively
> > > > > > >> > > > > > > > > > > > > > > > > > > mentions structs, but the
> > > > feature
> > > > > is
> > > > > > >> > > intended
> > > > > > >> > > > > to
> > > > > > >> > > > > > > work
> > > > > > >> > > > > > > > > > with
> > > > > > >> > > > > > > > > > > > maps
> > > > > > >> > > > > > > > > > > > > > as
> > > > > > >> > > > > > > > > > > > > > > > > well.
> > > > > > >> > > > > > > > > > > > > > > > > > > Can we update it to
> reflect
> > > > this?
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > References:
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > [1] -
> > > > > > >> > https://stackoverflow.com/a/17808731
> > > > > > >> > > > > > > > > > > > > > > > > > > [2] -
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/7243facb8d69a7252e6b9556b5eaee13e41bab7f/connect/api/src/main/java/org/apache/kafka/connect/transforms/Transformation.java#L30
> > > > > > >> > > > > > > > > > > > > > > > > > > [3] -
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/7243facb8d69a7252e6b9556b5eaee13e41bab7f/clients/src/main/java/org/apache/kafka/common/Configurable.java#L26-L29
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > On Mon, Mar 28, 2022 at
> 1:32
> > > PM
> > > > > > Jorge
> > > > > > >> > > Esteban
> > > > > > >> > > > > > > > Quilcate
> > > > > > >> > > > > > > > > > > Otoya
> > > > > > >> > > > > > > > > > > > <
> > > > > > >> > > > > > > > > > > > > > > > > > > quilcate.jo...@gmail.com>
> > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > Thanks, Chris!
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > 1. I'd argue
> > > > "this..field.child"
> > > > > > >> could
> > > > > > >> > be
> > > > > > >> > > > > > harder
> > > > > > >> > > > > > > to
> > > > > > >> > > > > > > > > > grasp
> > > > > > >> > > > > > > > > > > > > than
> > > > > > >> > > > > > > > > > > > > > > > > > > > "this.field/child" +
> > > > separator:
> > > > > > "/".
> > > > > > >> > > > > > > > > > > > > > > > > > > > Even though this
> > represents
> > > > > > >> additional
> > > > > > >> > > > > > > information,
> > > > > > >> > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > follows
> > > > > > >> > > > > > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > > > > > similar
> > > > > > >> > > > > > > > > > > > > > > > > > > > approach as the
> > > > > > "Flatten#delimeter"
> > > > > > >> > > > > > > configuration.
> > > > > > >> > > > > > > > > > > > > > > > > > > > I want to give the
> > separator
> > > > > > >> approach
> > > > > > >> > > > another
> > > > > > >> > > > > > > try,
> > > > > > >> > > > > > > > > so I
> > > > > > >> > > > > > > > > > > > have
> > > > > > >> > > > > > > > > > > > > > > > updated
> > > > > > >> > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > KIP with the separator
> > > > proposal,
> > > > > > >> > sticking
> > > > > > >> > > > to
> > > > > > >> > > > > > > only 2
> > > > > > >> > > > > > > > > > > > > > alternatives
> > > > > > >> > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > should hopefully cover
> > most
> > > > > > >> scenarios.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > 2. Agree. KIP has been
> > > updated
> > > > > > with
> > > > > > >> > this
> > > > > > >> > > > > > > > improvement.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > 3. You're right. I have
> > > > updated
> > > > > > this
> > > > > > >> > > > section
> > > > > > >> > > > > > > > > > accordingly.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > 4. Good catch! I've
> > replaced
> > > > it
> > > > > > with
> > > > > > >> > > > > > > `DropHeaders`.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > Looking forward to your
> > > > > feedback.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > Thanks,
> > > > > > >> > > > > > > > > > > > > > > > > > > > Jorge.
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > On Wed, 9 Mar 2022 at
> > 21:33,
> > > > > Chris
> > > > > > >> > > Egerton
> > > > > > >> > > > <
> > > > > > >> > > > > > > > > > > > > > > > fearthecel...@gmail.com>
> > > > > > >> > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > Looking good! Got a
> few
> > > more
> > > > > > >> > thoughts.
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > 1. Sorry to revisit
> > this,
> > > > but
> > > > > I
> > > > > > >> think
> > > > > > >> > > we
> > > > > > >> > > > > may
> > > > > > >> > > > > > > want
> > > > > > >> > > > > > > > > to
> > > > > > >> > > > > > > > > > > > adopt
> > > > > > >> > > > > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > > > > slightly
> > > > > > >> > > > > > > > > > > > > > > > > > > > > different escape
> syntax
> > > > style.
> > > > > > >> > > > Backslashes
> > > > > > >> > > > > > are
> > > > > > >> > > > > > > > > great,
> > > > > > >> > > > > > > > > > > but
> > > > > > >> > > > > > > > > > > > > > since
> > > > > > >> > > > > > > > > > > > > > > > > > they're
> > > > > > >> > > > > > > > > > > > > > > > > > > > > already used by JSON,
> > > using
> > > > > them
> > > > > > >> as
> > > > > > >> > an
> > > > > > >> > > > > escape
> > > > > > >> > > > > > > > > > sequence
> > > > > > >> > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > > > > > > > notation
> > > > > > >> > > > > > > > > > > > > > > > > > > > > would also lead to
> some
> > > > pretty
> > > > > > >> ugly
> > > > > > >> > > > > connector
> > > > > > >> > > > > > > > > > configs.
> > > > > > >> > > > > > > > > > > > > Anyone
> > > > > > >> > > > > > > > > > > > > > > > who's
> > > > > > >> > > > > > > > > > > > > > > > > > had
> > > > > > >> > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > write regular
> > expressions
> > > > with
> > > > > > >> > > > backslashes
> > > > > > >> > > > > in
> > > > > > >> > > > > > > > Java
> > > > > > >> > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > probably
> > > > > > >> > > > > > > > > > > > > > > > > > already
> > > > > > >> > > > > > > > > > > > > > > > > > > > > familiar with this:
> > > > > > >> > > > > > > > > > > > > > >
> > > > > "this\\\\.is\\\\.not\\\\.very\\\\.readable".
> > > > > > >> > > > > > > > > > > > > > > > > What
> > > > > > >> > > > > > > > > > > > > > > > > > > do
> > > > > > >> > > > > > > > > > > > > > > > > > > > > you think about using
> > the
> > > > dot
> > > > > > >> > character
> > > > > > >> > > > to
> > > > > > >> > > > > > > escape
> > > > > > >> > > > > > > > > > > itself?
> > > > > > >> > > > > > > > > > > > > In
> > > > > > >> > > > > > > > > > > > > > > > other
> > > > > > >> > > > > > > > > > > > > > > > > > > words,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > to access a single
> field
> > > > named
> > > > > > >> > > > > "this.field",
> > > > > > >> > > > > > > > > instead
> > > > > > >> > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > using
> > > > > > >> > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > syntax
> > > > > > >> > > > > > > > > > > > > > > > > > > > > "this\.field" (which
> in
> > > JSON
> > > > > > would
> > > > > > >> > have
> > > > > > >> > > > to
> > > > > > >> > > > > be
> > > > > > >> > > > > > > > > > expressed
> > > > > > >> > > > > > > > > > > > as
> > > > > > >> > > > > > > > > > > > > > > > > > > > "this\\.field"),
> > > > > > >> > > > > > > > > > > > > > > > > > > > > we could use
> > > "this..field",
> > > > > and
> > > > > > >> for a
> > > > > > >> > > > > single
> > > > > > >> > > > > > > > field
> > > > > > >> > > > > > > > > > > named
> > > > > > >> > > > > > > > > > > > > > > > > > "this\field",
> > > > > > >> > > > > > > > > > > > > > > > > > > > > instead of using the
> > > syntax
> > > > > > >> > > "this\\field"
> > > > > > >> > > > > > (or,
> > > > > > >> > > > > > > in
> > > > > > >> > > > > > > > > > JSON,
> > > > > > >> > > > > > > > > > > > > > > > > > > "this\\\\field"),
> > > > > > >> > > > > > > > > > > > > > > > > > > > > we could use
> > "this\field"
> > > > (or,
> > > > > > in
> > > > > > >> > JSON,
> > > > > > >> > > > > > > > > > "this\\field").
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > 2. Could you flesh out
> > the
> > > > > > >> details on
> > > > > > >> > > the
> > > > > > >> > > > > new
> > > > > > >> > > > > > > > > > > > "field.style"
> > > > > > >> > > > > > > > > > > > > > > > > property,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > including the type,
> > > default
> > > > > > value,
> > > > > > >> > > > > > importance,
> > > > > > >> > > > > > > > and
> > > > > > >> > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > > preliminary
> > > > > > >> > > > > > > > > > > > > > > > > > > > docstring?
> > > > > > >> > > > > > > > > > > > > > > > > > > > > See
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-618%3A+Exactly-Once+Support+for+Source+Connectors#KIP618:ExactlyOnceSupportforSourceConnectors-Newproperties
> > > > > > >> > > > > > > > > > > > > > > > > > > > > for an example.
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > 3. Is the
> > "Compatibility,
> > > > > > >> > Deprecation,
> > > > > > >> > > > and
> > > > > > >> > > > > > > > > Migration
> > > > > > >> > > > > > > > > > > > Plan"
> > > > > > >> > > > > > > > > > > > > > > > section
> > > > > > >> > > > > > > > > > > > > > > > > > > still
> > > > > > >> > > > > > > > > > > > > > > > > > > > > accurate after the
> > latest
> > > > > > update?
> > > > > > >> > Seems
> > > > > > >> > > > > like
> > > > > > >> > > > > > > it's
> > > > > > >> > > > > > > > > > still
> > > > > > >> > > > > > > > > > > > > > written
> > > > > > >> > > > > > > > > > > > > > > > > with
> > > > > > >> > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > assumption that nested
> > > field
> > > > > > >> syntax
> > > > > > >> > > will
> > > > > > >> > > > be
> > > > > > >> > > > > > > > > hardcoded
> > > > > > >> > > > > > > > > > > or
> > > > > > >> > > > > > > > > > > > > > > opt-in,
> > > > > > >> > > > > > > > > > > > > > > > > > which
> > > > > > >> > > > > > > > > > > > > > > > > > > > IIUC
> > > > > > >> > > > > > > > > > > > > > > > > > > > > isn't the case
> anymore.
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > 4. Nit: The "These
> SMTs
> > do
> > > > not
> > > > > > >> > require
> > > > > > >> > > > > nested
> > > > > > >> > > > > > > > > > structure
> > > > > > >> > > > > > > > > > > > > > > support"
> > > > > > >> > > > > > > > > > > > > > > > > > > section
> > > > > > >> > > > > > > > > > > > > > > > > > > > > mentions a "Drop"
> SMT. I
> > > > think
> > > > > > >> this
> > > > > > >> > may
> > > > > > >> > > > be
> > > > > > >> > > > > > > > > referring
> > > > > > >> > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > Confluent
> > > > > > >> > > > > > > > > > > > > > > > > > > > Drop
> > > > > > >> > > > > > > > > > > > > > > > > > > > > SMT, which isn't a
> part
> > of
> > > > > > Apache
> > > > > > >> > > Kafka.
> > > > > > >> > > > > > Should
> > > > > > >> > > > > > > > we
> > > > > > >> > > > > > > > > > drop
> > > > > > >> > > > > > > > > > > > > (heh)
> > > > > > >> > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > SMT
> > > > > > >> > > > > > > > > > > > > > > > > > > > from
> > > > > > >> > > > > > > > > > > > > > > > > > > > > the list? Or perhaps
> > just
> > > > > > replace
> > > > > > >> it
> > > > > > >> > > with
> > > > > > >> > > > > > > > > > > "DropHeaders",
> > > > > > >> > > > > > > > > > > > > > which
> > > > > > >> > > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > > > > currently
> > > > > > >> > > > > > > > > > > > > > > > > > > > > missing from the list
> > and
> > > > > > >> shouldn't
> > > > > > >> > > > require
> > > > > > >> > > > > > any
> > > > > > >> > > > > > > > > > > > > nested-field
> > > > > > >> > > > > > > > > > > > > > > > > related
> > > > > > >> > > > > > > > > > > > > > > > > > > > > updates?
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > On Mon, Feb 28, 2022
> at
> > > 2:12
> > > > > PM
> > > > > > >> Jorge
> > > > > > >> > > > > Esteban
> > > > > > >> > > > > > > > > > Quilcate
> > > > > > >> > > > > > > > > > > > > Otoya
> > > > > > >> > > > > > > > > > > > > > <
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > quilcate.jo...@gmail.com>
> > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Thank you, Chris!
> and
> > > > sorry
> > > > > > for
> > > > > > >> the
> > > > > > >> > > > > delayed
> > > > > > >> > > > > > > > > > response.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Please, find my
> > comments
> > > > > > below:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > On Mon, 14 Feb 2022
> at
> > > > > 17:34,
> > > > > > >> Chris
> > > > > > >> > > > > Egerton
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > <chr...@confluent.io.invalid
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > wrote:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Hi Jorge,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Thanks for the
> KIP!
> > > I'd
> > > > > love
> > > > > > >> to
> > > > > > >> > see
> > > > > > >> > > > > > support
> > > > > > >> > > > > > > > for
> > > > > > >> > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > fields
> > > > > > >> > > > > > > > > > > > > > > > > > added
> > > > > > >> > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > out-of-the-box
> SMTs
> > > > > provided
> > > > > > >> with
> > > > > > >> > > > > > Connect.
> > > > > > >> > > > > > > > Here
> > > > > > >> > > > > > > > > > are
> > > > > > >> > > > > > > > > > > > my
> > > > > > >> > > > > > > > > > > > > > > > initial
> > > > > > >> > > > > > > > > > > > > > > > > > > > > thoughts:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 1. I agree that
> > > there's
> > > > a
> > > > > > >> case to
> > > > > > >> > > be
> > > > > > >> > > > > made
> > > > > > >> > > > > > > for
> > > > > > >> > > > > > > > > > > > expanding
> > > > > > >> > > > > > > > > > > > > > > > > > HoistField
> > > > > > >> > > > > > > > > > > > > > > > > > > > > with a
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > new config
> property
> > > for
> > > > > > >> > > identifying a
> > > > > > >> > > > > > > nested,
> > > > > > >> > > > > > > > > > > > > > to-be-hoisted
> > > > > > >> > > > > > > > > > > > > > > > > > field,
> > > > > > >> > > > > > > > > > > > > > > > > > > > but
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > example in the KIP
> > > > doesn't
> > > > > > >> really
> > > > > > >> > > > > > > demonstrate
> > > > > > >> > > > > > > > > why
> > > > > > >> > > > > > > > > > > > this
> > > > > > >> > > > > > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > valuable. I
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > think it'd be
> > helpful
> > > to
> > > > > > >> expand
> > > > > > >> > the
> > > > > > >> > > > > > example
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > add
> > > > > > >> > > > > > > > > > > > > other
> > > > > > >> > > > > > > > > > > > > > > > fields
> > > > > > >> > > > > > > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > > > > > > > order
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > show how adding
> > nested
> > > > > field
> > > > > > >> > > support
> > > > > > >> > > > > > > enables
> > > > > > >> > > > > > > > > > users
> > > > > > >> > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > hoist a
> > > > > > >> > > > > > > > > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > without dropping
> > other
> > > > > > fields
> > > > > > >> > from
> > > > > > >> > > > the
> > > > > > >> > > > > > > value.
> > > > > > >> > > > > > > > > > Maybe
> > > > > > >> > > > > > > > > > > > > > > something
> > > > > > >> > > > > > > > > > > > > > > > > > like
> > > > > > >> > > > > > > > > > > > > > > > > > > > > this:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >     source =
> > > nested.val
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >     field = line
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >     value
> (before):
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >         {
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> >  "nested":
> > > {
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> >  "val":
> > > > 42,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> >  "other
> > > > > val":
> > > > > > >> 96
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >             }
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >         }
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >     value (after):
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >         {
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> >  "nested":
> > > {
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > >  "line":
> > > > {
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > >  "val":
> > > > > > 42,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >                 }
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> >  "other
> > > > > val":
> > > > > > >> 96
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >             }
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >         }
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 2. Nit: I think
> > > "source"
> > > > > is
> > > > > > a
> > > > > > >> > > little
> > > > > > >> > > > > > > strange
> > > > > > >> > > > > > > > > for
> > > > > > >> > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > new
> > > > > > >> > > > > > > > > > > > > > > > > > HoistField
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > property name.
> Maybe
> > > > > > >> "hoisted" or
> > > > > > >> > > > > > > > > "hoisted.field"
> > > > > > >> > > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > more
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > descriptive?
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > About 1. and 2.:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Agree. The example
> for
> > > > this
> > > > > > SMT
> > > > > > >> is
> > > > > > >> > > > > updated
> > > > > > >> > > > > > > and
> > > > > > >> > > > > > > > > have
> > > > > > >> > > > > > > > > > > > added
> > > > > > >> > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > `hoisted`
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > configuration.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 3. Is there a
> > > reasonable
> > > > > use
> > > > > > >> case
> > > > > > >> > > for
> > > > > > >> > > > > > > > expanding
> > > > > > >> > > > > > > > > > > > Flatten
> > > > > > >> > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > be
> > > > > > >> > > > > > > > > > > > > > > > > > able
> > > > > > >> > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > flatten specific
> > > fields?
> > > > > My
> > > > > > >> > > > > understanding
> > > > > > >> > > > > > > is
> > > > > > >> > > > > > > > > that
> > > > > > >> > > > > > > > > > > > it's
> > > > > > >> > > > > > > > > > > > > > > mostly
> > > > > > >> > > > > > > > > > > > > > > > > > > useful
> > > > > > >> > > > > > > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > writing to systems
> > > like
> > > > > > >> databases
> > > > > > >> > > > that
> > > > > > >> > > > > > > don't
> > > > > > >> > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > > > > values
> > > > > > >> > > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > require everything
> > to
> > > > be a
> > > > > > >> flat
> > > > > > >> > > list
> > > > > > >> > > > of
> > > > > > >> > > > > > > > > key-value
> > > > > > >> > > > > > > > > > > > > pairs.
> > > > > > >> > > > > > > > > > > > > > > > Being
> > > > > > >> > > > > > > > > > > > > > > > > > able
> > > > > > >> > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > flatten a nested
> > field
> > > > > > >> wouldn't
> > > > > > >> > > > provide
> > > > > > >> > > > > > any
> > > > > > >> > > > > > > > > > > advantage
> > > > > > >> > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > use
> > > > > > >> > > > > > > > > > > > > > > > > > > > > case.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Are there other
> > cases
> > > > > where
> > > > > > it
> > > > > > >> > > would?
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 4. I don't think
> we
> > > > should
> > > > > > >> > > > > > unconditionally
> > > > > > >> > > > > > > > > change
> > > > > > >> > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > default
> > > > > > >> > > > > > > > > > > > > > > > > > > > delimiter
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Flatten. It's a
> > > > > > >> > > > backwards-incompatible,
> > > > > > >> > > > > > > > > breaking
> > > > > > >> > > > > > > > > > > > change
> > > > > > >> > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > could
> > > > > > >> > > > > > > > > > > > > > > > > > > > > cause
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > headaches for
> users.
> > > It
> > > > > > might
> > > > > > >> be
> > > > > > >> > > > > > reasonable
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > > change
> > > > > > >> > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > default
> > > > > > >> > > > > > > > > > > > > > > > > > > > value
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > dynamically based
> on
> > > > > whether
> > > > > > >> the
> > > > > > >> > > user
> > > > > > >> > > > > has
> > > > > > >> > > > > > > > > > > specified a
> > > > > > >> > > > > > > > > > > > > > value
> > > > > > >> > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > "field"
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > property, but
> > > > considering
> > > > > > the
> > > > > > >> > > > > motivation
> > > > > > >> > > > > > > for
> > > > > > >> > > > > > > > > > > changing
> > > > > > >> > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > default
> > > > > > >> > > > > > > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > it creates
> conflicts
> > > > with
> > > > > > the
> > > > > > >> > > > > > > > to-be-introduced
> > > > > > >> > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > > > > > > syntax
> > > > > > >> > > > > > > > > > > > > > > > > > > > > (which
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > could arise with
> > > > > downstream
> > > > > > >> SMTs
> > > > > > >> > > > > > regardless
> > > > > > >> > > > > > > > of
> > > > > > >> > > > > > > > > > > > whether
> > > > > > >> > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > user
> > > > > > >> > > > > > > > > > > > > > > > > > has
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > explicitly
> > configured
> > > > > > Flatten
> > > > > > >> > with
> > > > > > >> > > > the
> > > > > > >> > > > > > > > "field"
> > > > > > >> > > > > > > > > > > > > > property), I
> > > > > > >> > > > > > > > > > > > > > > > > don't
> > > > > > >> > > > > > > > > > > > > > > > > > > > know
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > this would be too
> > > useful
> > > > > > >> either.
> > > > > > >> > I
> > > > > > >> > > > have
> > > > > > >> > > > > > > some
> > > > > > >> > > > > > > > > > > thoughts
> > > > > > >> > > > > > > > > > > > > > below
> > > > > > >> > > > > > > > > > > > > > > > on
> > > > > > >> > > > > > > > > > > > > > > > > > how
> > > > > > >> > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > handle possible
> > > > conflicts
> > > > > > >> between
> > > > > > >> > > > names
> > > > > > >> > > > > > > with
> > > > > > >> > > > > > > > > dots
> > > > > > >> > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > their
> > > > > > >> > > > > > > > > > > > > > > > > names
> > > > > > >> > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > dotted
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > syntax for nested
> > > field
> > > > > > >> > references
> > > > > > >> > > > that
> > > > > > >> > > > > > > > should
> > > > > > >> > > > > > > > > > > > > hopefully
> > > > > > >> > > > > > > > > > > > > > > make
> > > > > > >> > > > > > > > > > > > > > > > > > > either
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > change
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > unnecessary.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Fair enough. With
> the
> > > > > support
> > > > > > >> for
> > > > > > >> > > > nested
> > > > > > >> > > > > > > fields
> > > > > > >> > > > > > > > > in
> > > > > > >> > > > > > > > > > > > other
> > > > > > >> > > > > > > > > > > > > > > SMTs,
> > > > > > >> > > > > > > > > > > > > > > > > > > Flatten
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > could stay as it is.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > This removes the
> need
> > > for
> > > > > (4)
> > > > > > >> > > changing
> > > > > > >> > > > > > > Flatten
> > > > > > >> > > > > > > > > > config
> > > > > > >> > > > > > > > > > > > as
> > > > > > >> > > > > > > > > > > > > > > well.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 5. I think it's
> fine
> > > to
> > > > > > expand
> > > > > > >> > > > > > ExtractField
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > > > > > > notation,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > but
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > it might be worth
> > > noting
> > > > > in
> > > > > > >> the
> > > > > > >> > > > > rejected
> > > > > > >> > > > > > > > > > > alternatives
> > > > > > >> > > > > > > > > > > > > > > section
> > > > > > >> > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > this
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > isn't strictly
> > > necessary
> > > > > > since
> > > > > > >> > you
> > > > > > >> > > > can
> > > > > > >> > > > > > > > replace
> > > > > > >> > > > > > > > > > any
> > > > > > >> > > > > > > > > > > > > single
> > > > > > >> > > > > > > > > > > > > > > > > > > invocation
> > > > > > >> > > > > > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > that SMT that uses
> > > > nested
> > > > > > >> field
> > > > > > >> > > > > notation
> > > > > > >> > > > > > > with
> > > > > > >> > > > > > > > > > > > multiple
> > > > > > >> > > > > > > > > > > > > > > > > > invocations
> > > > > > >> > > > > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > that use
> non-nested
> > > > > > notation.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Agree. Adding it.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 6. Nit:
> > "RegerRouter"
> > > > > should
> > > > > > >> be
> > > > > > >> > > > > > > "RegexRouter"
> > > > > > >> > > > > > > > > in
> > > > > > >> > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > list
> > > > > > >> > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > SMTs
> > > > > > >> > > > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > > do
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > not require nested
> > > > > structure
> > > > > > >> > > support.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Ack. Fixing it.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 7. It may be rare
> > for
> > > > dots
> > > > > > in
> > > > > > >> > field
> > > > > > >> > > > > names
> > > > > > >> > > > > > > to
> > > > > > >> > > > > > > > > > occur
> > > > > > >> > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > wild
> > > > > > >> > > > > > > > > > > > > > > > > > > > > (although
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > I
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > wouldn't be so
> > certain
> > > > of
> > > > > > >> this),
> > > > > > >> > > but
> > > > > > >> > > > > > unless
> > > > > > >> > > > > > > > we
> > > > > > >> > > > > > > > > > want
> > > > > > >> > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > inflict
> > > > > > >> > > > > > > > > > > > > > > > > > > > > headaches
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > on
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > users of Flatten,
> I
> > > > think
> > > > > > >> we're
> > > > > > >> > > going
> > > > > > >> > > > > to
> > > > > > >> > > > > > > have
> > > > > > >> > > > > > > > > to
> > > > > > >> > > > > > > > > > > > think
> > > > > > >> > > > > > > > > > > > > > > about
> > > > > > >> > > > > > > > > > > > > > > > > > > > conflicts
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > between dotted
> > > notation
> > > > > and
> > > > > > >> > > > non-nested
> > > > > > >> > > > > > > fields
> > > > > > >> > > > > > > > > > whose
> > > > > > >> > > > > > > > > > > > > names
> > > > > > >> > > > > > > > > > > > > > > > > contain
> > > > > > >> > > > > > > > > > > > > > > > > > > > > dots. I
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > don't think this
> is
> > > > > actually
> > > > > > >> > such a
> > > > > > >> > > > bad
> > > > > > >> > > > > > > > thing,
> > > > > > >> > > > > > > > > > > > though.
> > > > > > >> > > > > > > > > > > > > I
> > > > > > >> > > > > > > > > > > > > > > > agree
> > > > > > >> > > > > > > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > dotted
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > notation is
> > intuitive
> > > > and
> > > > > > >> pretty
> > > > > > >> > > > > > > commonplace
> > > > > > >> > > > > > > > > (in
> > > > > > >> > > > > > > > > > > > tools
> > > > > > >> > > > > > > > > > > > > > like
> > > > > > >> > > > > > > > > > > > > > > > jq,
> > > > > > >> > > > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > example), so I'd
> > like
> > > it
> > > > > if
> > > > > > we
> > > > > > >> > > could
> > > > > > >> > > > > > stick
> > > > > > >> > > > > > > to
> > > > > > >> > > > > > > > > it.
> > > > > > >> > > > > > > > > > > > What
> > > > > > >> > > > > > > > > > > > > > > about
> > > > > > >> > > > > > > > > > > > > > > > > > > > > introducing
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > escape syntax,
> > using a
> > > > > > >> backslash?
> > > > > > >> > > > That
> > > > > > >> > > > > > way,
> > > > > > >> > > > > > > > > users
> > > > > > >> > > > > > > > > > > > could
> > > > > > >> > > > > > > > > > > > > > > > > > > disambiguate
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > between
> "this.field"
> > > > > (which
> > > > > > >> would
> > > > > > >> > > > refer
> > > > > > >> > > > > > to
> > > > > > >> > > > > > > > the
> > > > > > >> > > > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > field
> > > > > > >> > > > > > > > > > > > > > > > > > "field"
> > > > > > >> > > > > > > > > > > > > > > > > > > > > under
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > the top-level
> "this"
> > > > > field),
> > > > > > >> and
> > > > > > >> > > > > > > > "this\.field"
> > > > > > >> > > > > > > > > > > (which
> > > > > > >> > > > > > > > > > > > > > would
> > > > > > >> > > > > > > > > > > > > > > > > refer
> > > > > > >> > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > field named
> > > > "this.field").
> > > > > > >> Like
> > > > > > >> > > with
> > > > > > >> > > > > most
> > > > > > >> > > > > > > > > > languages
> > > > > > >> > > > > > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > > use
> > > > > > >> > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > backslash
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > for escape
> > sequences,
> > > it
> > > > > > could
> > > > > > >> > also
> > > > > > >> > > > be
> > > > > > >> > > > > > used
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > > escape
> > > > > > >> > > > > > > > > > > > > > > itself,
> > > > > > >> > > > > > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > event
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > that a field name
> > > > > contains a
> > > > > > >> > > > > backslash. I
> > > > > > >> > > > > > > > think
> > > > > > >> > > > > > > > > > > this
> > > > > > >> > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > more
> > > > > > >> > > > > > > > > > > > > > > > > > > > intuitive
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > simpler than,
> e.g.,
> > > > > adding a
> > > > > > >> new
> > > > > > >> > > > config
> > > > > > >> > > > > > > > > property
> > > > > > >> > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > toggle
> > > > > > >> > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > delimiter
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > be used when
> parsing
> > > > > nested
> > > > > > >> field
> > > > > > >> > > > > > > references.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > I like this
> approach.
> > > > Adding
> > > > > > to
> > > > > > >> the
> > > > > > >> > > > KIP.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 8. I don't think
> we
> > > can
> > > > > > >> > > > unconditionally
> > > > > > >> > > > > > > turn
> > > > > > >> > > > > > > > > this
> > > > > > >> > > > > > > > > > > > > feature
> > > > > > >> > > > > > > > > > > > > > > on.
> > > > > > >> > > > > > > > > > > > > > > > > The
> > > > > > >> > > > > > > > > > > > > > > > > > > > risk
> > > > > > >> > > > > > > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > breaking existing
> > > > > pipelines
> > > > > > >> > > > (especially
> > > > > > >> > > > > > > ones
> > > > > > >> > > > > > > > > that
> > > > > > >> > > > > > > > > > > > > > involve,
> > > > > > >> > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > > > > example, a
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > combination of the
> > > > Flatten
> > > > > > and
> > > > > > >> > Cast
> > > > > > >> > > > > SMTs)
> > > > > > >> > > > > > > is
> > > > > > >> > > > > > > > > > pretty
> > > > > > >> > > > > > > > > > > > > > high. I
> > > > > > >> > > > > > > > > > > > > > > > > think
> > > > > > >> > > > > > > > > > > > > > > > > > > > this
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > should be an
> opt-in
> > > > > feature,
> > > > > > >> at
> > > > > > >> > > least
> > > > > > >> > > > > > until
> > > > > > >> > > > > > > > the
> > > > > > >> > > > > > > > > > > next
> > > > > > >> > > > > > > > > > > > > > major
> > > > > > >> > > > > > > > > > > > > > > > > > release.
> > > > > > >> > > > > > > > > > > > > > > > > > > > One
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > way
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > we could
> accomplish
> > > this
> > > > > is
> > > > > > by
> > > > > > >> > > > > > introducing
> > > > > > >> > > > > > > a
> > > > > > >> > > > > > > > > new
> > > > > > >> > > > > > > > > > > > > > > > "field.style"
> > > > > > >> > > > > > > > > > > > > > > > > > > (name
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > obviously subject
> to
> > > > > change)
> > > > > > >> > > property
> > > > > > >> > > > > > with
> > > > > > >> > > > > > > > > values
> > > > > > >> > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > "plain"
> > > > > > >> > > > > > > > > > > > > > > > > > > > (default)
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > "nested". If set
> to
> > > > > "plain"
> > > > > > >> then
> > > > > > >> > > the
> > > > > > >> > > > > > > current
> > > > > > >> > > > > > > > > > > > non-nested
> > > > > > >> > > > > > > > > > > > > > > > > behavior
> > > > > > >> > > > > > > > > > > > > > > > > > is
> > > > > > >> > > > > > > > > > > > > > > > > > > > > used,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > and if set to
> > > "nested",
> > > > > then
> > > > > > >> the
> > > > > > >> > > > > proposed
> > > > > > >> > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > behavior
> > > > > > >> > > > > > > > > > > > > > > is.
> > > > > > >> > > > > > > > > > > > > > > > > We
> > > > > > >> > > > > > > > > > > > > > > > > > > can
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > consider updating
> > the
> > > > > > default
> > > > > > >> > value
> > > > > > >> > > > to
> > > > > > >> > > > > > > > "nested"
> > > > > > >> > > > > > > > > > in
> > > > > > >> > > > > > > > > > > a
> > > > > > >> > > > > > > > > > > > > > future
> > > > > > >> > > > > > > > > > > > > > > > > major
> > > > > > >> > > > > > > > > > > > > > > > > > > > > release
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > (or even codify
> that
> > > > plan
> > > > > in
> > > > > > >> this
> > > > > > >> > > > KIP,
> > > > > > >> > > > > if
> > > > > > >> > > > > > > > > there's
> > > > > > >> > > > > > > > > > > > > enough
> > > > > > >> > > > > > > > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > > > > > > > for
> > > > > > >> > > > > > > > > > > > > > > > > > > > > it).
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > This would also
> > leave
> > > > the
> > > > > > door
> > > > > > >> > open
> > > > > > >> > > > for
> > > > > > >> > > > > > > > adding
> > > > > > >> > > > > > > > > > > > > recursive
> > > > > > >> > > > > > > > > > > > > > > > > support
> > > > > > >> > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > SMTs
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > in
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > the future by
> > adding a
> > > > > > >> permitted
> > > > > > >> > > > value
> > > > > > >> > > > > of
> > > > > > >> > > > > > > > > > > > "recursive".
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > 9. One of the
> linked
> > > > > tickets
> > > > > > >> in
> > > > > > >> > the
> > > > > > >> > > > > > > > > "Motivation"
> > > > > > >> > > > > > > > > > > > > section,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > https://issues.apache.org/jira/browse/KAFKA-10640
> > > > ,
> > > > > > >> > > > > > > > > > > > has
> > > > > > >> > > > > > > > > > > > > > an
> > > > > > >> > > > > > > > > > > > > > > > open
> > > > > > >> > > > > > > > > > > > > > > > > > PR
> > > > > > >> > > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > KIP
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > that propose
> adding
> > > > > > recursive
> > > > > > >> > > support
> > > > > > >> > > > > to
> > > > > > >> > > > > > > some
> > > > > > >> > > > > > > > > > SMTs.
> > > > > > >> > > > > > > > > > > > > Have
> > > > > > >> > > > > > > > > > > > > > > you
> > > > > > >> > > > > > > > > > > > > > > > > > > > considered
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > this type of
> > > > functionality
> > > > > > for
> > > > > > >> > your
> > > > > > >> > > > > KIP?
> > > > > > >> > > > > > Or
> > > > > > >> > > > > > > > is
> > > > > > >> > > > > > > > > > your
> > > > > > >> > > > > > > > > > > > aim
> > > > > > >> > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > stick
> > > > > > >> > > > > > > > > > > > > > > > > > > > solely
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > nested field
> > support?
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > I like the
> > `field.style`
> > > > > > >> > > configuration
> > > > > > >> > > > > flag
> > > > > > >> > > > > > > > > > approach.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Thanks for pointing
> > out
> > > > the
> > > > > > >> > > `recursive`
> > > > > > >> > > > > > > > approach.
> > > > > > >> > > > > > > > > > > Will
> > > > > > >> > > > > > > > > > > > > add
> > > > > > >> > > > > > > > > > > > > > > > > `nested`
> > > > > > >> > > > > > > > > > > > > > > > > > > at
> > > > > > >> > > > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > moment, let's check
> > the
> > > > > demand
> > > > > > >> for
> > > > > > >> > > > > > > `recursive`
> > > > > > >> > > > > > > > to
> > > > > > >> > > > > > > > > > > > > consider
> > > > > > >> > > > > > > > > > > > > > it
> > > > > > >> > > > > > > > > > > > > > > > as
> > > > > > >> > > > > > > > > > > > > > > > > > part
> > > > > > >> > > > > > > > > > > > > > > > > > > > of
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > this or another KIP.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > I have added the
> > > following
> > > > > on
> > > > > > >> the
> > > > > > >> > > KIP:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > ```
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > Future KIPs could
> > extend
> > > > > this
> > > > > > >> > support
> > > > > > >> > > > > for:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > - Recursive
> notation:
> > > > name a
> > > > > > >> field
> > > > > > >> > > and
> > > > > > >> > > > > > apply
> > > > > > >> > > > > > > it
> > > > > > >> > > > > > > > > to
> > > > > > >> > > > > > > > > > > all
> > > > > > >> > > > > > > > > > > > > > fields
> > > > > > >> > > > > > > > > > > > > > > > > > across
> > > > > > >> > > > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > schema matching that
> > > name.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > - Access to arrays:
> > > Adding
> > > > > > `[]`
> > > > > > >> > > > notation
> > > > > > >> > > > > to
> > > > > > >> > > > > > > > > > represent
> > > > > > >> > > > > > > > > > > > > > access
> > > > > > >> > > > > > > > > > > > > > > to
> > > > > > >> > > > > > > > > > > > > > > > > > > arrays
> > > > > > >> > > > > > > > > > > > > > > > > > > > > and
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > applying SMTs to
> > fields
> > > > > within
> > > > > > >> an
> > > > > > >> > > > array.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > ```
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Cheers,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > Chris
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > On Tue, Feb 8,
> 2022
> > at
> > > > > 1:23
> > > > > > PM
> > > > > > >> > > Jorge
> > > > > > >> > > > > > > Esteban
> > > > > > >> > > > > > > > > > > Quilcate
> > > > > > >> > > > > > > > > > > > > > > Otoya <
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > quilcate.jo...@gmail.com>
> > > > > > >> wrote:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Hi Dev team,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > I'd like to
> start
> > a
> > > > new
> > > > > > >> > > discussion
> > > > > > >> > > > > > thread
> > > > > > >> > > > > > > > on
> > > > > > >> > > > > > > > > > > Kafka
> > > > > > >> > > > > > > > > > > > > > > Connect
> > > > > > >> > > > > > > > > > > > > > > > > > > KIP-821:
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-821%3A+Connect+Transforms+support+for+nested+structures
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > This KIP is
> aimed
> > to
> > > > > > include
> > > > > > >> > > > support
> > > > > > >> > > > > > for
> > > > > > >> > > > > > > > > nested
> > > > > > >> > > > > > > > > > > > > > > structures
> > > > > > >> > > > > > > > > > > > > > > > on
> > > > > > >> > > > > > > > > > > > > > > > > > the
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > existing
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > SMTs — where
> this
> > > make
> > > > > > >> sense.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Looking forward
> to
> > > > your
> > > > > > >> > feedback.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Regards,
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > Jorge.
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > > >
> > > > > > >> > > > > > > > > > > >
> > > > > > >> > > > > > > > > > >
> > > > > > >> > > > > > > > > >
> > > > > > >> > > > > > > > >
> > > > > > >> > > > > > > >
> > > > > > >> > > > > > >
> > > > > > >> > > > > >
> > > > > > >> > > > >
> > > > > > >> > > >
> > > > > > >> > >
> > > > > > >> >
> > > > > > >>
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to