ueshin commented on code in PR #48503:
URL: https://github.com/apache/spark/pull/48503#discussion_r1803864754
##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/generators.scala:
##########
@@ -595,6 +649,85 @@ case class Inline(child: Expression) extends
UnaryExpression with CollectionGene
override protected def withNewChildInternal(newChild: Expression): Inline =
copy(child = newChild)
}
+trait InlineGeneratorBuilderBase extends GeneratorBuilder {
+ override def functionSignature: Option[FunctionSignature] =
+ Some(FunctionSignature(Seq(InputParameter("input"))))
+ override def buildGenerator(funcName: String, expressions: Seq[Expression]):
Generator = {
+ assert(expressions.size == 1)
+ Inline(expressions(0))
+ }
+}
+
+// scalastyle:off line.size.limit line.contains.tab
+@ExpressionDescription(
+ usage = "_FUNC_(expr) - Explodes an array of structs into a table. Uses
column names col1, col2, etc. by default unless specified otherwise.",
+ examples = """
+ Examples:
+ > SELECT _FUNC_(array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT * FROM _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ """,
+ since = "2.0.0",
+ group = "generator_funcs")
+// scalastyle:on line.size.limit line.contains.tab
+object InlineExpressionBuilder extends ExpressionBuilder {
+ override def functionSignature: Option[FunctionSignature] =
+ Some(FunctionSignature(Seq(InputParameter("input"))))
+
+ override def build(funcName: String, expressions: Seq[Expression]) :
Expression =
+ Inline(expressions(0))
+}
+
+// scalastyle:off line.size.limit line.contains.tab
+@ExpressionDescription(
+ usage = "_FUNC_(expr) - Explodes an array of structs into a table. Uses
column names col1, col2, etc. by default unless specified otherwise.",
+ examples = """
+ Examples:
+ > SELECT _FUNC_(array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT * FROM _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ """,
+ since = "2.0.0",
+ group = "generator_funcs")
+// scalastyle:on line.size.limit line.contains.tab
+object InlineGeneratorBuilder extends InlineGeneratorBuilderBase {
+ override def isOuter: Boolean = false
+}
+
+// scalastyle:off line.size.limit line.contains.tab
+@ExpressionDescription(
+ usage = "_FUNC_(expr) - Explodes an array of structs into a table. Uses
column names col1, col2, etc. by default unless specified otherwise.",
+ examples = """
+ Examples:
+ > SELECT _FUNC_(array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ > SELECT * FROM _FUNC_(input => array(struct(1, 'a'), struct(2, 'b')));
+ 1 a
+ 2 b
+ """,
+ since = "2.0.0",
Review Comment:
That's a good point. Now that we have separate definitions, we can maybe
mention each of them.
Do we have a way to mention about the updates? The named arguments should be
supported later than the definition, I guess?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]