Repository: trafodion Updated Branches: refs/heads/master 4985dbd84 -> 60d717b7b
[TRAFODION-3043] Add missing binder check for DATE_PART function Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/5c6bf2a1 Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/5c6bf2a1 Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/5c6bf2a1 Branch: refs/heads/master Commit: 5c6bf2a14a9e748fa08ac5e905cb62c451257b16 Parents: 06d38d5 Author: Dave Birdsall <[email protected]> Authored: Thu Apr 26 00:19:59 2018 +0000 Committer: Dave Birdsall <[email protected]> Committed: Thu Apr 26 00:19:59 2018 +0000 ---------------------------------------------------------------------- core/sql/common/DTICommonType.cpp | 12 ++++++++++++ core/sql/optimizer/SynthType.cpp | 8 ++++++++ 2 files changed, 20 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafodion/blob/5c6bf2a1/core/sql/common/DTICommonType.cpp ---------------------------------------------------------------------- diff --git a/core/sql/common/DTICommonType.cpp b/core/sql/common/DTICommonType.cpp index 0374bcb..e8c11df 100644 --- a/core/sql/common/DTICommonType.cpp +++ b/core/sql/common/DTICommonType.cpp @@ -61,6 +61,18 @@ const char* DatetimeIntervalCommonType::getFieldName(rec_datetime_field field) return "SECOND"; case REC_DATE_FRACTION_MP: return "FRACTION"; + case REC_DATE_YEARQUARTER_EXTRACT: + return "YEARQUARTER"; + case REC_DATE_YEARMONTH_EXTRACT: + return "YEARMONTH"; + case REC_DATE_YEARWEEK_EXTRACT: + return "YEARWEEK"; + case REC_DATE_YEARQUARTER_D_EXTRACT: + return "YEARQUARTERD"; + case REC_DATE_YEARMONTH_D_EXTRACT: + return "YEARMONTHD"; + case REC_DATE_YEARWEEK_D_EXTRACT: + return "YEARWEEKD"; default: return NULL; } http://git-wip-us.apache.org/repos/asf/trafodion/blob/5c6bf2a1/core/sql/optimizer/SynthType.cpp ---------------------------------------------------------------------- diff --git a/core/sql/optimizer/SynthType.cpp b/core/sql/optimizer/SynthType.cpp index 39ebfe4..f993aa6 100644 --- a/core/sql/optimizer/SynthType.cpp +++ b/core/sql/optimizer/SynthType.cpp @@ -4429,6 +4429,14 @@ const NAType *Extract::synthesizeType() extractEndField = REC_DATE_DAY; // extracting week requires the day else extractEndField = REC_DATE_MONTH; // months/quarters need only the month + + if (type == NA_INTERVAL_TYPE) // YEARQUARTER etc. are not supported on intervals + { + *CmpCommon::diags() << DgSqlCode(-4037) + << DgString0(dti.getFieldName(getExtractField())) + << DgString1(dti.getTypeSQLname(TRUE /*terse*/)); + return NULL; + } } if (dti.getStartField() > extractStartField ||
