public Datum eval()

in tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java [50:115]


  public Datum eval(Tuple params) {
    Datum target = params.get(0);
    TimestampDatum timestamp = null;

    if(target instanceof NullDatum || params.get(1) instanceof NullDatum) {
      return NullDatum.get();
    }

    if(params.get(1) instanceof TimestampDatum) {
      timestamp = (TimestampDatum)(params.get(1));
    } else {
      return NullDatum.get();
    }

    if (extractor == null) {
      String extractType = target.asChars().toLowerCase();

      if (extractType.equals("century")) {
        extractor = new CenturyExtractorFromTimestamp();
      } else if (extractType.equals("day")) {
        extractor = new DayExtractorFromTimestamp();
      } else if (extractType.equals("decade")) {
        extractor = new DecadeExtractorFromTimestamp();
      } else if (extractType.equals("dow")) {
        extractor = new DowExtractorFromTimestamp();
      } else if (extractType.equals("doy")) {
        extractor = new DoyExtractorFromTimestamp();
      } else if (extractType.equals("epoch")) {
        extractor = new EpochExtractorFromTimestamp();
      } else if (extractType.equals("hour")) {
        extractor = new HourExtractorFromTimestamp();
      } else if (extractType.equals("isodow")) {
        extractor = new ISODowExtractorFromTimestamp();
      } else if (extractType.equals("isoyear")) {
        extractor = new ISOYearExtractorFromTimestamp();
      } else if (extractType.equals("microseconds")) {
        extractor = new MicrosecondsExtractorFromTimestamp();
      } else if (extractType.equals("millennium")) {
        extractor = new MillenniumExtractorFromTimestamp();
      } else if (extractType.equals("milliseconds")) {
        extractor = new MillisecondsExtractorFromTimestamp();
      } else if (extractType.equals("minute")) {
        extractor = new MinuteExtractorFromTimestamp();
      } else if (extractType.equals("month")) {
        extractor = new MonthExtractorFromTimestamp();
      } else if (extractType.equals("quarter")) {
        extractor = new QuarterExtractorFromTimestamp();
      } else if (extractType.equals("second")) {
        extractor = new SecondExtractorFromTimestamp();
      } else if (extractType.equals("timezone")) {
        extractor = new NullExtractorFromTimestamp();
      } else if (extractType.equals("timezone_hour")) {
        extractor = new NullExtractorFromTimestamp();
      } else if (extractType.equals("timezone_minute")) {
        extractor = new NullExtractorFromTimestamp();
      } else if (extractType.equals("week")) {
        extractor = new WeekExtractorFromTimestamp();
      } else if (extractType.equals("year")) {
        extractor = new YearExtractorFromTimestamp();
      } else {
        extractor = new NullExtractorFromTimestamp();
      }
    }

    return extractor.extract(timestamp);
  }