You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@tajo.apache.org by hyoungjun kim <ba...@gmail.com> on 2014/05/14 12:42:41 UTC

Review Request 21432: TAJO-825: Datetime type refactoring.

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/
-----------------------------------------------------------

Review request for Tajo.


Bugs: TAJO-825
    https://issues.apache.org/jira/browse/TAJO-825


Repository: tajo


Description
-------

Currently Tajo uses Joda time library for Datetime related features.
I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
{code}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1582);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 14);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
Chronology julianChrono = JulianChronology.getInstance();
DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);

System.out.println("Java Calendar  :" + df.format(cal.getTime()));
System.out.println("ISO Calendar   : " + defaultCalDate);
System.out.println("Julian Calendar: " + julianCalDate);

System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());

System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
{code}

{noformat}
Java Calendar  :1582-10-24 16:49:35
ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
ISO Calendar's    dayOfWeek: 4
Julian Calendar's dayOfWeek: 7
ISO Calendar's    getYearOfCentury: 15
Julian Calendar's getYearOfCentury: 16
{noformat}


Diffs
-----

  tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
  tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
  tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
  tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
  tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java dfbe600 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
  tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
  tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
  tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
  tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 

Diff: https://reviews.apache.org/r/21432/diff/


Testing
-------

mvn clean install; and tested on local cluster


Thanks,

hyoungjun kim


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.

> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java, line 83
> > <https://reviews.apache.org/r/21432/diff/1/?file=581370#file581370line83>
> >
> >     TajoConf will be created for every call of getCurrentTimeZone(). How about change to receive TajoConf as a function argument?

getCurrentTimeZone() is static method and CURRENT_TIMEZONE static field. TajoConf will be created at first time in the case of CURRENT_TIMEZONE is null.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java, line 83
> > <https://reviews.apache.org/r/21432/diff/1/?file=581370#file581370line83>
> >
> >     TajoConf will be created for every call of getCurrentTimeZone(). How about change to receive TajoConf as a function parameter?

getCurrentTimeZone() is static method and CURRENT_TIMEZONE static field. TajoConf will be created at first time in the case of CURRENT_TIMEZONE is null.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java, line 44
> > <https://reviews.apache.org/r/21432/diff/1/?file=581371#file581371line44>
> >
> >     The TimeMeta instance is create very frequently. How about to keep an instance of TimeMeta in DateDatum?

I also regarded about that. But the TimeMeta has many fields and needed more memory in the case HashAggregation or memory-based sort operation. You know Tajo's GC status not good in this operation.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java, line 291
> > <https://reviews.apache.org/r/21432/diff/1/?file=581371#file581371line291>
> >
> >     This is a Java 1.7 syntax, and can incur a compilation error for 1.6 compiler.

I will fix.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java, line 270
> > <https://reviews.apache.org/r/21432/diff/1/?file=581372#file581372line270>
> >
> >     TimeMeta seems to be useless.

I will fix.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java, line 207
> > <https://reviews.apache.org/r/21432/diff/1/?file=581374#file581374line207>
> >
> >     Float8 may be casted to Int8 instead of int4.

Sorry, I don't know what you mean.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java, line 232
> > <https://reviews.apache.org/r/21432/diff/1/?file=581374#file581374line232>
> >
> >     Float8 may be casted to Int8 instead of int4.

Sorry, I don't know what you mean.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java, line 221
> > <https://reviews.apache.org/r/21432/diff/1/?file=581377#file581377line221>
> >
> >     Do you have any reasons of using int4 instead of int8?

There is no particular reason. Int4 is enough for day.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java, line 246
> > <https://reviews.apache.org/r/21432/diff/1/?file=581377#file581377line246>
> >
> >     Do you have any reasons of using int4 instead of int8?

There is no particular reason. Int4 is enough for day.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java, line 64
> > <https://reviews.apache.org/r/21432/diff/1/?file=581379#file581379line64>
> >
> >     TimeMeta is used very frequently. How about keep its instance   in TimeDatum?

I also regarded about that. But the TimeMeta has many fields and needed more memory in the case HashAggregation or memory-based sort operation. You know Tajo's GC status not good in this operation.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java, line 91
> > <https://reviews.apache.org/r/21432/diff/1/?file=581380#file581380line91>
> >
> >     TimeMeta is used very frequently. How about keep its instance   in TimeDatum?

