Source:
<code>private Expr convertDatumToExpr(TajoDataTypes.Type type, Datum datum) { Expr value = null; DateValue dateValue; TimeValue timeValue; switch (type) { case NULL_TYPE: value = new NullLiteral(); break; case BOOLEAN: <START> value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Boolean); <END> break; case INT1: case INT2: case INT4: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Integer); break; case INT8: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Large_Integer); break; case FLOAT4: case FLOAT8: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Float); break; case TEXT: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.String); break; case DATE: DateDatum dateDatum = (DateDatum) datum; dateValue = new DateValue(""+dateDatum.getYear(), ""+dateDatum.getMonthOfYear(), ""+dateDatum.getDayOfMonth()); value = new DateLiteral(dateValue); break; case TIMESTAMP: TimestampDatum timestampDatum = (TimestampDatum) datum; dateValue = new DateValue(""+timestampDatum.getYear(), ""+timestampDatum.getMonthOfYear(), ""+timestampDatum.getDayOfMonth()); timeValue = new TimeValue(""+timestampDatum.getHourOfDay() , ""+timestampDatum.getMinuteOfHour(), ""+timestampDatum.getSecondOfMinute()); value = new TimestampLiteral(dateValue, timeValue); break; case TIME: TimeDatum timeDatum = (TimeDatum) datum; timeValue = new TimeValue(""+timeDatum.getHourOfDay() , ""+timeDatum.getMinuteOfHour(), ""+timeDatum.getSecondOfMinute()); value = new TimeLiteral(timeValue); break; default: throw new RuntimeException("Unsupported type: " + type.name()); } return value; }</code><technical_language>cases for BOOLEAN, ... TEXT simplified a proper LiteralValue type</technical_language>

Target:
private Expr convertDatumToExpr(TajoDataTypes.Type type, Datum datum) { Expr value = null; DateValue dateValue; TimeValue timeValue; switch (type) { case NULL_TYPE: value = new NullLiteral(); break; case BOOLEAN: value = new BooleanLiteral(datum.asBool()); break; case INT1: case INT2: case INT4: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Integer); break; case INT8: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Large_Integer); break; case FLOAT4: case FLOAT8: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.Unsigned_Float); break; case TEXT: value = new LiteralValue(datum.asChars(), LiteralValue.LiteralType.String); break; case DATE: DateDatum dateDatum = (DateDatum) datum; dateValue = new DateValue(""+dateDatum.getYear(), ""+dateDatum.getMonthOfYear(), ""+dateDatum.getDayOfMonth()); value = new DateLiteral(dateValue); break; case TIMESTAMP: TimestampDatum timestampDatum = (TimestampDatum) datum; dateValue = new DateValue(""+timestampDatum.getYear(), ""+timestampDatum.getMonthOfYear(), ""+timestampDatum.getDayOfMonth()); timeValue = new TimeValue(""+timestampDatum.getHourOfDay() , ""+timestampDatum.getMinuteOfHour(), ""+timestampDatum.getSecondOfMinute()); value = new TimestampLiteral(dateValue, timeValue); break; case TIME: TimeDatum timeDatum = (TimeDatum) datum; timeValue = new TimeValue(""+timeDatum.getHourOfDay() , ""+timeDatum.getMinuteOfHour(), ""+timeDatum.getSecondOfMinute()); value = new TimeLiteral(timeValue); break; default: throw new RuntimeException(new UnsupportedException(type.name())); } return value; }