Actually I am hoping to contribute, but only if it doesn’t seem redundant.
That’s why I wanted to understand if the effort would even make sense. Was
EXPLODE not included by design? Would you recommend against adding it?

Soumyadeep.



On Sat, 3 Jun 2023 at 9:51 PM, Julian Hyde <jhyde.apa...@gmail.com> wrote:

> I can’t tell whether you are intending to contribute EXPLODE or do it on a
> private branch. You don’t make a case for what EXPLODE could do, so I
> presume the latter.
>
> UNNEST is a unique function. Its implementation is (unfortunately but
> necessarily) spread over many files. Copy-pasting it to make a new function
> seems like a bad idea, because you would be multiplying a mess. I don’t
> know what you’re trying to achieve but I would lean on the existing
> facilities (UDFs, table functions, adding syntactic sugar if necessary).
>
> Julian
>
> > On Jun 3, 2023, at 2:45 AM, Soumyadeep Mukhopadhyay <
> soumyamy...@gmail.com> wrote:
> >
> > Hello all,
> >
> > I was wondering if there's any virtue in creating an operator like UNNEST
> > by having a similar implementation like that of SqlUnnestOperator.
> > (SqlExplodeOperator maybe)
> >
> > The functionalities are close but there are nuances that I have not
> > discovered yet.
> >
> > My approach was kind of a hack :
> > Clone the class SqlUnnestOperator -> rename the SqlFunctionalOperator
> name
> > as "EXPLODE" and rename return builder.add("$unnest", SqlTypeName.ANY)
> > .nullable(true).build() in the inferReturnType to "$explode" -> then
> check
> > if call.getKind() within unparseCall is UNNEST -> if yes then SqlUtil.
> > unparseFunctionSyntax(SqlStdOperatorTable.EXPLODE, writer, call, false).
> > NOTE: I have also tried creating a new kind EXPLODE and then followed the
> > above step, both of them work.
> >
> > As Julian had pointed out about semantics and how everything within
> Calcite
> > should be in Calcite's dialect, I feel there could be antipatterns in my
> > approach.
> > Could any of you please point me to where I might be going wrong? How
> could
> > I make this more robust?
> >
> > (If any of you are wondering why I am doing this then this is what I want
> > to achieve - "SELECT * FROM UNNEST(ARRAY['1', '2'])" can be written as
> > "SELECT * FROM EXPLODE(ARRAY['1', '2'])" in an appropriate dialect, like
> > Spark for example)
> >
> > Thank you for your time!
> >
> > Best,
> > Soumyadeep.
>

Reply via email to