I also regarded about that. But the TimeMeta has many fields and needed more memory in the case HashAggregation or memory-based sort operation. You know Tajo's GC status not good in this operation.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java, line 42
> > <https://reviews.apache.org/r/21432/diff/1/?file=581382#file581382line42>
> >
> >     Please remove the commented out line.

I'll remove.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java, line 24
> > <https://reviews.apache.org/r/21432/diff/1/?file=581387#file581387line24>
> >
> >     Would you add a description of fsecs?

Yes, I'll.


- hyoungjun


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43196
-----------------------------------------------------------


On May 14, 2014, 10:42 a.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 14, 2014, 10:42 a.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java dfbe600 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.

> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java, line 207
> > <https://reviews.apache.org/r/21432/diff/1/?file=581374#file581374line207>
> >
> >     Float8 may be casted to Int8 instead of int4.
> 
> hyoungjun kim wrote:
>     Sorry, I don't know what you mean.

TimeMeta's plusDays() method requires int type for day.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java, line 232
> > <https://reviews.apache.org/r/21432/diff/1/?file=581374#file581374line232>
> >
> >     Float8 may be casted to Int8 instead of int4.
> 
> hyoungjun kim wrote:
>     Sorry, I don't know what you mean.

TimeMeta's plusDays() method requires int type for day.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java, line 221
> > <https://reviews.apache.org/r/21432/diff/1/?file=581377#file581377line221>
> >
> >     Do you have any reasons of using int4 instead of int8?
> 
> hyoungjun kim wrote:
>     There is no particular reason. Int4 is enough for day.

TimeMeta's plusDays() method requires int type for day.


> On May 16, 2014, 6:15 a.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java, line 246
> > <https://reviews.apache.org/r/21432/diff/1/?file=581377#file581377line246>
> >
> >     Do you have any reasons of using int4 instead of int8?
> 
> hyoungjun kim wrote:
>     There is no particular reason. Int4 is enough for day.

TimeMeta's plusDays() method requires int type for day.


- hyoungjun


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43196
-----------------------------------------------------------


On May 14, 2014, 10:42 a.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 14, 2014, 10:42 a.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java dfbe600 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by Jihoon Son <ji...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43196
-----------------------------------------------------------


Hyoungjun, thanks for your great contribution!

The proposed refactoring is very interesting and looks awesome!!
I left some comments.

Thanks!


tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
<https://reviews.apache.org/r/21432/#comment77269>

    TajoConf will be created for every call of getCurrentTimeZone(). How about change to receive TajoConf as a function argument?



tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
<https://reviews.apache.org/r/21432/#comment77270>

    TajoConf will be created for every call of getCurrentTimeZone(). How about change to receive TajoConf as a function parameter?



tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
<https://reviews.apache.org/r/21432/#comment77271>

    The TimeMeta instance is create very frequently. How about to keep an instance of TimeMeta in DateDatum?



tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
<https://reviews.apache.org/r/21432/#comment77272>

    This is a Java 1.7 syntax, and can incur a compilation error for 1.6 compiler.



tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
<https://reviews.apache.org/r/21432/#comment77275>

    TimeMeta seems to be useless.



tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
<https://reviews.apache.org/r/21432/#comment77277>

    Float8 may be casted to Int8 instead of int4.



tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
<https://reviews.apache.org/r/21432/#comment77278>

    Float8 may be casted to Int8 instead of int4.



tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
<https://reviews.apache.org/r/21432/#comment77279>

    Do you have any reasons of using int4 instead of int8?



tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
<https://reviews.apache.org/r/21432/#comment77280>

    Do you have any reasons of using int4 instead of int8?



tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
<https://reviews.apache.org/r/21432/#comment77281>

    TimeMeta is used very frequently. How about keep its instance   in TimeDatum?



tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
<https://reviews.apache.org/r/21432/#comment77282>

    TimeMeta is used very frequently. How about keep its instance   in TimeDatum?



tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
<https://reviews.apache.org/r/21432/#comment77283>

    Please remove the commented out line.



tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java
<https://reviews.apache.org/r/21432/#comment77284>

    Would you add a description of fsecs?


- Jihoon Son


On May 14, 2014, 7:42 p.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 14, 2014, 7:42 p.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java dfbe600 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.

> On May 21, 2014, 12:22 p.m., Jihoon Son wrote:
> > tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java, line 329
> > <https://reviews.apache.org/r/21432/diff/2/?file=586482#file586482line329>
> >
> >     The default value of timezone doesn't seem to be proper.

Sorry I missed that. I'll revert.


- hyoungjun


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43612
-----------------------------------------------------------


