Github user kakaxi3019 commented on a diff in the pull request:
https://github.com/apache/trafodion/pull/1622#discussion_r200242748
--- Diff: core/sql/optimizer/SynthType.cpp ---
@@ -4470,15 +4489,31 @@ const NAType *Extract::synthesizeType()
else if (getExtractField() == REC_DATE_YEARWEEK_EXTRACT ||
getExtractField() == REC_DATE_YEARWEEK_D_EXTRACT)
prec = 6; // YEARMWEEK is yyyyww
+ else if (getExtractField() == REC_DATE_DECADE ||
+ getExtractField() == REC_DATE_DOY)
+ prec = 3;
+ else if (getExtractField() == REC_DATE_QUARTER ||
+ getExtractField() == REC_DATE_DOW)
+ prec = 1;
+ else if (getExtractField() == REC_DATE_EPOCH)
+ prec = 10;
else
prec = 2; // else max of 12, 31, 24, 59
if (getExtractField() == REC_DATE_SECOND) {
prec += dti.getFractionPrecision();
scale += dti.getFractionPrecision();
}
+ if (getExtractField() == REC_DATE_EPOCH)
+ {
+ prec += dti.getFractionPrecision();
+ scale += dti.getFractionPrecision();
+ }
+ NABoolean bNegValue = FALSE;
+ if ( getExtractField() >= REC_DATE_CENTURY && extractStartField <= REC_DATE_WOM
)
+ bNegValue = TRUE;
--- End diff --
Thanks Dave, there are some problems here.
options DECADE,QUARTER,EPOCH can be negative values
---
|