frameless icon indicating copy to clipboard operation
frameless copied to clipboard

Add dayofyear, weekofyear, month, dayofmonth, minute, second, next_da…

Open Avasil opened this issue 6 years ago • 4 comments

…y Column functions

Related to #164

Avasil avatar Mar 12 '18 14:03 Avasil

@Avasil Sorry for taking so long to have a look at your PR... The diff looks pretty good at a quick glance, do you need help on anything to get the CI green before the review?

OlivierBlanvillain avatar Apr 09 '18 20:04 OlivierBlanvillain

Thanks and no problem @OlivierBlanvillain I was a bit busy lately too - I think I'm good, If I have any issues with java.sql.Date I'll let you guys know on gitter. :)

Avasil avatar Apr 09 '18 21:04 Avasil

@OlivierBlanvillain Hmm, now it fails the test related to #205:

  test("#205: comparing literals encoded using Injection") {
    import org.apache.spark.sql.catalyst.util.DateTimeUtils
    implicit val dateAsInt: Injection[java.sql.Date, Int] =
      Injection(DateTimeUtils.fromJavaDate, DateTimeUtils.toJavaDate)

    val today = new java.sql.Date(System.currentTimeMillis)
    val data = Vector(P(42, today))
    val tds = TypedDataset.create(data)

    tds.filter(tds('d) === today).collect().run()
  }
}

final case class P(i: Int, d: java.sql.Date)

I'ts failing with:

[info]   Cause: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 86, Column 6: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 86, Column 6: Assignment conversion not possible from type "java.lang.Integer" to type "java.sql.Date"
(...)
[info] /* 009 */   private java.sql.Date argValue;
(...)
[info] /* 086 */     final java.sql.Date value2 = resultIsNull ? null : org.apache.spark.sql.catalyst.util.DateTimeUtils.fromJavaDate(argValue);

Any tips how to debug stuff like that? I need to somehow figure out why Spark tries to generate code this way. :D

Avasil avatar Apr 12 '18 12:04 Avasil

@OlivierBlanvillain @imarios Any ideas how to proceed? :) IIRC many other column functions could use java.sql.Date encoder in similar way to next_day

Avasil avatar Sep 19 '18 07:09 Avasil