On May 21, 2014, 11:24 a.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 21, 2014, 11:24 a.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by Jihoon Son <ji...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43612
-----------------------------------------------------------

Ship it!


+1
Thanks for your great work!
I left a trivial comment.


tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java
<https://reviews.apache.org/r/21432/#comment77892>

    The default value of timezone doesn't seem to be proper.


- Jihoon Son


On May 21, 2014, 8:24 p.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 21, 2014, 8:24 p.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by Jihoon Son <ji...@apache.org>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/#review43691
-----------------------------------------------------------

Ship it!


Thanks!
I'll commit the latest patch!

- Jihoon Son


On May 21, 2014, 9:47 p.m., hyoungjun kim wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21432/
> -----------------------------------------------------------
> 
> (Updated May 21, 2014, 9:47 p.m.)
> 
> 
> Review request for Tajo.
> 
> 
> Bugs: TAJO-825
>     https://issues.apache.org/jira/browse/TAJO-825
> 
> 
> Repository: tajo
> 
> 
> Description
> -------
> 
> Currently Tajo uses Joda time library for Datetime related features.
> I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
> So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
> {code}
> Calendar cal = Calendar.getInstance();
> cal.set(Calendar.YEAR, 1582);
> cal.set(Calendar.MONTH, 9);
> cal.set(Calendar.DAY_OF_MONTH, 14);
> 
> SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> 
> DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
> Chronology julianChrono = JulianChronology.getInstance();
> DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);
> 
> System.out.println("Java Calendar  :" + df.format(cal.getTime()));
> System.out.println("ISO Calendar   : " + defaultCalDate);
> System.out.println("Julian Calendar: " + julianCalDate);
> 
> System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
> System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());
> 
> System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
> System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
> {code}
> 
> {noformat}
> Java Calendar  :1582-10-24 16:49:35
> ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
> Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
> ISO Calendar's    dayOfWeek: 4
> Julian Calendar's dayOfWeek: 7
> ISO Calendar's    getYearOfCentury: 15
> Julian Calendar's getYearOfCentury: 16
> {noformat}
> 
> 
> Diffs
> -----
> 
>   tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
>   tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
>   tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
>   tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
>   tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
>   tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
>   tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
>   tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
>   tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
>   tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
>   tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
>   tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
>   tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
>   tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
>   tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
>   tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
>   tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
>   tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
>   tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
>   tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 
> 
> Diff: https://reviews.apache.org/r/21432/diff/
> 
> 
> Testing
> -------
> 
> mvn clean install; and tested on local cluster
> 
> 
> Thanks,
> 
> hyoungjun kim
> 
>


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/
-----------------------------------------------------------

(Updated May 21, 2014, 12:47 p.m.)


Review request for Tajo.


Changes
-------

Default timezone is resovled


Bugs: TAJO-825
    https://issues.apache.org/jira/browse/TAJO-825


Repository: tajo


Description
-------

Currently Tajo uses Joda time library for Datetime related features.
I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
{code}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1582);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 14);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
Chronology julianChrono = JulianChronology.getInstance();
DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);

System.out.println("Java Calendar  :" + df.format(cal.getTime()));
System.out.println("ISO Calendar   : " + defaultCalDate);
System.out.println("Julian Calendar: " + julianCalDate);

System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());

System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
{code}

{noformat}
Java Calendar  :1582-10-24 16:49:35
ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
ISO Calendar's    dayOfWeek: 4
Julian Calendar's dayOfWeek: 7
ISO Calendar's    getYearOfCentury: 15
Julian Calendar's getYearOfCentury: 16
{noformat}


Diffs (updated)
-----

  tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
  tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
  tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
  tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
  tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
  tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
  tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
  tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
  tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 

Diff: https://reviews.apache.org/r/21432/diff/


Testing
-------

mvn clean install; and tested on local cluster


Thanks,

hyoungjun kim


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/
-----------------------------------------------------------

(Updated May 21, 2014, 11:24 a.m.)


Review request for Tajo.


Changes
-------

I resolved all comments and upload new patch. Please review. Thanks


Bugs: TAJO-825
    https://issues.apache.org/jira/browse/TAJO-825


Repository: tajo


Description
-------

Currently Tajo uses Joda time library for Datetime related features.
I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
{code}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1582);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 14);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
Chronology julianChrono = JulianChronology.getInstance();
DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);

System.out.println("Java Calendar  :" + df.format(cal.getTime()));
System.out.println("ISO Calendar   : " + defaultCalDate);
System.out.println("Julian Calendar: " + julianCalDate);

