[jira] [Created] (FLINK-33990) Use default classloader in TaskManager when there are no user jars for job

2024-01-04 Thread Dan Zou (Jira)
Dan Zou created FLINK-33990:
---

 Summary: Use default classloader in TaskManager when there are no 
user jars for job
 Key: FLINK-33990
 URL: https://issues.apache.org/jira/browse/FLINK-33990
 Project: Flink
  Issue Type: Sub-task
Reporter: Dan Zou


TaskManager will create a new class loader for each flink job even when it has 
no user jars, which may cause metaspace increasing. Flink can use system 
classloader for the jobs without jars. A similar optimization has been made in 
JM, it make sense to optimize it in TM.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-33792) Generate the same code for the same logic

2023-12-10 Thread Dan Zou (Jira)
Dan Zou created FLINK-33792:
---

 Summary: Generate the same code for the same logic
 Key: FLINK-33792
 URL: https://issues.apache.org/jira/browse/FLINK-33792
 Project: Flink
  Issue Type: Sub-task
  Components: Table SQL / Planner
Reporter: Dan Zou


Generate the same code for the same logic, so that we may reuse the generated 
code between different jobs. This is the precondition forĀ FLINK-28691. The 
current issue is we use a self-incrementing counter in CodeGenUtils#newName, it 
means we could not get the same generated class between two queries even when 
they are exactly the same.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-33313) RexNodeExtractor fails to extract conditions with binary literal

2023-10-19 Thread Dan Zou (Jira)
Dan Zou created FLINK-33313:
---

 Summary: RexNodeExtractor fails to extract conditions with binary 
literal
 Key: FLINK-33313
 URL: https://issues.apache.org/jira/browse/FLINK-33313
 Project: Flink
  Issue Type: Bug
  Components: Table SQL / Planner
Reporter: Dan Zou


An exception will be thrown when we try to extract conditions with binary 
literal in RexNodeExtractor. Here is a test I add in `RexNodeExtractorTest` 
which could reproduce the case.
{code:java}
  @Test
  def testExtractConditionWithBinaryLiteral(): Unit = {
// blob
val t0 = rexBuilder.makeInputRef(allFieldTypes.get(5), 5)

// X'616263'
val t1 = rexBuilder.makeBinaryLiteral(ByteString.of("616263", 16))

// blob = X'616263'
val a = rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, t0, t1)

val relBuilder: RexBuilder = new FlinkRexBuilder(typeFactory)
val (convertedExpressions, unconvertedRexNodes) =
  extractConjunctiveConditions(a, -1, allFieldNames, relBuilder, 
functionCatalog)

val expected: Array[Expression] = Array($"blob" === Array[Byte](97, 98, 99))
assertExpressionArrayEquals(expected, convertedExpressions)
assertEquals(0, unconvertedRexNodes.length)
  }
{code}
And here is the exception stack:
{code:java}
org.apache.flink.table.api.ValidationException: Data type 'BINARY(3) NOT NULL' 
with conversion class '[B' does not support a value literal of class 
'org.apache.calcite.avatica.util.ByteString'.

at 
org.apache.flink.table.expressions.ValueLiteralExpression.validateValueDataType(ValueLiteralExpression.java:294)
at 
org.apache.flink.table.expressions.ValueLiteralExpression.(ValueLiteralExpression.java:79)
at 
org.apache.flink.table.expressions.ApiExpressionUtils.valueLiteral(ApiExpressionUtils.java:251)
at 
org.apache.flink.table.planner.plan.utils.RexNodeToExpressionConverter.visitLiteral(RexNodeExtractor.scala:503)
at 
org.apache.flink.table.planner.plan.utils.RexNodeToExpressionConverter.visitLiteral(RexNodeExtractor.scala:393)
at org.apache.calcite.rex.RexLiteral.accept(RexLiteral.java:1217)
at 
org.apache.flink.table.planner.plan.utils.RexNodeToExpressionConverter.$anonfun$visitCall$3(RexNodeExtractor.scala:509)
at 
scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
at scala.collection.Iterator.foreach(Iterator.scala:937)
at scala.collection.Iterator.foreach$(Iterator.scala:937)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
at scala.collection.IterableLike.foreach(IterableLike.scala:70)
at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike.map(TraversableLike.scala:233)
at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
at scala.collection.AbstractTraversable.map(Traversable.scala:104)
at 
org.apache.flink.table.planner.plan.utils.RexNodeToExpressionConverter.visitCall(RexNodeExtractor.scala:509)
at 
org.apache.flink.table.planner.plan.utils.RexNodeToExpressionConverter.visitCall(RexNodeExtractor.scala:393)
at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)
at 
org.apache.flink.table.planner.plan.utils.RexNodeExtractor$.$anonfun$extractConjunctiveConditions$2(RexNodeExtractor.scala:158)
at scala.collection.Iterator.foreach(Iterator.scala:937)
at scala.collection.Iterator.foreach$(Iterator.scala:937)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
at scala.collection.IterableLike.foreach(IterableLike.scala:70)
at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at 
org.apache.flink.table.planner.plan.utils.RexNodeExtractor$.extractConjunctiveConditions(RexNodeExtractor.scala:157)
at 
org.apache.flink.table.planner.plan.utils.RexNodeExtractor$.extractConjunctiveConditions(RexNodeExtractor.scala:119)
at 
org.apache.flink.table.planner.plan.utils.RexNodeExtractorTest.extractConjunctiveConditions(RexNodeExtractorTest.scala:785)
at 
org.apache.flink.table.planner.plan.utils.RexNodeExtractorTest.testExtractConditionWithBinaryLiteral(RexNodeExtractorTest.scala:160)
{code}
IMO, we should cast `ByteString` to `byte[]` in 
RexNodeToExpressionConverter#visitLiteral



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-33267) Support PreparedStatement in JDBC Driver

2023-10-12 Thread Dan Zou (Jira)
Dan Zou created FLINK-33267:
---

 Summary: Support PreparedStatement in JDBC Driver
 Key: FLINK-33267
 URL: https://issues.apache.org/jira/browse/FLINK-33267
 Project: Flink
  Issue Type: New Feature
Reporter: Dan Zou


A PreparedStatement is used to execute parameterized SQL queries. It would be 
helpful to implement PreparedStatement in JDBC Driver.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-33266) Support plan cache for SQL jobs

2023-10-12 Thread Dan Zou (Jira)
Dan Zou created FLINK-33266:
---

 Summary: Support plan cache for SQL jobs
 Key: FLINK-33266
 URL: https://issues.apache.org/jira/browse/FLINK-33266
 Project: Flink
  Issue Type: Sub-task
Reporter: Dan Zou


In OLAP scenarios, running a single query typically cost hundreds of 
milliseconds or a few seconds, of which it takes about tens of milliseconds to 
parse, validate, optimize, and translate it to Flink transformations. Adding 
cache to cache the transformations corresponding to queries is meaningful for 
scenarios where certain queries are often executed repeatedly.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)