System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());

System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
{code}

{noformat}
Java Calendar  :1582-10-24 16:49:35
ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
ISO Calendar's    dayOfWeek: 4
Julian Calendar's dayOfWeek: 7
ISO Calendar's    getYearOfCentury: 15
Julian Calendar's getYearOfCentury: 16
{noformat}


Diffs
-----

  tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
  tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
  tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
  tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
  tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
  tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
  tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
  tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
  tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 

Diff: https://reviews.apache.org/r/21432/diff/


Testing
-------

mvn clean install; and tested on local cluster


Thanks,

hyoungjun kim


Re: Review Request 21432: TAJO-825: Datetime type refactoring.

Posted by hyoungjun kim <ba...@gmail.com>.
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21432/
-----------------------------------------------------------

(Updated May 21, 2014, 11:24 a.m.)


Review request for Tajo.


Changes
-------

I resolved all comments and upload new patch. Please review. Thanks


Bugs: TAJO-825
    https://issues.apache.org/jira/browse/TAJO-825


Repository: tajo


Description
-------

Currently Tajo uses Joda time library for Datetime related features.
I tested Joda library with a next test code. It is difficult to express various time range with Joda library. 
So I propose that Tajo uses PostgreSQL style date/time features. I already migrated PostgreSQL's date/time code to Tajo. I will attach that patch soon.
{code}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1582);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 14);

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

DateTime defaultCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0);
Chronology julianChrono = JulianChronology.getInstance();
DateTime julianCalDate = new DateTime(1582, 10, 14, 10, 0, 0, 0, julianChrono);

System.out.println("Java Calendar  :" + df.format(cal.getTime()));
System.out.println("ISO Calendar   : " + defaultCalDate);
System.out.println("Julian Calendar: " + julianCalDate);

System.out.println("ISO Calendar's    dayOfWeek: " + defaultCalDate.getDayOfWeek());
System.out.println("Julian Calendar's dayOfWeek: " + julianCalDate.getDayOfWeek());

System.out.println("ISO Calendar's    getCenturyOfEra: " + defaultCalDate.getCenturyOfEra());
System.out.println("Julian Calendar's getCenturyOfEra: " + julianCalDate.getCenturyOfEra());
{code}

{noformat}
Java Calendar  :1582-10-24 16:49:35
ISO Calendar   : 1582-10-14T10:00:00.000+08:27:52
Julian Calendar: 1582-10-14T10:00:00.000+08:27:52
ISO Calendar's    dayOfWeek: 4
Julian Calendar's dayOfWeek: 7
ISO Calendar's    getYearOfCentury: 15
Julian Calendar's getYearOfCentury: 16
{noformat}


Diffs (updated)
-----

  tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java c0f6d36 
  tajo-client/src/main/java/org/apache/tajo/jdbc/TajoResultSetBase.java 4c307b3 
  tajo-common/src/main/java/org/apache/tajo/conf/TajoConf.java 6580525 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java ad68303 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 5ce36e5 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 35dca00 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b7d8cf4 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 731ccdc 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 5b60e9e 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 0367f9c 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b6904a9 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 70f62c2 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 879428b 
  tajo-common/src/main/java/org/apache/tajo/exception/ValueOutOfRangeException.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java 2a162a9 
  tajo-common/src/main/java/org/apache/tajo/util/TimeStampUtil.java aa1be8b 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeConstants.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeFormat.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/DateTimeUtil.java PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/datetime/TimeMeta.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 2123dc5 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 3bce64c 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java c405d68 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 6551077 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeFormat.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestDateTimeUtil.java PRE-CREATION 
  tajo-common/src/test/java/org/apache/tajo/util/TestTimeStampUtil.java 353063d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java a010a7d 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java 28e14fb 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java 3b46929 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimeStamp.java 6aaded0 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java 2a74ff5 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java ba6a020 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java 1cf6870 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java e74fd70 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/UniformRangePartition.java f6922ed 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java bab6ec7 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 4d18be3 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLDateTimeTypes.java c9c8dd4 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 6e35d3b 
  tajo-core/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java 507ef61 
  tajo-core/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java 2f5a755 
  tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java 41ee720 
  tajo-storage/src/test/java/org/apache/tajo/storage/TestStorages.java 0b764cc 

Diff: https://reviews.apache.org/r/21432/diff/


Testing
-------

mvn clean install; and tested on local cluster


Thanks,

hyoungjun kim